From 9aa9725c0814e81b91b3931d69b3f950b2f3b13f Mon Sep 17 00:00:00 2001 From: masesdevelopers <94312179+masesdevelopers@users.noreply.github.com> Date: Thu, 19 Dec 2024 12:23:50 +0000 Subject: [PATCH] Update documentation after commit ad63bc1dd0252ea7af4a90c6c2e90d79dccd1ccf --- ...Test.Reflection.DefaultFormatProvider.html | 4 +- .../ClrTest.Reflection.IFormatProvider.html | 4 +- docs/api/ClrTest.Reflection.IILProvider.html | 4 +- ...ClrTest.Reflection.IILStringCollector.html | 4 +- .../api/ClrTest.Reflection.ILInstruction.html | 4 +- ...rTest.Reflection.ILInstructionVisitor.html | 4 +- docs/api/ClrTest.Reflection.ILReader.html | 4 +- .../ClrTest.Reflection.ITokenResolver.html | 4 +- ....Reflection.InlineBrTargetInstruction.html | 4 +- ...est.Reflection.InlineFieldInstruction.html | 4 +- ...lrTest.Reflection.InlineI8Instruction.html | 4 +- ...ClrTest.Reflection.InlineIInstruction.html | 4 +- ...st.Reflection.InlineMethodInstruction.html | 4 +- ...Test.Reflection.InlineNoneInstruction.html | 4 +- ...ClrTest.Reflection.InlineRInstruction.html | 4 +- ...rTest.Reflection.InlineSigInstruction.html | 4 +- ...st.Reflection.InlineStringInstruction.html | 4 +- ...st.Reflection.InlineSwitchInstruction.html | 4 +- ...rTest.Reflection.InlineTokInstruction.html | 4 +- ...Test.Reflection.InlineTypeInstruction.html | 4 +- ...rTest.Reflection.InlineVarInstruction.html | 4 +- ...rTest.Reflection.MethodBaseILProvider.html | 4 +- ...t.Reflection.ModuleScopeTokenResolver.html | 4 +- ...st.Reflection.RawILStringToTextWriter.html | 4 +- ...ClrTest.Reflection.RawILStringVisitor.html | 4 +- ...flection.ReadableILStringToTextWriter.html | 4 +- ...st.Reflection.ReadableILStringVisitor.html | 4 +- ...ection.ShortInlineBrTargetInstruction.html | 4 +- ...st.Reflection.ShortInlineIInstruction.html | 4 +- ...st.Reflection.ShortInlineRInstruction.html | 4 +- ....Reflection.ShortInlineVarInstruction.html | 4 +- docs/api/ClrTest.Reflection.html | 4 +- ...MASES.JCOReflectorEngine.AssemblyData.html | 4 +- ...eflectorEngine.AssemblyDataCollection.html | 4 +- ...ES.JCOReflectorEngine.CommonEventArgs.html | 4 +- ...OReflectorEngine.DocsBuilderEventArgs.html | 4 +- ...ReflectorEngine.EndOperationEventArgs.html | 4 +- ...JCOReflectorEngine.ErrorReportingType.html | 6 +- ...eflectorEngine.FolderBuilderEventArgs.html | 4 +- ...COReflectorEngine.JARBuilderEventArgs.html | 4 +- .../MASES.JCOReflectorEngine.JDKVersion.html | 4 +- ...OReflectorEngine.JavaBuilderEventArgs.html | 4 +- ...COReflectorEngine.JobManager.CmdParam.html | 4 +- .../MASES.JCOReflectorEngine.JobManager.html | 4 +- .../MASES.JCOReflectorEngine.JobTypes.html | 4 +- .../MASES.JCOReflectorEngine.LogLevel.html | 4 +- ...COReflectorEngine.POMBuilderEventArgs.html | 4 +- ...SES.JCOReflectorEngine.POMStagingType.html | 4 +- .../api/MASES.JCOReflectorEngine.POMType.html | 4 +- ...JCOReflectorEngine.ReflectorEventArgs.html | 4 +- ...eflectorEngine.appendToConsoleHandler.html | 4 +- docs/api/MASES.JCOReflectorEngine.html | 4 +- docs/api/MASES.JCOReflectorGUI.App.html | 4 +- ...eflectorGUI.AssemblyCollectionControl.html | 4 +- ...UI.MainWindow.appendToConsoleDelegate.html | 8 +- .../api/MASES.JCOReflectorGUI.MainWindow.html | 4 +- docs/api/MASES.JCOReflectorGUI.html | 4 +- docs/api/index.html | 4 +- docs/api/toc.html | 2 +- docs/api/toc.json | 2 +- docs/articles/intro.html | 4 +- docs/articles/toc.html | 2 +- docs/index.html | 4 +- docs/index.json | 2 +- docs/javadoc/index.html | 4 +- docs/net8.0 | 2 +- .../architecture-I3QFYML2-NK53GYGD.min.js | 2 + ...architecture-I3QFYML2-NK53GYGD.min.js.map} | 0 ...chitectureDiagram-AYX4OTIS-UEH2Z7UQ.min.js | 37 +++ ...ectureDiagram-AYX4OTIS-UEH2Z7UQ.min.js.map | 7 + .../blockDiagram-9f4a6865-KQGFBXS7.min.js | 119 -------- .../blockDiagram-9f4a6865-KQGFBXS7.min.js.map | 7 - .../blockDiagram-XN6IQ5JY-VK3M7PUD.min.js | 122 +++++++++ .../blockDiagram-XN6IQ5JY-VK3M7PUD.min.js.map | 7 + .../public/c4Diagram-GPMAACGM-P3DMZBSW.min.js | 11 + .../c4Diagram-GPMAACGM-P3DMZBSW.min.js.map | 7 + .../public/c4Diagram-ae766693-CZAYTAZR.min.js | 11 - .../c4Diagram-ae766693-CZAYTAZR.min.js.map | 7 - docs/public/chunk-24EG6CQZ.min.js | 67 +++++ docs/public/chunk-24EG6CQZ.min.js.map | 7 + docs/public/chunk-2TAJJIOM.min.js | 221 +++++++++++++++ docs/public/chunk-2TAJJIOM.min.js.map | 7 + docs/public/chunk-2YMHYP32.min.js | 2 + docs/public/chunk-2YMHYP32.min.js.map | 7 + docs/public/chunk-3Z74ZUXG.min.js | 2 + docs/public/chunk-3Z74ZUXG.min.js.map | 7 + docs/public/chunk-45RMNOPF.min.js | 2 + docs/public/chunk-45RMNOPF.min.js.map | 7 + docs/public/chunk-53EALYMI.min.js | 2 + docs/public/chunk-53EALYMI.min.js.map | 7 + docs/public/chunk-5FWMXAFW.min.js | 2 - docs/public/chunk-5FWMXAFW.min.js.map | 7 - docs/public/chunk-5KKNARB2.min.js | 2 + docs/public/chunk-5KKNARB2.min.js.map | 7 + docs/public/chunk-7JZIB2XU.min.js | 5 + docs/public/chunk-7JZIB2XU.min.js.map | 7 + docs/public/chunk-B5WF4DA4.min.js | 2 + docs/public/chunk-B5WF4DA4.min.js.map | 7 + docs/public/chunk-CA32PY7O.min.js | 11 - docs/public/chunk-CA32PY7O.min.js.map | 7 - docs/public/chunk-CIWIECNU.min.js | 2 + docs/public/chunk-CIWIECNU.min.js.map | 7 + docs/public/chunk-CM5D5KZN.min.js | 2 + docs/public/chunk-CM5D5KZN.min.js.map | 7 + docs/public/chunk-CXRPJJJE.min.js | 2 + docs/public/chunk-CXRPJJJE.min.js.map | 7 + docs/public/chunk-DBPRPEV6.min.js | 2 + docs/public/chunk-DBPRPEV6.min.js.map | 7 + docs/public/chunk-DFMVIMQJ.min.js | 4 + docs/public/chunk-DFMVIMQJ.min.js.map | 7 + ...-NRE4YRK7.min.js => chunk-DTUU2GN4.min.js} | 4 +- ...7.min.js.map => chunk-DTUU2GN4.min.js.map} | 0 docs/public/chunk-DXUQFVLL.min.js | 42 +++ docs/public/chunk-DXUQFVLL.min.js.map | 7 + docs/public/chunk-HOCACIQT.min.js | 2 + docs/public/chunk-HOCACIQT.min.js.map | 7 + docs/public/chunk-IQQ46AC6.min.js | 2 + docs/public/chunk-IQQ46AC6.min.js.map | 7 + docs/public/chunk-K2MRC2FE.min.js | 15 - docs/public/chunk-K2MRC2FE.min.js.map | 7 - docs/public/chunk-K4EHOM77.min.js | 208 -------------- docs/public/chunk-K4EHOM77.min.js.map | 7 - docs/public/chunk-K7PO6CNQ.min.js | 2 + docs/public/chunk-K7PO6CNQ.min.js.map | 7 + docs/public/chunk-KF4CENUX.min.js | 3 + docs/public/chunk-KF4CENUX.min.js.map | 7 + docs/public/chunk-LDPOAEOH.min.js | 16 ++ docs/public/chunk-LDPOAEOH.min.js.map | 7 + docs/public/chunk-LUX5WYVM.min.js | 117 -------- docs/public/chunk-LUX5WYVM.min.js.map | 7 - docs/public/chunk-LXB37CFX.min.js | 8 - docs/public/chunk-LXB37CFX.min.js.map | 7 - docs/public/chunk-M7PQX5EB.min.js | 2 - docs/public/chunk-M7PQX5EB.min.js.map | 7 - docs/public/chunk-MJXJ7UGT.min.js | 2 + docs/public/chunk-MJXJ7UGT.min.js.map | 7 + docs/public/chunk-N4EFGQ5G.min.js | 5 - docs/public/chunk-N4EFGQ5G.min.js.map | 7 - docs/public/chunk-NRRWWJ3P.min.js | 2 + docs/public/chunk-NRRWWJ3P.min.js.map | 7 + docs/public/chunk-OSRY5VT3.min.js | 2 + ...E.min.js.map => chunk-OSRY5VT3.min.js.map} | 0 docs/public/chunk-P2C2SEUI.min.js | 165 +++++++++++ docs/public/chunk-P2C2SEUI.min.js.map | 7 + docs/public/chunk-PYBRKFQJ.min.js | 2 + docs/public/chunk-PYBRKFQJ.min.js.map | 7 + docs/public/chunk-QRBMAIWT.min.js | 161 ----------- docs/public/chunk-QRBMAIWT.min.js.map | 7 - docs/public/chunk-R7DHUQMU.min.js | 2 + docs/public/chunk-R7DHUQMU.min.js.map | 7 + docs/public/chunk-RNO6SWHZ.min.js | 2 - docs/public/chunk-RNO6SWHZ.min.js.map | 7 - docs/public/chunk-TERFBH2B.min.js | 126 +++++++++ docs/public/chunk-TERFBH2B.min.js.map | 7 + docs/public/chunk-TOQ6ACLX.min.js | 2 + docs/public/chunk-TOQ6ACLX.min.js.map | 7 + docs/public/chunk-U4DUTLYF.min.js | 15 + docs/public/chunk-U4DUTLYF.min.js.map | 7 + docs/public/chunk-UOD6J27N.min.js | 65 +++++ docs/public/chunk-UOD6J27N.min.js.map | 7 + docs/public/chunk-WMZJ2DJX.min.js | 25 ++ docs/public/chunk-WMZJ2DJX.min.js.map | 7 + docs/public/chunk-XBNRW4G3.min.js | 2 + docs/public/chunk-XBNRW4G3.min.js.map | 7 + docs/public/chunk-XUHMPXWX.min.js | 2 - docs/public/chunk-YEACHCAA.min.js | 101 ------- docs/public/chunk-YEACHCAA.min.js.map | 7 - docs/public/chunk-ZU5APUIQ.min.js | 2 + docs/public/chunk-ZU5APUIQ.min.js.map | 7 + .../classDiagram-FEGYTUDG-YCLVHNZU.min.js | 2 + .../classDiagram-FEGYTUDG-YCLVHNZU.min.js.map | 7 + .../classDiagram-fb54d2a0-HROX7LLG.min.js | 3 - .../classDiagram-fb54d2a0-HROX7LLG.min.js.map | 7 - .../classDiagram-v2-R65JCUOM-VFGJ2XXK.min.js | 2 + ...assDiagram-v2-R65JCUOM-VFGJ2XXK.min.js.map | 7 + .../classDiagram-v2-a2b738ad-P3OHMUUZ.min.js | 3 - ...assDiagram-v2-a2b738ad-P3OHMUUZ.min.js.map | 7 - docs/public/dagre-SWNTG5WE-7BA3SWK2.min.js | 5 + .../public/dagre-SWNTG5WE-7BA3SWK2.min.js.map | 7 + docs/public/diagram-NZMEDLQF-NYTRB6HN.min.js | 25 ++ .../diagram-NZMEDLQF-NYTRB6HN.min.js.map | 7 + docs/public/docfx.min.css | 2 +- docs/public/docfx.min.css.map | 4 +- docs/public/docfx.min.js | 76 +++--- docs/public/docfx.min.js.map | 6 +- .../public/erDiagram-09d1c15f-DTEA6AXO.min.js | 52 ---- .../erDiagram-09d1c15f-DTEA6AXO.min.js.map | 7 - .../public/erDiagram-WO52GFNT-Y4NFVIDE.min.js | 52 ++++ .../erDiagram-WO52GFNT-Y4NFVIDE.min.js.map | 7 + docs/public/es-4I4X6RME.min.js | 10 + docs/public/es-4I4X6RME.min.js.map | 7 + docs/public/es-NKDSMAKG.min.js | 10 - docs/public/es-NKDSMAKG.min.js.map | 7 - .../flowDiagram-TSWR6T2D-H32UQL2W.min.js | 161 +++++++++++ .../flowDiagram-TSWR6T2D-H32UQL2W.min.js.map | 7 + .../flowDiagram-b222e15a-KHGBC5KH.min.js | 5 - .../flowDiagram-b222e15a-KHGBC5KH.min.js.map | 7 - .../flowDiagram-v2-13329dc7-7HQDDRUE.min.js | 2 - ...lowDiagram-v2-13329dc7-7HQDDRUE.min.js.map | 7 - ...rt-elk-definition-ae0efee6-MAQF265M.min.js | 140 ---------- ...lk-definition-ae0efee6-MAQF265M.min.js.map | 7 - .../ganttDiagram-FAOCOTIY-GFLLTKXL.min.js | 258 ++++++++++++++++++ .../ganttDiagram-FAOCOTIY-GFLLTKXL.min.js.map | 7 + .../ganttDiagram-b62c793e-AG7E44IT.min.js | 258 ------------------ .../ganttDiagram-b62c793e-AG7E44IT.min.js.map | 7 - docs/public/gitGraph-YCYPL57B-C4NBXIBD.min.js | 2 + .../gitGraph-YCYPL57B-C4NBXIBD.min.js.map | 7 + .../gitGraphDiagram-5C7YHVU6-2F4DKEGL.min.js | 66 +++++ ...tGraphDiagram-5C7YHVU6-2F4DKEGL.min.js.map | 7 + .../gitGraphDiagram-942e62fe-MKYST3PD.min.js | 71 ----- ...tGraphDiagram-942e62fe-MKYST3PD.min.js.map | 7 - docs/public/info-46DW6VJ7-MWRO75OW.min.js | 2 + docs/public/info-46DW6VJ7-MWRO75OW.min.js.map | 7 + .../infoDiagram-94cd232f-QDJEABPW.min.js | 8 - .../infoDiagram-94cd232f-QDJEABPW.min.js.map | 7 - .../infoDiagram-P5D6MX3V-EFUDKNDH.min.js | 3 + .../infoDiagram-P5D6MX3V-EFUDKNDH.min.js.map | 7 + .../journeyDiagram-6625b456-5PROY5YP.min.js | 140 ---------- ...ourneyDiagram-6625b456-5PROY5YP.min.js.map | 7 - .../journeyDiagram-UIGPPNLY-FB6FUBJH.min.js | 140 ++++++++++ ...ourneyDiagram-UIGPPNLY-FB6FUBJH.min.js.map | 7 + ...kanban-definition-KMT3NSR2-K4PM5M4E.min.js | 89 ++++++ ...an-definition-KMT3NSR2-K4PM5M4E.min.js.map | 7 + ...-F45OXAZ7.min.js => katex-NVDEX37K.min.js} | 8 +- ...7.min.js.map => katex-NVDEX37K.min.js.map} | 4 +- ...YYLL55L.min.js => lunr.ar-A6ZT2INA.min.js} | 4 +- ...min.js.map => lunr.ar-A6ZT2INA.min.js.map} | 0 ...BNGX3GR.min.js => lunr.da-WWM276CR.min.js} | 4 +- ...min.js.map => lunr.da-WWM276CR.min.js.map} | 0 ...7IL7F5Q.min.js => lunr.de-XXPRKDAY.min.js} | 4 +- ...min.js.map => lunr.de-XXPRKDAY.min.js.map} | 0 ...P4FUVNV.min.js => lunr.du-NO4L2LL3.min.js} | 4 +- ...min.js.map => lunr.du-NO4L2LL3.min.js.map} | 0 ...MPY4SDR.min.js => lunr.el-5ZSSJVMA.min.js} | 4 +- ...min.js.map => lunr.el-5ZSSJVMA.min.js.map} | 0 ...J3NV5ZH.min.js => lunr.es-ZH6Q76E6.min.js} | 4 +- ...min.js.map => lunr.es-ZH6Q76E6.min.js.map} | 0 ...GLGHFAM.min.js => lunr.fi-S7WJSBCP.min.js} | 4 +- ...min.js.map => lunr.fi-S7WJSBCP.min.js.map} | 0 ...WMI3F4I.min.js => lunr.fr-H2QNBELV.min.js} | 4 +- ...min.js.map => lunr.fr-H2QNBELV.min.js.map} | 0 ...ZUSRANM.min.js => lunr.he-TTLAK4MN.min.js} | 4 +- ...min.js.map => lunr.he-TTLAK4MN.min.js.map} | 0 ...KOIC2XP.min.js => lunr.hi-PWWMAGLU.min.js} | 4 +- ...min.js.map => lunr.hi-PWWMAGLU.min.js.map} | 0 ...PANPY4P.min.js => lunr.hu-DLG2DSVM.min.js} | 4 +- ...min.js.map => lunr.hu-DLG2DSVM.min.js.map} | 0 ...2P7YR63.min.js => lunr.hy-FFQJAR7M.min.js} | 4 +- ...min.js.map => lunr.hy-FFQJAR7M.min.js.map} | 0 ...N72ONT7.min.js => lunr.it-VQNLJLPR.min.js} | 4 +- ...min.js.map => lunr.it-VQNLJLPR.min.js.map} | 0 docs/public/lunr.ja-J6QHZSR2.min.js | 2 + docs/public/lunr.ja-J6QHZSR2.min.js.map | 7 + docs/public/lunr.ja-RG3AQVTE.min.js | 2 - docs/public/lunr.jp-M45D3XJE.min.js | 2 + ...min.js.map => lunr.jp-M45D3XJE.min.js.map} | 0 docs/public/lunr.jp-P5CLAZPO.min.js | 2 - ...Z3IOBMD.min.js => lunr.kn-ASLXFRTC.min.js} | 4 +- ...min.js.map => lunr.kn-ASLXFRTC.min.js.map} | 0 ...MG7MEQU.min.js => lunr.ko-RHF2BDE4.min.js} | 4 +- ...min.js.map => lunr.ko-RHF2BDE4.min.js.map} | 0 ...JLTQY4R.min.js => lunr.nl-2BITG354.min.js} | 4 +- ...min.js.map => lunr.nl-2BITG354.min.js.map} | 0 ...5T5VKQC.min.js => lunr.no-WPLSHWFO.min.js} | 4 +- ...min.js.map => lunr.no-WPLSHWFO.min.js.map} | 0 ...EDPJIZQ.min.js => lunr.pt-V2XEBELC.min.js} | 4 +- ...min.js.map => lunr.pt-V2XEBELC.min.js.map} | 0 ...WA7JY55.min.js => lunr.ro-O76266FJ.min.js} | 4 +- ...min.js.map => lunr.ro-O76266FJ.min.js.map} | 0 ...QVTAHVP.min.js => lunr.ru-G56UDXYH.min.js} | 4 +- ...min.js.map => lunr.ru-G56UDXYH.min.js.map} | 0 ...4RRHON7.min.js => lunr.sa-LD5PRAIS.min.js} | 4 +- ...min.js.map => lunr.sa-LD5PRAIS.min.js.map} | 0 ...CGNSHUK.min.js => lunr.sv-7VRY4UDB.min.js} | 4 +- ...min.js.map => lunr.sv-7VRY4UDB.min.js.map} | 0 ...O56CLDU.min.js => lunr.ta-OWB7AURB.min.js} | 4 +- ...min.js.map => lunr.ta-OWB7AURB.min.js.map} | 0 ...RZIMFIT.min.js => lunr.te-JGGL3BFP.min.js} | 4 +- ...min.js.map => lunr.te-JGGL3BFP.min.js.map} | 0 ...UK2AEUT.min.js => lunr.th-O4JBL3IY.min.js} | 4 +- ...min.js.map => lunr.th-O4JBL3IY.min.js.map} | 0 ...MGZGM7A.min.js => lunr.tr-WXUV733C.min.js} | 4 +- ...min.js.map => lunr.tr-WXUV733C.min.js.map} | 0 ...NO46JPR.min.js => lunr.vi-3U4A337N.min.js} | 4 +- ...min.js.map => lunr.vi-3U4A337N.min.js.map} | 0 docs/public/mermaid.core-RYVCAQML.min.js | 19 ++ docs/public/mermaid.core-RYVCAQML.min.js.map | 7 + docs/public/mermaid.core-SEZKZMNB.min.js | 2 - docs/public/mermaid.core-SEZKZMNB.min.js.map | 7 - ...indmap-definition-307c710a-X5KDYKIG.min.js | 118 -------- ...ap-definition-307c710a-X5KDYKIG.min.js.map | 7 - ...indmap-definition-R7LC4OIY-2USVTKSJ.min.js | 96 +++++++ ...ap-definition-R7LC4OIY-2USVTKSJ.min.js.map | 7 + docs/public/packet-W2GHVCYJ-73RTG6VT.min.js | 2 + .../packet-W2GHVCYJ-73RTG6VT.min.js.map | 7 + docs/public/pie-BEWT4RHE-6E5EOTAQ.min.js | 2 + docs/public/pie-BEWT4RHE-6E5EOTAQ.min.js.map | 7 + .../pieDiagram-BLWKPB35-RRRLPZVM.min.js | 31 +++ .../pieDiagram-BLWKPB35-RRRLPZVM.min.js.map | 7 + .../pieDiagram-bb1d19e5-S5GML3CT.min.js | 36 --- .../pieDiagram-bb1d19e5-S5GML3CT.min.js.map | 7 - .../quadrantDiagram-QXWEEFXS-PKSQMH6W.min.js | 8 + ...adrantDiagram-QXWEEFXS-PKSQMH6W.min.js.map | 7 + .../quadrantDiagram-c759a472-M63GQYLB.min.js | 8 - ...adrantDiagram-c759a472-M63GQYLB.min.js.map | 7 - ...equirementDiagram-87253d64-XJI5VOSH.min.js | 53 ---- ...rementDiagram-87253d64-XJI5VOSH.min.js.map | 7 - ...equirementDiagram-XAUNFCZY-5ZWIDLT6.min.js | 53 ++++ ...rementDiagram-XAUNFCZY-5ZWIDLT6.min.js.map | 7 + .../sankeyDiagram-707fac0f-3GVBJS6H.min.js | 9 - ...sankeyDiagram-707fac0f-3GVBJS6H.min.js.map | 7 - .../sankeyDiagram-LVV36NHA-T6DVYUKQ.min.js | 9 + ...sankeyDiagram-LVV36NHA-T6DVYUKQ.min.js.map | 7 + docs/public/search-worker.min.js | 4 +- .../sequenceDiagram-6894f283-AJU5ZNMQ.min.js | 123 --------- ...quenceDiagram-6894f283-AJU5ZNMQ.min.js.map | 7 - .../sequenceDiagram-D25TJ2OB-6R64PNA2.min.js | 123 +++++++++ ...quenceDiagram-D25TJ2OB-6R64PNA2.min.js.map | 7 + .../stateDiagram-5dee940d-56243UMQ.min.js | 2 - .../stateDiagram-5dee940d-56243UMQ.min.js.map | 7 - .../stateDiagram-GNSP7T6Y-QRHXVCK2.min.js | 2 + .../stateDiagram-GNSP7T6Y-QRHXVCK2.min.js.map | 7 + .../stateDiagram-v2-1992cada-ZUI7IUPQ.min.js | 2 - ...ateDiagram-v2-1992cada-ZUI7IUPQ.min.js.map | 7 - .../stateDiagram-v2-HP6YRVRG-XMVPP43U.min.js | 2 + ...ateDiagram-v2-HP6YRVRG-XMVPP43U.min.js.map | 7 + ...47.min.js => tex-svg-full-SL33OL2J.min.js} | 4 +- ...s.map => tex-svg-full-SL33OL2J.min.js.map} | 0 ...meline-definition-27KQCCZ3-MKUJTCR4.min.js | 62 +++++ ...ne-definition-27KQCCZ3-MKUJTCR4.min.js.map | 7 + ...meline-definition-bf702344-YJZ3MVX7.min.js | 62 ----- ...ne-definition-bf702344-YJZ3MVX7.min.js.map | 7 - .../xychartDiagram-MYLB5AYS-IFQ4BEB4.min.js | 8 + ...ychartDiagram-MYLB5AYS-IFQ4BEB4.min.js.map | 7 + .../xychartDiagram-f11f50a6-N45Z7OOP.min.js | 8 - ...ychartDiagram-f11f50a6-N45Z7OOP.min.js.map | 7 - docs/toc.html | 2 +- 337 files changed, 2888 insertions(+), 2369 deletions(-) create mode 100644 docs/public/architecture-I3QFYML2-NK53GYGD.min.js rename docs/public/{chunk-XUHMPXWX.min.js.map => architecture-I3QFYML2-NK53GYGD.min.js.map} (100%) create mode 100644 docs/public/architectureDiagram-AYX4OTIS-UEH2Z7UQ.min.js create mode 100644 docs/public/architectureDiagram-AYX4OTIS-UEH2Z7UQ.min.js.map delete mode 100644 docs/public/blockDiagram-9f4a6865-KQGFBXS7.min.js delete mode 100644 docs/public/blockDiagram-9f4a6865-KQGFBXS7.min.js.map create mode 100644 docs/public/blockDiagram-XN6IQ5JY-VK3M7PUD.min.js create mode 100644 docs/public/blockDiagram-XN6IQ5JY-VK3M7PUD.min.js.map create mode 100644 docs/public/c4Diagram-GPMAACGM-P3DMZBSW.min.js create mode 100644 docs/public/c4Diagram-GPMAACGM-P3DMZBSW.min.js.map delete mode 100644 docs/public/c4Diagram-ae766693-CZAYTAZR.min.js delete mode 100644 docs/public/c4Diagram-ae766693-CZAYTAZR.min.js.map create mode 100644 docs/public/chunk-24EG6CQZ.min.js create mode 100644 docs/public/chunk-24EG6CQZ.min.js.map create mode 100644 docs/public/chunk-2TAJJIOM.min.js create mode 100644 docs/public/chunk-2TAJJIOM.min.js.map create mode 100644 docs/public/chunk-2YMHYP32.min.js create mode 100644 docs/public/chunk-2YMHYP32.min.js.map create mode 100644 docs/public/chunk-3Z74ZUXG.min.js create mode 100644 docs/public/chunk-3Z74ZUXG.min.js.map create mode 100644 docs/public/chunk-45RMNOPF.min.js create mode 100644 docs/public/chunk-45RMNOPF.min.js.map create mode 100644 docs/public/chunk-53EALYMI.min.js create mode 100644 docs/public/chunk-53EALYMI.min.js.map delete mode 100644 docs/public/chunk-5FWMXAFW.min.js delete mode 100644 docs/public/chunk-5FWMXAFW.min.js.map create mode 100644 docs/public/chunk-5KKNARB2.min.js create mode 100644 docs/public/chunk-5KKNARB2.min.js.map create mode 100644 docs/public/chunk-7JZIB2XU.min.js create mode 100644 docs/public/chunk-7JZIB2XU.min.js.map create mode 100644 docs/public/chunk-B5WF4DA4.min.js create mode 100644 docs/public/chunk-B5WF4DA4.min.js.map delete mode 100644 docs/public/chunk-CA32PY7O.min.js delete mode 100644 docs/public/chunk-CA32PY7O.min.js.map create mode 100644 docs/public/chunk-CIWIECNU.min.js create mode 100644 docs/public/chunk-CIWIECNU.min.js.map create mode 100644 docs/public/chunk-CM5D5KZN.min.js create mode 100644 docs/public/chunk-CM5D5KZN.min.js.map create mode 100644 docs/public/chunk-CXRPJJJE.min.js create mode 100644 docs/public/chunk-CXRPJJJE.min.js.map create mode 100644 docs/public/chunk-DBPRPEV6.min.js create mode 100644 docs/public/chunk-DBPRPEV6.min.js.map create mode 100644 docs/public/chunk-DFMVIMQJ.min.js create mode 100644 docs/public/chunk-DFMVIMQJ.min.js.map rename docs/public/{chunk-NRE4YRK7.min.js => chunk-DTUU2GN4.min.js} (96%) rename docs/public/{chunk-NRE4YRK7.min.js.map => chunk-DTUU2GN4.min.js.map} (100%) create mode 100644 docs/public/chunk-DXUQFVLL.min.js create mode 100644 docs/public/chunk-DXUQFVLL.min.js.map create mode 100644 docs/public/chunk-HOCACIQT.min.js create mode 100644 docs/public/chunk-HOCACIQT.min.js.map create mode 100644 docs/public/chunk-IQQ46AC6.min.js create mode 100644 docs/public/chunk-IQQ46AC6.min.js.map delete mode 100644 docs/public/chunk-K2MRC2FE.min.js delete mode 100644 docs/public/chunk-K2MRC2FE.min.js.map delete mode 100644 docs/public/chunk-K4EHOM77.min.js delete mode 100644 docs/public/chunk-K4EHOM77.min.js.map create mode 100644 docs/public/chunk-K7PO6CNQ.min.js create mode 100644 docs/public/chunk-K7PO6CNQ.min.js.map create mode 100644 docs/public/chunk-KF4CENUX.min.js create mode 100644 docs/public/chunk-KF4CENUX.min.js.map create mode 100644 docs/public/chunk-LDPOAEOH.min.js create mode 100644 docs/public/chunk-LDPOAEOH.min.js.map delete mode 100644 docs/public/chunk-LUX5WYVM.min.js delete mode 100644 docs/public/chunk-LUX5WYVM.min.js.map delete mode 100644 docs/public/chunk-LXB37CFX.min.js delete mode 100644 docs/public/chunk-LXB37CFX.min.js.map delete mode 100644 docs/public/chunk-M7PQX5EB.min.js delete mode 100644 docs/public/chunk-M7PQX5EB.min.js.map create mode 100644 docs/public/chunk-MJXJ7UGT.min.js create mode 100644 docs/public/chunk-MJXJ7UGT.min.js.map delete mode 100644 docs/public/chunk-N4EFGQ5G.min.js delete mode 100644 docs/public/chunk-N4EFGQ5G.min.js.map create mode 100644 docs/public/chunk-NRRWWJ3P.min.js create mode 100644 docs/public/chunk-NRRWWJ3P.min.js.map create mode 100644 docs/public/chunk-OSRY5VT3.min.js rename docs/public/{lunr.ja-RG3AQVTE.min.js.map => chunk-OSRY5VT3.min.js.map} (100%) create mode 100644 docs/public/chunk-P2C2SEUI.min.js create mode 100644 docs/public/chunk-P2C2SEUI.min.js.map create mode 100644 docs/public/chunk-PYBRKFQJ.min.js create mode 100644 docs/public/chunk-PYBRKFQJ.min.js.map delete mode 100644 docs/public/chunk-QRBMAIWT.min.js delete mode 100644 docs/public/chunk-QRBMAIWT.min.js.map create mode 100644 docs/public/chunk-R7DHUQMU.min.js create mode 100644 docs/public/chunk-R7DHUQMU.min.js.map delete mode 100644 docs/public/chunk-RNO6SWHZ.min.js delete mode 100644 docs/public/chunk-RNO6SWHZ.min.js.map create mode 100644 docs/public/chunk-TERFBH2B.min.js create mode 100644 docs/public/chunk-TERFBH2B.min.js.map create mode 100644 docs/public/chunk-TOQ6ACLX.min.js create mode 100644 docs/public/chunk-TOQ6ACLX.min.js.map create mode 100644 docs/public/chunk-U4DUTLYF.min.js create mode 100644 docs/public/chunk-U4DUTLYF.min.js.map create mode 100644 docs/public/chunk-UOD6J27N.min.js create mode 100644 docs/public/chunk-UOD6J27N.min.js.map create mode 100644 docs/public/chunk-WMZJ2DJX.min.js create mode 100644 docs/public/chunk-WMZJ2DJX.min.js.map create mode 100644 docs/public/chunk-XBNRW4G3.min.js create mode 100644 docs/public/chunk-XBNRW4G3.min.js.map delete mode 100644 docs/public/chunk-XUHMPXWX.min.js delete mode 100644 docs/public/chunk-YEACHCAA.min.js delete mode 100644 docs/public/chunk-YEACHCAA.min.js.map create mode 100644 docs/public/chunk-ZU5APUIQ.min.js create mode 100644 docs/public/chunk-ZU5APUIQ.min.js.map create mode 100644 docs/public/classDiagram-FEGYTUDG-YCLVHNZU.min.js create mode 100644 docs/public/classDiagram-FEGYTUDG-YCLVHNZU.min.js.map delete mode 100644 docs/public/classDiagram-fb54d2a0-HROX7LLG.min.js delete mode 100644 docs/public/classDiagram-fb54d2a0-HROX7LLG.min.js.map create mode 100644 docs/public/classDiagram-v2-R65JCUOM-VFGJ2XXK.min.js create mode 100644 docs/public/classDiagram-v2-R65JCUOM-VFGJ2XXK.min.js.map delete mode 100644 docs/public/classDiagram-v2-a2b738ad-P3OHMUUZ.min.js delete mode 100644 docs/public/classDiagram-v2-a2b738ad-P3OHMUUZ.min.js.map create mode 100644 docs/public/dagre-SWNTG5WE-7BA3SWK2.min.js create mode 100644 docs/public/dagre-SWNTG5WE-7BA3SWK2.min.js.map create mode 100644 docs/public/diagram-NZMEDLQF-NYTRB6HN.min.js create mode 100644 docs/public/diagram-NZMEDLQF-NYTRB6HN.min.js.map delete mode 100644 docs/public/erDiagram-09d1c15f-DTEA6AXO.min.js delete mode 100644 docs/public/erDiagram-09d1c15f-DTEA6AXO.min.js.map create mode 100644 docs/public/erDiagram-WO52GFNT-Y4NFVIDE.min.js create mode 100644 docs/public/erDiagram-WO52GFNT-Y4NFVIDE.min.js.map create mode 100644 docs/public/es-4I4X6RME.min.js create mode 100644 docs/public/es-4I4X6RME.min.js.map delete mode 100644 docs/public/es-NKDSMAKG.min.js delete mode 100644 docs/public/es-NKDSMAKG.min.js.map create mode 100644 docs/public/flowDiagram-TSWR6T2D-H32UQL2W.min.js create mode 100644 docs/public/flowDiagram-TSWR6T2D-H32UQL2W.min.js.map delete mode 100644 docs/public/flowDiagram-b222e15a-KHGBC5KH.min.js delete mode 100644 docs/public/flowDiagram-b222e15a-KHGBC5KH.min.js.map delete mode 100644 docs/public/flowDiagram-v2-13329dc7-7HQDDRUE.min.js delete mode 100644 docs/public/flowDiagram-v2-13329dc7-7HQDDRUE.min.js.map delete mode 100644 docs/public/flowchart-elk-definition-ae0efee6-MAQF265M.min.js delete mode 100644 docs/public/flowchart-elk-definition-ae0efee6-MAQF265M.min.js.map create mode 100644 docs/public/ganttDiagram-FAOCOTIY-GFLLTKXL.min.js create mode 100644 docs/public/ganttDiagram-FAOCOTIY-GFLLTKXL.min.js.map delete mode 100644 docs/public/ganttDiagram-b62c793e-AG7E44IT.min.js delete mode 100644 docs/public/ganttDiagram-b62c793e-AG7E44IT.min.js.map create mode 100644 docs/public/gitGraph-YCYPL57B-C4NBXIBD.min.js create mode 100644 docs/public/gitGraph-YCYPL57B-C4NBXIBD.min.js.map create mode 100644 docs/public/gitGraphDiagram-5C7YHVU6-2F4DKEGL.min.js create mode 100644 docs/public/gitGraphDiagram-5C7YHVU6-2F4DKEGL.min.js.map delete mode 100644 docs/public/gitGraphDiagram-942e62fe-MKYST3PD.min.js delete mode 100644 docs/public/gitGraphDiagram-942e62fe-MKYST3PD.min.js.map create mode 100644 docs/public/info-46DW6VJ7-MWRO75OW.min.js create mode 100644 docs/public/info-46DW6VJ7-MWRO75OW.min.js.map delete mode 100644 docs/public/infoDiagram-94cd232f-QDJEABPW.min.js delete mode 100644 docs/public/infoDiagram-94cd232f-QDJEABPW.min.js.map create mode 100644 docs/public/infoDiagram-P5D6MX3V-EFUDKNDH.min.js create mode 100644 docs/public/infoDiagram-P5D6MX3V-EFUDKNDH.min.js.map delete mode 100644 docs/public/journeyDiagram-6625b456-5PROY5YP.min.js delete mode 100644 docs/public/journeyDiagram-6625b456-5PROY5YP.min.js.map create mode 100644 docs/public/journeyDiagram-UIGPPNLY-FB6FUBJH.min.js create mode 100644 docs/public/journeyDiagram-UIGPPNLY-FB6FUBJH.min.js.map create mode 100644 docs/public/kanban-definition-KMT3NSR2-K4PM5M4E.min.js create mode 100644 docs/public/kanban-definition-KMT3NSR2-K4PM5M4E.min.js.map rename docs/public/{katex-F45OXAZ7.min.js => katex-NVDEX37K.min.js} (99%) rename docs/public/{katex-F45OXAZ7.min.js.map => katex-NVDEX37K.min.js.map} (83%) rename docs/public/{lunr.ar-JYYLL55L.min.js => lunr.ar-A6ZT2INA.min.js} (99%) rename docs/public/{lunr.ar-JYYLL55L.min.js.map => lunr.ar-A6ZT2INA.min.js.map} (100%) rename docs/public/{lunr.da-ABNGX3GR.min.js => lunr.da-WWM276CR.min.js} (97%) rename docs/public/{lunr.da-ABNGX3GR.min.js.map => lunr.da-WWM276CR.min.js.map} (100%) rename docs/public/{lunr.de-N7IL7F5Q.min.js => lunr.de-XXPRKDAY.min.js} (98%) rename docs/public/{lunr.de-N7IL7F5Q.min.js.map => lunr.de-XXPRKDAY.min.js.map} (100%) rename docs/public/{lunr.du-4P4FUVNV.min.js => lunr.du-NO4L2LL3.min.js} (98%) rename docs/public/{lunr.du-4P4FUVNV.min.js.map => lunr.du-NO4L2LL3.min.js.map} (100%) rename docs/public/{lunr.el-XMPY4SDR.min.js => lunr.el-5ZSSJVMA.min.js} (99%) rename docs/public/{lunr.el-XMPY4SDR.min.js.map => lunr.el-5ZSSJVMA.min.js.map} (100%) rename docs/public/{lunr.es-QJ3NV5ZH.min.js => lunr.es-ZH6Q76E6.min.js} (99%) rename docs/public/{lunr.es-QJ3NV5ZH.min.js.map => lunr.es-ZH6Q76E6.min.js.map} (100%) rename docs/public/{lunr.fi-OGLGHFAM.min.js => lunr.fi-S7WJSBCP.min.js} (98%) rename docs/public/{lunr.fi-OGLGHFAM.min.js.map => lunr.fi-S7WJSBCP.min.js.map} (100%) rename docs/public/{lunr.fr-6WMI3F4I.min.js => lunr.fr-H2QNBELV.min.js} (98%) rename docs/public/{lunr.fr-6WMI3F4I.min.js.map => lunr.fr-H2QNBELV.min.js.map} (100%) rename docs/public/{lunr.he-EZUSRANM.min.js => lunr.he-TTLAK4MN.min.js} (98%) rename docs/public/{lunr.he-EZUSRANM.min.js.map => lunr.he-TTLAK4MN.min.js.map} (100%) rename docs/public/{lunr.hi-GKOIC2XP.min.js => lunr.hi-PWWMAGLU.min.js} (98%) rename docs/public/{lunr.hi-GKOIC2XP.min.js.map => lunr.hi-PWWMAGLU.min.js.map} (100%) rename docs/public/{lunr.hu-XPANPY4P.min.js => lunr.hu-DLG2DSVM.min.js} (98%) rename docs/public/{lunr.hu-XPANPY4P.min.js.map => lunr.hu-DLG2DSVM.min.js.map} (100%) rename docs/public/{lunr.hy-E2P7YR63.min.js => lunr.hy-FFQJAR7M.min.js} (95%) rename docs/public/{lunr.hy-E2P7YR63.min.js.map => lunr.hy-FFQJAR7M.min.js.map} (100%) rename docs/public/{lunr.it-RN72ONT7.min.js => lunr.it-VQNLJLPR.min.js} (99%) rename docs/public/{lunr.it-RN72ONT7.min.js.map => lunr.it-VQNLJLPR.min.js.map} (100%) create mode 100644 docs/public/lunr.ja-J6QHZSR2.min.js create mode 100644 docs/public/lunr.ja-J6QHZSR2.min.js.map delete mode 100644 docs/public/lunr.ja-RG3AQVTE.min.js create mode 100644 docs/public/lunr.jp-M45D3XJE.min.js rename docs/public/{lunr.jp-P5CLAZPO.min.js.map => lunr.jp-M45D3XJE.min.js.map} (100%) delete mode 100644 docs/public/lunr.jp-P5CLAZPO.min.js rename docs/public/{lunr.kn-5Z3IOBMD.min.js => lunr.kn-ASLXFRTC.min.js} (98%) rename docs/public/{lunr.kn-5Z3IOBMD.min.js.map => lunr.kn-ASLXFRTC.min.js.map} (100%) rename docs/public/{lunr.ko-XMG7MEQU.min.js => lunr.ko-RHF2BDE4.min.js} (99%) rename docs/public/{lunr.ko-XMG7MEQU.min.js.map => lunr.ko-RHF2BDE4.min.js.map} (100%) rename docs/public/{lunr.nl-XJLTQY4R.min.js => lunr.nl-2BITG354.min.js} (98%) rename docs/public/{lunr.nl-XJLTQY4R.min.js.map => lunr.nl-2BITG354.min.js.map} (100%) rename docs/public/{lunr.no-E5T5VKQC.min.js => lunr.no-WPLSHWFO.min.js} (97%) rename docs/public/{lunr.no-E5T5VKQC.min.js.map => lunr.no-WPLSHWFO.min.js.map} (100%) rename docs/public/{lunr.pt-KEDPJIZQ.min.js => lunr.pt-V2XEBELC.min.js} (98%) rename docs/public/{lunr.pt-KEDPJIZQ.min.js.map => lunr.pt-V2XEBELC.min.js.map} (100%) rename docs/public/{lunr.ro-WWA7JY55.min.js => lunr.ro-O76266FJ.min.js} (99%) rename docs/public/{lunr.ro-WWA7JY55.min.js.map => lunr.ro-O76266FJ.min.js.map} (100%) rename docs/public/{lunr.ru-NQVTAHVP.min.js => lunr.ru-G56UDXYH.min.js} (99%) rename docs/public/{lunr.ru-NQVTAHVP.min.js.map => lunr.ru-G56UDXYH.min.js.map} (100%) rename docs/public/{lunr.sa-R4RRHON7.min.js => lunr.sa-LD5PRAIS.min.js} (98%) rename docs/public/{lunr.sa-R4RRHON7.min.js.map => lunr.sa-LD5PRAIS.min.js.map} (100%) rename docs/public/{lunr.sv-GCGNSHUK.min.js => lunr.sv-7VRY4UDB.min.js} (97%) rename docs/public/{lunr.sv-GCGNSHUK.min.js.map => lunr.sv-7VRY4UDB.min.js.map} (100%) rename docs/public/{lunr.ta-KO56CLDU.min.js => lunr.ta-OWB7AURB.min.js} (97%) rename docs/public/{lunr.ta-KO56CLDU.min.js.map => lunr.ta-OWB7AURB.min.js.map} (100%) rename docs/public/{lunr.te-2RZIMFIT.min.js => lunr.te-JGGL3BFP.min.js} (97%) rename docs/public/{lunr.te-2RZIMFIT.min.js.map => lunr.te-JGGL3BFP.min.js.map} (100%) rename docs/public/{lunr.th-RUK2AEUT.min.js => lunr.th-O4JBL3IY.min.js} (92%) rename docs/public/{lunr.th-RUK2AEUT.min.js.map => lunr.th-O4JBL3IY.min.js.map} (100%) rename docs/public/{lunr.tr-2MGZGM7A.min.js => lunr.tr-WXUV733C.min.js} (99%) rename docs/public/{lunr.tr-2MGZGM7A.min.js.map => lunr.tr-WXUV733C.min.js.map} (100%) rename docs/public/{lunr.vi-QNO46JPR.min.js => lunr.vi-3U4A337N.min.js} (92%) rename docs/public/{lunr.vi-QNO46JPR.min.js.map => lunr.vi-3U4A337N.min.js.map} (100%) create mode 100644 docs/public/mermaid.core-RYVCAQML.min.js create mode 100644 docs/public/mermaid.core-RYVCAQML.min.js.map delete mode 100644 docs/public/mermaid.core-SEZKZMNB.min.js delete mode 100644 docs/public/mermaid.core-SEZKZMNB.min.js.map delete mode 100644 docs/public/mindmap-definition-307c710a-X5KDYKIG.min.js delete mode 100644 docs/public/mindmap-definition-307c710a-X5KDYKIG.min.js.map create mode 100644 docs/public/mindmap-definition-R7LC4OIY-2USVTKSJ.min.js create mode 100644 docs/public/mindmap-definition-R7LC4OIY-2USVTKSJ.min.js.map create mode 100644 docs/public/packet-W2GHVCYJ-73RTG6VT.min.js create mode 100644 docs/public/packet-W2GHVCYJ-73RTG6VT.min.js.map create mode 100644 docs/public/pie-BEWT4RHE-6E5EOTAQ.min.js create mode 100644 docs/public/pie-BEWT4RHE-6E5EOTAQ.min.js.map create mode 100644 docs/public/pieDiagram-BLWKPB35-RRRLPZVM.min.js create mode 100644 docs/public/pieDiagram-BLWKPB35-RRRLPZVM.min.js.map delete mode 100644 docs/public/pieDiagram-bb1d19e5-S5GML3CT.min.js delete mode 100644 docs/public/pieDiagram-bb1d19e5-S5GML3CT.min.js.map create mode 100644 docs/public/quadrantDiagram-QXWEEFXS-PKSQMH6W.min.js create mode 100644 docs/public/quadrantDiagram-QXWEEFXS-PKSQMH6W.min.js.map delete mode 100644 docs/public/quadrantDiagram-c759a472-M63GQYLB.min.js delete mode 100644 docs/public/quadrantDiagram-c759a472-M63GQYLB.min.js.map delete mode 100644 docs/public/requirementDiagram-87253d64-XJI5VOSH.min.js delete mode 100644 docs/public/requirementDiagram-87253d64-XJI5VOSH.min.js.map create mode 100644 docs/public/requirementDiagram-XAUNFCZY-5ZWIDLT6.min.js create mode 100644 docs/public/requirementDiagram-XAUNFCZY-5ZWIDLT6.min.js.map delete mode 100644 docs/public/sankeyDiagram-707fac0f-3GVBJS6H.min.js delete mode 100644 docs/public/sankeyDiagram-707fac0f-3GVBJS6H.min.js.map create mode 100644 docs/public/sankeyDiagram-LVV36NHA-T6DVYUKQ.min.js create mode 100644 docs/public/sankeyDiagram-LVV36NHA-T6DVYUKQ.min.js.map delete mode 100644 docs/public/sequenceDiagram-6894f283-AJU5ZNMQ.min.js delete mode 100644 docs/public/sequenceDiagram-6894f283-AJU5ZNMQ.min.js.map create mode 100644 docs/public/sequenceDiagram-D25TJ2OB-6R64PNA2.min.js create mode 100644 docs/public/sequenceDiagram-D25TJ2OB-6R64PNA2.min.js.map delete mode 100644 docs/public/stateDiagram-5dee940d-56243UMQ.min.js delete mode 100644 docs/public/stateDiagram-5dee940d-56243UMQ.min.js.map create mode 100644 docs/public/stateDiagram-GNSP7T6Y-QRHXVCK2.min.js create mode 100644 docs/public/stateDiagram-GNSP7T6Y-QRHXVCK2.min.js.map delete mode 100644 docs/public/stateDiagram-v2-1992cada-ZUI7IUPQ.min.js delete mode 100644 docs/public/stateDiagram-v2-1992cada-ZUI7IUPQ.min.js.map create mode 100644 docs/public/stateDiagram-v2-HP6YRVRG-XMVPP43U.min.js create mode 100644 docs/public/stateDiagram-v2-HP6YRVRG-XMVPP43U.min.js.map rename docs/public/{tex-svg-full-JPZ3Q247.min.js => tex-svg-full-SL33OL2J.min.js} (99%) rename docs/public/{tex-svg-full-JPZ3Q247.min.js.map => tex-svg-full-SL33OL2J.min.js.map} (100%) create mode 100644 docs/public/timeline-definition-27KQCCZ3-MKUJTCR4.min.js create mode 100644 docs/public/timeline-definition-27KQCCZ3-MKUJTCR4.min.js.map delete mode 100644 docs/public/timeline-definition-bf702344-YJZ3MVX7.min.js delete mode 100644 docs/public/timeline-definition-bf702344-YJZ3MVX7.min.js.map create mode 100644 docs/public/xychartDiagram-MYLB5AYS-IFQ4BEB4.min.js create mode 100644 docs/public/xychartDiagram-MYLB5AYS-IFQ4BEB4.min.js.map delete mode 100644 docs/public/xychartDiagram-f11f50a6-N45Z7OOP.min.js delete mode 100644 docs/public/xychartDiagram-f11f50a6-N45Z7OOP.min.js.map diff --git a/docs/api/ClrTest.Reflection.DefaultFormatProvider.html b/docs/api/ClrTest.Reflection.DefaultFormatProvider.html index ff6a65633dc..d1fe028585d 100644 --- a/docs/api/ClrTest.Reflection.DefaultFormatProvider.html +++ b/docs/api/ClrTest.Reflection.DefaultFormatProvider.html @@ -1,4 +1,4 @@ - +
@@ -54,7 +54,7 @@ diff --git a/docs/api/ClrTest.Reflection.IFormatProvider.html b/docs/api/ClrTest.Reflection.IFormatProvider.html index 297eed367d3..14f346011ab 100644 --- a/docs/api/ClrTest.Reflection.IFormatProvider.html +++ b/docs/api/ClrTest.Reflection.IFormatProvider.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/ClrTest.Reflection.IILProvider.html b/docs/api/ClrTest.Reflection.IILProvider.html index 7da2860d7f5..af18f93fc35 100644 --- a/docs/api/ClrTest.Reflection.IILProvider.html +++ b/docs/api/ClrTest.Reflection.IILProvider.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/ClrTest.Reflection.IILStringCollector.html b/docs/api/ClrTest.Reflection.IILStringCollector.html index cb811f4ba52..a02ac0d2cb7 100644 --- a/docs/api/ClrTest.Reflection.IILStringCollector.html +++ b/docs/api/ClrTest.Reflection.IILStringCollector.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/ClrTest.Reflection.ILInstruction.html b/docs/api/ClrTest.Reflection.ILInstruction.html index b6c2d2d402b..fbe412ab45f 100644 --- a/docs/api/ClrTest.Reflection.ILInstruction.html +++ b/docs/api/ClrTest.Reflection.ILInstruction.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/ClrTest.Reflection.ILInstructionVisitor.html b/docs/api/ClrTest.Reflection.ILInstructionVisitor.html index 5ad5d4dfcfd..3e20e0464c6 100644 --- a/docs/api/ClrTest.Reflection.ILInstructionVisitor.html +++ b/docs/api/ClrTest.Reflection.ILInstructionVisitor.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/ClrTest.Reflection.ILReader.html b/docs/api/ClrTest.Reflection.ILReader.html index a2f92d41b37..f6324d3245c 100644 --- a/docs/api/ClrTest.Reflection.ILReader.html +++ b/docs/api/ClrTest.Reflection.ILReader.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/ClrTest.Reflection.ITokenResolver.html b/docs/api/ClrTest.Reflection.ITokenResolver.html index f1a483d4220..fbacda8e6e8 100644 --- a/docs/api/ClrTest.Reflection.ITokenResolver.html +++ b/docs/api/ClrTest.Reflection.ITokenResolver.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/ClrTest.Reflection.InlineBrTargetInstruction.html b/docs/api/ClrTest.Reflection.InlineBrTargetInstruction.html index eacffbb8c2c..1415f402d0a 100644 --- a/docs/api/ClrTest.Reflection.InlineBrTargetInstruction.html +++ b/docs/api/ClrTest.Reflection.InlineBrTargetInstruction.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/ClrTest.Reflection.InlineFieldInstruction.html b/docs/api/ClrTest.Reflection.InlineFieldInstruction.html index 038bfce3f37..64cc160a649 100644 --- a/docs/api/ClrTest.Reflection.InlineFieldInstruction.html +++ b/docs/api/ClrTest.Reflection.InlineFieldInstruction.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/ClrTest.Reflection.InlineI8Instruction.html b/docs/api/ClrTest.Reflection.InlineI8Instruction.html index 15fcce05132..fa90f1056bf 100644 --- a/docs/api/ClrTest.Reflection.InlineI8Instruction.html +++ b/docs/api/ClrTest.Reflection.InlineI8Instruction.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/ClrTest.Reflection.InlineIInstruction.html b/docs/api/ClrTest.Reflection.InlineIInstruction.html index a0f8afa50d5..c39e3c104df 100644 --- a/docs/api/ClrTest.Reflection.InlineIInstruction.html +++ b/docs/api/ClrTest.Reflection.InlineIInstruction.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/ClrTest.Reflection.InlineMethodInstruction.html b/docs/api/ClrTest.Reflection.InlineMethodInstruction.html index ce2918f5456..6d7fac5f7e4 100644 --- a/docs/api/ClrTest.Reflection.InlineMethodInstruction.html +++ b/docs/api/ClrTest.Reflection.InlineMethodInstruction.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/ClrTest.Reflection.InlineNoneInstruction.html b/docs/api/ClrTest.Reflection.InlineNoneInstruction.html index 629547b9853..0e85bd7b6c9 100644 --- a/docs/api/ClrTest.Reflection.InlineNoneInstruction.html +++ b/docs/api/ClrTest.Reflection.InlineNoneInstruction.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/ClrTest.Reflection.InlineRInstruction.html b/docs/api/ClrTest.Reflection.InlineRInstruction.html index 869d9b2722f..f87f91b0230 100644 --- a/docs/api/ClrTest.Reflection.InlineRInstruction.html +++ b/docs/api/ClrTest.Reflection.InlineRInstruction.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/ClrTest.Reflection.InlineSigInstruction.html b/docs/api/ClrTest.Reflection.InlineSigInstruction.html index cf3c6076e3f..fd8ee5385d5 100644 --- a/docs/api/ClrTest.Reflection.InlineSigInstruction.html +++ b/docs/api/ClrTest.Reflection.InlineSigInstruction.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/ClrTest.Reflection.InlineStringInstruction.html b/docs/api/ClrTest.Reflection.InlineStringInstruction.html index 4297c1b0587..70f562fefe3 100644 --- a/docs/api/ClrTest.Reflection.InlineStringInstruction.html +++ b/docs/api/ClrTest.Reflection.InlineStringInstruction.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/ClrTest.Reflection.InlineSwitchInstruction.html b/docs/api/ClrTest.Reflection.InlineSwitchInstruction.html index 252266a01d5..fc1249cb74d 100644 --- a/docs/api/ClrTest.Reflection.InlineSwitchInstruction.html +++ b/docs/api/ClrTest.Reflection.InlineSwitchInstruction.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/ClrTest.Reflection.InlineTokInstruction.html b/docs/api/ClrTest.Reflection.InlineTokInstruction.html index e6266cf7965..5e056355337 100644 --- a/docs/api/ClrTest.Reflection.InlineTokInstruction.html +++ b/docs/api/ClrTest.Reflection.InlineTokInstruction.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/ClrTest.Reflection.InlineTypeInstruction.html b/docs/api/ClrTest.Reflection.InlineTypeInstruction.html index 3975ef086ce..3773b0bdd58 100644 --- a/docs/api/ClrTest.Reflection.InlineTypeInstruction.html +++ b/docs/api/ClrTest.Reflection.InlineTypeInstruction.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/ClrTest.Reflection.InlineVarInstruction.html b/docs/api/ClrTest.Reflection.InlineVarInstruction.html index e5fad6773d2..02c31665a35 100644 --- a/docs/api/ClrTest.Reflection.InlineVarInstruction.html +++ b/docs/api/ClrTest.Reflection.InlineVarInstruction.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/ClrTest.Reflection.MethodBaseILProvider.html b/docs/api/ClrTest.Reflection.MethodBaseILProvider.html index 1f8c5d6d086..2b966160192 100644 --- a/docs/api/ClrTest.Reflection.MethodBaseILProvider.html +++ b/docs/api/ClrTest.Reflection.MethodBaseILProvider.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/ClrTest.Reflection.ModuleScopeTokenResolver.html b/docs/api/ClrTest.Reflection.ModuleScopeTokenResolver.html index ed2c974cc8f..e599367a350 100644 --- a/docs/api/ClrTest.Reflection.ModuleScopeTokenResolver.html +++ b/docs/api/ClrTest.Reflection.ModuleScopeTokenResolver.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/ClrTest.Reflection.RawILStringToTextWriter.html b/docs/api/ClrTest.Reflection.RawILStringToTextWriter.html index b5389ca0970..fe8456bdbc3 100644 --- a/docs/api/ClrTest.Reflection.RawILStringToTextWriter.html +++ b/docs/api/ClrTest.Reflection.RawILStringToTextWriter.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/ClrTest.Reflection.RawILStringVisitor.html b/docs/api/ClrTest.Reflection.RawILStringVisitor.html index d7ad32ba778..cda618d206e 100644 --- a/docs/api/ClrTest.Reflection.RawILStringVisitor.html +++ b/docs/api/ClrTest.Reflection.RawILStringVisitor.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/ClrTest.Reflection.ReadableILStringToTextWriter.html b/docs/api/ClrTest.Reflection.ReadableILStringToTextWriter.html index 2450f6683ea..ad0276feb14 100644 --- a/docs/api/ClrTest.Reflection.ReadableILStringToTextWriter.html +++ b/docs/api/ClrTest.Reflection.ReadableILStringToTextWriter.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/ClrTest.Reflection.ReadableILStringVisitor.html b/docs/api/ClrTest.Reflection.ReadableILStringVisitor.html index c7b78fb50d6..39435ae69c0 100644 --- a/docs/api/ClrTest.Reflection.ReadableILStringVisitor.html +++ b/docs/api/ClrTest.Reflection.ReadableILStringVisitor.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/ClrTest.Reflection.ShortInlineBrTargetInstruction.html b/docs/api/ClrTest.Reflection.ShortInlineBrTargetInstruction.html index 0248c516536..77dd25e26a1 100644 --- a/docs/api/ClrTest.Reflection.ShortInlineBrTargetInstruction.html +++ b/docs/api/ClrTest.Reflection.ShortInlineBrTargetInstruction.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/ClrTest.Reflection.ShortInlineIInstruction.html b/docs/api/ClrTest.Reflection.ShortInlineIInstruction.html index 10bb01173b6..26648a873c5 100644 --- a/docs/api/ClrTest.Reflection.ShortInlineIInstruction.html +++ b/docs/api/ClrTest.Reflection.ShortInlineIInstruction.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/ClrTest.Reflection.ShortInlineRInstruction.html b/docs/api/ClrTest.Reflection.ShortInlineRInstruction.html index c624228eb08..fe71ed67341 100644 --- a/docs/api/ClrTest.Reflection.ShortInlineRInstruction.html +++ b/docs/api/ClrTest.Reflection.ShortInlineRInstruction.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/ClrTest.Reflection.ShortInlineVarInstruction.html b/docs/api/ClrTest.Reflection.ShortInlineVarInstruction.html index 75e8f95d273..9f1f120bdb2 100644 --- a/docs/api/ClrTest.Reflection.ShortInlineVarInstruction.html +++ b/docs/api/ClrTest.Reflection.ShortInlineVarInstruction.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/ClrTest.Reflection.html b/docs/api/ClrTest.Reflection.html index fff037277d8..aab13aa4b8b 100644 --- a/docs/api/ClrTest.Reflection.html +++ b/docs/api/ClrTest.Reflection.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/MASES.JCOReflectorEngine.AssemblyData.html b/docs/api/MASES.JCOReflectorEngine.AssemblyData.html index 7bcaa3e8b78..7749b85c5ff 100644 --- a/docs/api/MASES.JCOReflectorEngine.AssemblyData.html +++ b/docs/api/MASES.JCOReflectorEngine.AssemblyData.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/MASES.JCOReflectorEngine.AssemblyDataCollection.html b/docs/api/MASES.JCOReflectorEngine.AssemblyDataCollection.html index 7a6a4f56ec2..091421a30f0 100644 --- a/docs/api/MASES.JCOReflectorEngine.AssemblyDataCollection.html +++ b/docs/api/MASES.JCOReflectorEngine.AssemblyDataCollection.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/MASES.JCOReflectorEngine.CommonEventArgs.html b/docs/api/MASES.JCOReflectorEngine.CommonEventArgs.html index 10ab2fd2081..cd1266c2145 100644 --- a/docs/api/MASES.JCOReflectorEngine.CommonEventArgs.html +++ b/docs/api/MASES.JCOReflectorEngine.CommonEventArgs.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/MASES.JCOReflectorEngine.DocsBuilderEventArgs.html b/docs/api/MASES.JCOReflectorEngine.DocsBuilderEventArgs.html index 3b4f6300c78..e91be88cea5 100644 --- a/docs/api/MASES.JCOReflectorEngine.DocsBuilderEventArgs.html +++ b/docs/api/MASES.JCOReflectorEngine.DocsBuilderEventArgs.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/MASES.JCOReflectorEngine.EndOperationEventArgs.html b/docs/api/MASES.JCOReflectorEngine.EndOperationEventArgs.html index 4979f8dcab5..085a1d44ec2 100644 --- a/docs/api/MASES.JCOReflectorEngine.EndOperationEventArgs.html +++ b/docs/api/MASES.JCOReflectorEngine.EndOperationEventArgs.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/MASES.JCOReflectorEngine.ErrorReportingType.html b/docs/api/MASES.JCOReflectorEngine.ErrorReportingType.html index aa224e1689f..a7514f5a9bb 100644 --- a/docs/api/MASES.JCOReflectorEngine.ErrorReportingType.html +++ b/docs/api/MASES.JCOReflectorEngine.ErrorReportingType.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ @@ -121,7 +121,7 @@Callback = 1
The EndOperationHandler will be called in case of error
+The MASES.JCOReflectorEngine.JobManager.EndOperationHandler will be called in case of error
Exception = 2
The Exception will be propagated
diff --git a/docs/api/MASES.JCOReflectorEngine.FolderBuilderEventArgs.html b/docs/api/MASES.JCOReflectorEngine.FolderBuilderEventArgs.html index 01e7fea4121..bcb6fef5362 100644 --- a/docs/api/MASES.JCOReflectorEngine.FolderBuilderEventArgs.html +++ b/docs/api/MASES.JCOReflectorEngine.FolderBuilderEventArgs.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/MASES.JCOReflectorEngine.JARBuilderEventArgs.html b/docs/api/MASES.JCOReflectorEngine.JARBuilderEventArgs.html index 86e50f7f47f..10a7b2f702f 100644 --- a/docs/api/MASES.JCOReflectorEngine.JARBuilderEventArgs.html +++ b/docs/api/MASES.JCOReflectorEngine.JARBuilderEventArgs.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/MASES.JCOReflectorEngine.JDKVersion.html b/docs/api/MASES.JCOReflectorEngine.JDKVersion.html index eb166987576..7d375dc1534 100644 --- a/docs/api/MASES.JCOReflectorEngine.JDKVersion.html +++ b/docs/api/MASES.JCOReflectorEngine.JDKVersion.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/MASES.JCOReflectorEngine.JavaBuilderEventArgs.html b/docs/api/MASES.JCOReflectorEngine.JavaBuilderEventArgs.html index e39e09442f6..fea506fab30 100644 --- a/docs/api/MASES.JCOReflectorEngine.JavaBuilderEventArgs.html +++ b/docs/api/MASES.JCOReflectorEngine.JavaBuilderEventArgs.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/MASES.JCOReflectorEngine.JobManager.CmdParam.html b/docs/api/MASES.JCOReflectorEngine.JobManager.CmdParam.html index 8c2b3b11207..36984ec88f1 100644 --- a/docs/api/MASES.JCOReflectorEngine.JobManager.CmdParam.html +++ b/docs/api/MASES.JCOReflectorEngine.JobManager.CmdParam.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/MASES.JCOReflectorEngine.JobManager.html b/docs/api/MASES.JCOReflectorEngine.JobManager.html index 2605485fc43..35ba5b557eb 100644 --- a/docs/api/MASES.JCOReflectorEngine.JobManager.html +++ b/docs/api/MASES.JCOReflectorEngine.JobManager.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/MASES.JCOReflectorEngine.JobTypes.html b/docs/api/MASES.JCOReflectorEngine.JobTypes.html index 1fd6c322cb7..b31c1090654 100644 --- a/docs/api/MASES.JCOReflectorEngine.JobTypes.html +++ b/docs/api/MASES.JCOReflectorEngine.JobTypes.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/MASES.JCOReflectorEngine.LogLevel.html b/docs/api/MASES.JCOReflectorEngine.LogLevel.html index 79d17afe19a..e81e4bafa8f 100644 --- a/docs/api/MASES.JCOReflectorEngine.LogLevel.html +++ b/docs/api/MASES.JCOReflectorEngine.LogLevel.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/MASES.JCOReflectorEngine.POMBuilderEventArgs.html b/docs/api/MASES.JCOReflectorEngine.POMBuilderEventArgs.html index 03d82141aa3..7b576b5f50c 100644 --- a/docs/api/MASES.JCOReflectorEngine.POMBuilderEventArgs.html +++ b/docs/api/MASES.JCOReflectorEngine.POMBuilderEventArgs.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/MASES.JCOReflectorEngine.POMStagingType.html b/docs/api/MASES.JCOReflectorEngine.POMStagingType.html index e572df434e3..d5e80a1e65e 100644 --- a/docs/api/MASES.JCOReflectorEngine.POMStagingType.html +++ b/docs/api/MASES.JCOReflectorEngine.POMStagingType.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/MASES.JCOReflectorEngine.POMType.html b/docs/api/MASES.JCOReflectorEngine.POMType.html index 8ebaff7fa8d..2b7652a77fa 100644 --- a/docs/api/MASES.JCOReflectorEngine.POMType.html +++ b/docs/api/MASES.JCOReflectorEngine.POMType.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/MASES.JCOReflectorEngine.ReflectorEventArgs.html b/docs/api/MASES.JCOReflectorEngine.ReflectorEventArgs.html index 411ea391542..ba718339821 100644 --- a/docs/api/MASES.JCOReflectorEngine.ReflectorEventArgs.html +++ b/docs/api/MASES.JCOReflectorEngine.ReflectorEventArgs.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/MASES.JCOReflectorEngine.appendToConsoleHandler.html b/docs/api/MASES.JCOReflectorEngine.appendToConsoleHandler.html index 0efe522f2ab..52e8cc51853 100644 --- a/docs/api/MASES.JCOReflectorEngine.appendToConsoleHandler.html +++ b/docs/api/MASES.JCOReflectorEngine.appendToConsoleHandler.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/MASES.JCOReflectorEngine.html b/docs/api/MASES.JCOReflectorEngine.html index 25597d892d1..755bc00045b 100644 --- a/docs/api/MASES.JCOReflectorEngine.html +++ b/docs/api/MASES.JCOReflectorEngine.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/MASES.JCOReflectorGUI.App.html b/docs/api/MASES.JCOReflectorGUI.App.html index 3d197951e00..8ad6ef62aa4 100644 --- a/docs/api/MASES.JCOReflectorGUI.App.html +++ b/docs/api/MASES.JCOReflectorGUI.App.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/MASES.JCOReflectorGUI.AssemblyCollectionControl.html b/docs/api/MASES.JCOReflectorGUI.AssemblyCollectionControl.html index 9eca6fa678c..22ae815ddec 100644 --- a/docs/api/MASES.JCOReflectorGUI.AssemblyCollectionControl.html +++ b/docs/api/MASES.JCOReflectorGUI.AssemblyCollectionControl.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ diff --git a/docs/api/MASES.JCOReflectorGUI.MainWindow.appendToConsoleDelegate.html b/docs/api/MASES.JCOReflectorGUI.MainWindow.appendToConsoleDelegate.html index c02a132ce4a..cd924a59982 100644 --- a/docs/api/MASES.JCOReflectorGUI.MainWindow.appendToConsoleDelegate.html +++ b/docs/api/MASES.JCOReflectorGUI.MainWindow.appendToConsoleDelegate.html @@ -1,4 +1,4 @@ - + @@ -54,7 +54,7 @@ @@ -89,7 +89,7 @@C&&(l=C),N =this.nodes.length){var et=0;N.forEach(function(I){I.owner==c&&et++}),et==this.nodes.length&&(this.isConnected=!0)}},m.exports=r},function(m,w,L){"use strict";var u,o=L(1);function n(t){u=L(6),this.layout=t,this.graphs=[],this.edges=[]}n.prototype.addRoot=function(){var t=this.layout.newGraph(),a=this.layout.newNode(null),f=this.add(t,a);return this.setRootGraph(f),this.rootGraph},n.prototype.add=function(t,a,f,e,v){if(f==null&&e==null&&v==null){if(t==null)throw"Graph is null!";if(a==null)throw"Parent node is null!";if(this.graphs.indexOf(t)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(t),t.parent!=null)throw"Already has a parent!";if(a.child!=null)throw"Already has a child!";return t.parent=a,a.child=t,t}else{v=f,e=a,f=t;var i=e.getOwner(),r=v.getOwner();if(!(i!=null&&i.getGraphManager()==this))throw"Source not in this graph mgr!";if(!(r!=null&&r.getGraphManager()==this))throw"Target not in this graph mgr!";if(i==r)return f.isInterGraph=!1,i.add(f,e,v);if(f.isInterGraph=!0,f.source=e,f.target=v,this.edges.indexOf(f)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(f),!(f.source!=null&&f.target!=null))throw"Edge source and/or target is null!";if(!(f.source.edges.indexOf(f)==-1&&f.target.edges.indexOf(f)==-1))throw"Edge already in source and/or target incidency list!";return f.source.edges.push(f),f.target.edges.push(f),f}},n.prototype.remove=function(t){if(t instanceof u){var a=t;if(a.getGraphManager()!=this)throw"Graph not in this graph mgr";if(!(a==this.rootGraph||a.parent!=null&&a.parent.graphManager==this))throw"Invalid parent node!";var f=[];f=f.concat(a.getEdges());for(var e,v=f.length,i=0;i e}}]),a}();m.exports=t},function(m,w,L){"use strict";function u(){}u.svd=function(o){this.U=null,this.V=null,this.s=null,this.m=0,this.n=0,this.m=o.length,this.n=o[0].length;var n=Math.min(this.m,this.n);this.s=function(xt){for(var Lt=[];xt-- >0;)Lt.push(0);return Lt}(Math.min(this.m+1,this.n)),this.U=function(xt){var Lt=function kt(St){if(St.length==0)return 0;for(var Wt=[],$t=0;$t {var f=a(548),e=a(140).CoSELayout,v=a(140).CoSENode,i=a(140).layoutBase.PointD,r=a(140).layoutBase.DimensionD,h=a(140).layoutBase.LayoutConstants,c=a(140).layoutBase.FDLayoutConstants,l=a(140).CoSEConstants,N=function(y,C){var F=y.cy,M=y.eles,P=M.nodes(),V=M.edges(),Y=void 0,et=void 0,I=void 0,k={};y.randomize&&(Y=C.nodeIndexes,et=C.xCoords,I=C.yCoords);var s=function(x){return typeof x=="function"},E=function(x,Z){return s(x)?x(Z):x},g=f.calcParentsWithoutChildren(F,M),T=function R(x,Z,_,S){for(var j=Z.length,z=0;z ${this.parser.parseInline(e)} An error occurred: ${n.tokens?.map(s).join("")} ${this.parser.parseInline(tokens)} An error occurred: ${node.tokens?.map(output).join(\"\")} ${e.children.map(t).join("")}
"),k.debug("vertexText"+i);let r={isNode:n,label:Ht(nt(i)),labelStyle:t.replace("fill:","color:")};return ce(r)}else{let r=document.createElementNS("http://www.w3.org/2000/svg","text");r.setAttribute("style",t.replace("color:","fill:"));let a=[];typeof i=="string"?a=i.split(/\\n|\n|
/gi):Array.isArray(i)?a=i:a=[];for(let l of a){let c=document.createElementNS("http://www.w3.org/2000/svg","tspan");c.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),c.setAttribute("dy","1em"),c.setAttribute("x","0"),s?c.setAttribute("class","title-row"):c.setAttribute("class","row"),c.textContent=l.trim(),r.appendChild(c)}return r}},"createLabel"),K=ir,nr=d((e,t,s,n,i)=>{t.arrowTypeStart&&Gt(e,"start",t.arrowTypeStart,s,n,i),t.arrowTypeEnd&&Gt(e,"end",t.arrowTypeEnd,s,n,i)},"addEdgeMarkers"),lr={arrow_cross:"cross",arrow_point:"point",arrow_barb:"barb",arrow_circle:"circle",aggregation:"aggregation",extension:"extension",composition:"composition",dependency:"dependency",lollipop:"lollipop"},Gt=d((e,t,s,n,i,r)=>{let a=lr[s];if(!a){k.warn(`Unknown arrow type: ${s}`);return}let l=t==="start"?"Start":"End";e.attr(`marker-${t}`,`url(${n}#${i}_${r}-${a}${l})`)},"addEdgeMarker"),St={},M={},cr=d((e,t)=>{let s=I(),n=X(s.flowchart.htmlLabels),i=t.labelType==="markdown"?mt(e,t.label,{style:t.labelStyle,useHtmlLabels:n,addSvgBackground:!0},s):K(t.label,t.labelStyle),r=e.insert("g").attr("class","edgeLabel"),a=r.insert("g").attr("class","label");a.node().appendChild(i);let l=i.getBBox();if(n){let u=i.children[0],h=N(i);l=u.getBoundingClientRect(),h.attr("width",l.width),h.attr("height",l.height)}a.attr("transform","translate("+-l.width/2+", "+-l.height/2+")"),St[t.id]=r,t.width=l.width,t.height=l.height;let c;if(t.startLabelLeft){let u=K(t.startLabelLeft,t.labelStyle),h=e.insert("g").attr("class","edgeTerminals"),b=h.insert("g").attr("class","inner");c=b.node().appendChild(u);let m=u.getBBox();b.attr("transform","translate("+-m.width/2+", "+-m.height/2+")"),M[t.id]||(M[t.id]={}),M[t.id].startLeft=h,et(c,t.startLabelLeft)}if(t.startLabelRight){let u=K(t.startLabelRight,t.labelStyle),h=e.insert("g").attr("class","edgeTerminals"),b=h.insert("g").attr("class","inner");c=h.node().appendChild(u),b.node().appendChild(u);let m=u.getBBox();b.attr("transform","translate("+-m.width/2+", "+-m.height/2+")"),M[t.id]||(M[t.id]={}),M[t.id].startRight=h,et(c,t.startLabelRight)}if(t.endLabelLeft){let u=K(t.endLabelLeft,t.labelStyle),h=e.insert("g").attr("class","edgeTerminals"),b=h.insert("g").attr("class","inner");c=b.node().appendChild(u);let m=u.getBBox();b.attr("transform","translate("+-m.width/2+", "+-m.height/2+")"),h.node().appendChild(u),M[t.id]||(M[t.id]={}),M[t.id].endLeft=h,et(c,t.endLabelLeft)}if(t.endLabelRight){let u=K(t.endLabelRight,t.labelStyle),h=e.insert("g").attr("class","edgeTerminals"),b=h.insert("g").attr("class","inner");c=b.node().appendChild(u);let m=u.getBBox();b.attr("transform","translate("+-m.width/2+", "+-m.height/2+")"),h.node().appendChild(u),M[t.id]||(M[t.id]={}),M[t.id].endRight=h,et(c,t.endLabelRight)}return i},"insertEdgeLabel");function et(e,t){I().flowchart.htmlLabels&&e&&(e.style.width=t.length*9+"px",e.style.height="12px")}d(et,"setTerminalWidth");var or=d((e,t)=>{k.debug("Moving label abc88 ",e.id,e.label,St[e.id],t);let s=t.updatedPath?t.updatedPath:t.originalPath,n=I(),{subGraphTitleTotalMargin:i}=Ft(n);if(e.label){let r=St[e.id],a=e.x,l=e.y;if(s){let c=tt.calcLabelPosition(s);k.debug("Moving label "+e.label+" from (",a,",",l,") to (",c.x,",",c.y,") abc88"),t.updatedPath&&(a=c.x,l=c.y)}r.attr("transform",`translate(${a}, ${l+i/2})`)}if(e.startLabelLeft){let r=M[e.id].startLeft,a=e.x,l=e.y;if(s){let c=tt.calcTerminalLabelPosition(e.arrowTypeStart?10:0,"start_left",s);a=c.x,l=c.y}r.attr("transform",`translate(${a}, ${l})`)}if(e.startLabelRight){let r=M[e.id].startRight,a=e.x,l=e.y;if(s){let c=tt.calcTerminalLabelPosition(e.arrowTypeStart?10:0,"start_right",s);a=c.x,l=c.y}r.attr("transform",`translate(${a}, ${l})`)}if(e.endLabelLeft){let r=M[e.id].endLeft,a=e.x,l=e.y;if(s){let c=tt.calcTerminalLabelPosition(e.arrowTypeEnd?10:0,"end_left",s);a=c.x,l=c.y}r.attr("transform",`translate(${a}, ${l})`)}if(e.endLabelRight){let r=M[e.id].endRight,a=e.x,l=e.y;if(s){let c=tt.calcTerminalLabelPosition(e.arrowTypeEnd?10:0,"end_right",s);a=c.x,l=c.y}r.attr("transform",`translate(${a}, ${l})`)}},"positionEdgeLabel"),hr=d((e,t)=>{let s=e.x,n=e.y,i=Math.abs(t.x-s),r=Math.abs(t.y-n),a=e.width/2,l=e.height/2;return i>=a||r>=l},"outsideNode"),dr=d((e,t,s)=>{k.debug(`intersection calc abc89:
+ outsidePoint: ${JSON.stringify(t)}
+ insidePoint : ${JSON.stringify(s)}
+ node : x:${e.x} y:${e.y} w:${e.width} h:${e.height}`);let n=e.x,i=e.y,r=Math.abs(n-s.x),a=e.width/2,l=s.x
"):b,t.labelStyle,!0,!0));if(X(I().flowchart.htmlLabels)){let E=y.children[0],S=N(y);h=E.getBoundingClientRect(),S.attr("width",h.width),S.attr("height",h.height)}let L=t.padding/2;return N(y).attr("transform","translate( "+(h.width>m.width?0:(m.width-h.width)/2)+", "+(m.height+L+5)+")"),N(u).attr("transform","translate( "+(h.width
\");\n log.debug(\"vertexText\" + vertexText);\n const node = {\n isNode,\n label: replaceIconSubstring(decodeEntities(vertexText)),\n labelStyle: style.replace(\"fill:\", \"color:\")\n };\n let vertexNode = addHtmlLabel(node);\n return vertexNode;\n } else {\n const svgLabel = document.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n svgLabel.setAttribute(\"style\", style.replace(\"color:\", \"fill:\"));\n let rows = [];\n if (typeof vertexText === \"string\") {\n rows = vertexText.split(/\\\\n|\\n|
/gi);\n } else if (Array.isArray(vertexText)) {\n rows = vertexText;\n } else {\n rows = [];\n }\n for (const row of rows) {\n const tspan = document.createElementNS(\"http://www.w3.org/2000/svg\", \"tspan\");\n tspan.setAttributeNS(\"http://www.w3.org/XML/1998/namespace\", \"xml:space\", \"preserve\");\n tspan.setAttribute(\"dy\", \"1em\");\n tspan.setAttribute(\"x\", \"0\");\n if (isTitle) {\n tspan.setAttribute(\"class\", \"title-row\");\n } else {\n tspan.setAttribute(\"class\", \"row\");\n }\n tspan.textContent = row.trim();\n svgLabel.appendChild(tspan);\n }\n return svgLabel;\n }\n}, \"createLabel\");\nvar createLabel_default = createLabel;\n\n// src/dagre-wrapper/edges.js\nimport { line, curveBasis, select as select2 } from \"d3\";\n\n// src/dagre-wrapper/edgeMarker.ts\nvar addEdgeMarkers = /* @__PURE__ */ __name((svgPath, edge, url, id, diagramType) => {\n if (edge.arrowTypeStart) {\n addEdgeMarker(svgPath, \"start\", edge.arrowTypeStart, url, id, diagramType);\n }\n if (edge.arrowTypeEnd) {\n addEdgeMarker(svgPath, \"end\", edge.arrowTypeEnd, url, id, diagramType);\n }\n}, \"addEdgeMarkers\");\nvar arrowTypesMap = {\n arrow_cross: \"cross\",\n arrow_point: \"point\",\n arrow_barb: \"barb\",\n arrow_circle: \"circle\",\n aggregation: \"aggregation\",\n extension: \"extension\",\n composition: \"composition\",\n dependency: \"dependency\",\n lollipop: \"lollipop\"\n};\nvar addEdgeMarker = /* @__PURE__ */ __name((svgPath, position, arrowType, url, id, diagramType) => {\n const endMarkerType = arrowTypesMap[arrowType];\n if (!endMarkerType) {\n log.warn(`Unknown arrow type: ${arrowType}`);\n return;\n }\n const suffix = position === \"start\" ? \"Start\" : \"End\";\n svgPath.attr(`marker-${position}`, `url(${url}#${id}_${diagramType}-${endMarkerType}${suffix})`);\n}, \"addEdgeMarker\");\n\n// src/dagre-wrapper/edges.js\nvar edgeLabels = {};\nvar terminalLabels = {};\nvar insertEdgeLabel = /* @__PURE__ */ __name((elem, edge) => {\n const config2 = getConfig2();\n const useHtmlLabels = evaluate(config2.flowchart.htmlLabels);\n const labelElement = edge.labelType === \"markdown\" ? createText(\n elem,\n edge.label,\n {\n style: edge.labelStyle,\n useHtmlLabels,\n addSvgBackground: true\n },\n config2\n ) : createLabel_default(edge.label, edge.labelStyle);\n const edgeLabel = elem.insert(\"g\").attr(\"class\", \"edgeLabel\");\n const label = edgeLabel.insert(\"g\").attr(\"class\", \"label\");\n label.node().appendChild(labelElement);\n let bbox = labelElement.getBBox();\n if (useHtmlLabels) {\n const div = labelElement.children[0];\n const dv = select2(labelElement);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n edgeLabels[edge.id] = edgeLabel;\n edge.width = bbox.width;\n edge.height = bbox.height;\n let fo;\n if (edge.startLabelLeft) {\n const startLabelElement = createLabel_default(edge.startLabelLeft, edge.labelStyle);\n const startEdgeLabelLeft = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = startEdgeLabelLeft.insert(\"g\").attr(\"class\", \"inner\");\n fo = inner.node().appendChild(startLabelElement);\n const slBox = startLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].startLeft = startEdgeLabelLeft;\n setTerminalWidth(fo, edge.startLabelLeft);\n }\n if (edge.startLabelRight) {\n const startLabelElement = createLabel_default(edge.startLabelRight, edge.labelStyle);\n const startEdgeLabelRight = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = startEdgeLabelRight.insert(\"g\").attr(\"class\", \"inner\");\n fo = startEdgeLabelRight.node().appendChild(startLabelElement);\n inner.node().appendChild(startLabelElement);\n const slBox = startLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].startRight = startEdgeLabelRight;\n setTerminalWidth(fo, edge.startLabelRight);\n }\n if (edge.endLabelLeft) {\n const endLabelElement = createLabel_default(edge.endLabelLeft, edge.labelStyle);\n const endEdgeLabelLeft = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = endEdgeLabelLeft.insert(\"g\").attr(\"class\", \"inner\");\n fo = inner.node().appendChild(endLabelElement);\n const slBox = endLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n endEdgeLabelLeft.node().appendChild(endLabelElement);\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].endLeft = endEdgeLabelLeft;\n setTerminalWidth(fo, edge.endLabelLeft);\n }\n if (edge.endLabelRight) {\n const endLabelElement = createLabel_default(edge.endLabelRight, edge.labelStyle);\n const endEdgeLabelRight = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = endEdgeLabelRight.insert(\"g\").attr(\"class\", \"inner\");\n fo = inner.node().appendChild(endLabelElement);\n const slBox = endLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n endEdgeLabelRight.node().appendChild(endLabelElement);\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].endRight = endEdgeLabelRight;\n setTerminalWidth(fo, edge.endLabelRight);\n }\n return labelElement;\n}, \"insertEdgeLabel\");\nfunction setTerminalWidth(fo, value) {\n if (getConfig2().flowchart.htmlLabels && fo) {\n fo.style.width = value.length * 9 + \"px\";\n fo.style.height = \"12px\";\n }\n}\n__name(setTerminalWidth, \"setTerminalWidth\");\nvar positionEdgeLabel = /* @__PURE__ */ __name((edge, paths) => {\n log.debug(\"Moving label abc88 \", edge.id, edge.label, edgeLabels[edge.id], paths);\n let path = paths.updatedPath ? paths.updatedPath : paths.originalPath;\n const siteConfig = getConfig2();\n const { subGraphTitleTotalMargin } = getSubGraphTitleMargins(siteConfig);\n if (edge.label) {\n const el = edgeLabels[edge.id];\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils_default.calcLabelPosition(path);\n log.debug(\n \"Moving label \" + edge.label + \" from (\",\n x,\n \",\",\n y,\n \") to (\",\n pos.x,\n \",\",\n pos.y,\n \") abc88\"\n );\n if (paths.updatedPath) {\n x = pos.x;\n y = pos.y;\n }\n }\n el.attr(\"transform\", `translate(${x}, ${y + subGraphTitleTotalMargin / 2})`);\n }\n if (edge.startLabelLeft) {\n const el = terminalLabels[edge.id].startLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils_default.calcTerminalLabelPosition(edge.arrowTypeStart ? 10 : 0, \"start_left\", path);\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", `translate(${x}, ${y})`);\n }\n if (edge.startLabelRight) {\n const el = terminalLabels[edge.id].startRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils_default.calcTerminalLabelPosition(\n edge.arrowTypeStart ? 10 : 0,\n \"start_right\",\n path\n );\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", `translate(${x}, ${y})`);\n }\n if (edge.endLabelLeft) {\n const el = terminalLabels[edge.id].endLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils_default.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, \"end_left\", path);\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", `translate(${x}, ${y})`);\n }\n if (edge.endLabelRight) {\n const el = terminalLabels[edge.id].endRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils_default.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, \"end_right\", path);\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", `translate(${x}, ${y})`);\n }\n}, \"positionEdgeLabel\");\nvar outsideNode = /* @__PURE__ */ __name((node, point2) => {\n const x = node.x;\n const y = node.y;\n const dx = Math.abs(point2.x - x);\n const dy = Math.abs(point2.y - y);\n const w = node.width / 2;\n const h = node.height / 2;\n if (dx >= w || dy >= h) {\n return true;\n }\n return false;\n}, \"outsideNode\");\nvar intersection = /* @__PURE__ */ __name((node, outsidePoint, insidePoint) => {\n log.debug(`intersection calc abc89:\n outsidePoint: ${JSON.stringify(outsidePoint)}\n insidePoint : ${JSON.stringify(insidePoint)}\n node : x:${node.x} y:${node.y} w:${node.width} h:${node.height}`);\n const x = node.x;\n const y = node.y;\n const dx = Math.abs(x - insidePoint.x);\n const w = node.width / 2;\n let r = insidePoint.x < outsidePoint.x ? w - dx : w + dx;\n const h = node.height / 2;\n const Q = Math.abs(outsidePoint.y - insidePoint.y);\n const R = Math.abs(outsidePoint.x - insidePoint.x);\n if (Math.abs(y - outsidePoint.y) * w > Math.abs(x - outsidePoint.x) * h) {\n let q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;\n r = R * q / Q;\n const res = {\n x: insidePoint.x < outsidePoint.x ? insidePoint.x + r : insidePoint.x - R + r,\n y: insidePoint.y < outsidePoint.y ? insidePoint.y + Q - q : insidePoint.y - Q + q\n };\n if (r === 0) {\n res.x = outsidePoint.x;\n res.y = outsidePoint.y;\n }\n if (R === 0) {\n res.x = outsidePoint.x;\n }\n if (Q === 0) {\n res.y = outsidePoint.y;\n }\n log.debug(`abc89 topp/bott calc, Q ${Q}, q ${q}, R ${R}, r ${r}`, res);\n return res;\n } else {\n if (insidePoint.x < outsidePoint.x) {\n r = outsidePoint.x - w - x;\n } else {\n r = x - w - outsidePoint.x;\n }\n let q = Q * r / R;\n let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x - R + r;\n let _y = insidePoint.y < outsidePoint.y ? insidePoint.y + q : insidePoint.y - q;\n log.debug(`sides calc abc89, Q ${Q}, q ${q}, R ${R}, r ${r}`, { _x, _y });\n if (r === 0) {\n _x = outsidePoint.x;\n _y = outsidePoint.y;\n }\n if (R === 0) {\n _x = outsidePoint.x;\n }\n if (Q === 0) {\n _y = outsidePoint.y;\n }\n return { x: _x, y: _y };\n }\n}, \"intersection\");\nvar cutPathAtIntersect = /* @__PURE__ */ __name((_points, boundaryNode) => {\n log.debug(\"abc88 cutPathAtIntersect\", _points, boundaryNode);\n let points = [];\n let lastPointOutside = _points[0];\n let isInside = false;\n _points.forEach((point2) => {\n if (!outsideNode(boundaryNode, point2) && !isInside) {\n const inter = intersection(boundaryNode, lastPointOutside, point2);\n let pointPresent = false;\n points.forEach((p) => {\n pointPresent = pointPresent || p.x === inter.x && p.y === inter.y;\n });\n if (!points.some((e) => e.x === inter.x && e.y === inter.y)) {\n points.push(inter);\n }\n isInside = true;\n } else {\n lastPointOutside = point2;\n if (!isInside) {\n points.push(point2);\n }\n }\n });\n return points;\n}, \"cutPathAtIntersect\");\nvar insertEdge = /* @__PURE__ */ __name(function(elem, e, edge, clusterDb, diagramType, graph, id) {\n let points = edge.points;\n log.debug(\"abc88 InsertEdge: edge=\", edge, \"e=\", e);\n let pointsHasChanged = false;\n const tail = graph.node(e.v);\n var head = graph.node(e.w);\n if (head?.intersect && tail?.intersect) {\n points = points.slice(1, edge.points.length - 1);\n points.unshift(tail.intersect(points[0]));\n points.push(head.intersect(points[points.length - 1]));\n }\n if (edge.toCluster) {\n log.debug(\"to cluster abc88\", clusterDb[edge.toCluster]);\n points = cutPathAtIntersect(edge.points, clusterDb[edge.toCluster].node);\n pointsHasChanged = true;\n }\n if (edge.fromCluster) {\n log.debug(\"from cluster abc88\", clusterDb[edge.fromCluster]);\n points = cutPathAtIntersect(points.reverse(), clusterDb[edge.fromCluster].node).reverse();\n pointsHasChanged = true;\n }\n const lineData = points.filter((p) => !Number.isNaN(p.y));\n let curve = curveBasis;\n if (edge.curve && (diagramType === \"graph\" || diagramType === \"flowchart\")) {\n curve = edge.curve;\n }\n const { x, y } = getLineFunctionsWithOffset(edge);\n const lineFunction = line().x(x).y(y).curve(curve);\n let strokeClasses;\n switch (edge.thickness) {\n case \"normal\":\n strokeClasses = \"edge-thickness-normal\";\n break;\n case \"thick\":\n strokeClasses = \"edge-thickness-thick\";\n break;\n case \"invisible\":\n strokeClasses = \"edge-thickness-thick\";\n break;\n default:\n strokeClasses = \"\";\n }\n switch (edge.pattern) {\n case \"solid\":\n strokeClasses += \" edge-pattern-solid\";\n break;\n case \"dotted\":\n strokeClasses += \" edge-pattern-dotted\";\n break;\n case \"dashed\":\n strokeClasses += \" edge-pattern-dashed\";\n break;\n }\n const svgPath = elem.append(\"path\").attr(\"d\", lineFunction(lineData)).attr(\"id\", edge.id).attr(\"class\", \" \" + strokeClasses + (edge.classes ? \" \" + edge.classes : \"\")).attr(\"style\", edge.style);\n let url = \"\";\n if (getConfig2().flowchart.arrowMarkerAbsolute || getConfig2().state.arrowMarkerAbsolute) {\n url = window.location.protocol + \"//\" + window.location.host + window.location.pathname + window.location.search;\n url = url.replace(/\\(/g, \"\\\\(\");\n url = url.replace(/\\)/g, \"\\\\)\");\n }\n addEdgeMarkers(svgPath, edge, url, id, diagramType);\n let paths = {};\n if (pointsHasChanged) {\n paths.updatedPath = points;\n }\n paths.originalPath = edge.points;\n return paths;\n}, \"insertEdge\");\n\n// src/dagre-wrapper/nodes.js\nimport { select as select4 } from \"d3\";\n\n// src/dagre-wrapper/blockArrowHelper.ts\nvar expandAndDeduplicateDirections = /* @__PURE__ */ __name((directions) => {\n const uniqueDirections = /* @__PURE__ */ new Set();\n for (const direction of directions) {\n switch (direction) {\n case \"x\":\n uniqueDirections.add(\"right\");\n uniqueDirections.add(\"left\");\n break;\n case \"y\":\n uniqueDirections.add(\"up\");\n uniqueDirections.add(\"down\");\n break;\n default:\n uniqueDirections.add(direction);\n break;\n }\n }\n return uniqueDirections;\n}, \"expandAndDeduplicateDirections\");\nvar getArrowPoints = /* @__PURE__ */ __name((duplicatedDirections, bbox, node) => {\n const directions = expandAndDeduplicateDirections(duplicatedDirections);\n const f = 2;\n const height = bbox.height + 2 * node.padding;\n const midpoint = height / f;\n const width = bbox.width + 2 * midpoint + node.padding;\n const padding2 = node.padding / 2;\n if (directions.has(\"right\") && directions.has(\"left\") && directions.has(\"up\") && directions.has(\"down\")) {\n return [\n // Bottom\n { x: 0, y: 0 },\n { x: midpoint, y: 0 },\n { x: width / 2, y: 2 * padding2 },\n { x: width - midpoint, y: 0 },\n { x: width, y: 0 },\n // Right\n { x: width, y: -height / 3 },\n { x: width + 2 * padding2, y: -height / 2 },\n { x: width, y: -2 * height / 3 },\n { x: width, y: -height },\n // Top\n { x: width - midpoint, y: -height },\n { x: width / 2, y: -height - 2 * padding2 },\n { x: midpoint, y: -height },\n // Left\n { x: 0, y: -height },\n { x: 0, y: -2 * height / 3 },\n { x: -2 * padding2, y: -height / 2 },\n { x: 0, y: -height / 3 }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"left\") && directions.has(\"up\")) {\n return [\n { x: midpoint, y: 0 },\n { x: width - midpoint, y: 0 },\n { x: width, y: -height / 2 },\n { x: width - midpoint, y: -height },\n { x: midpoint, y: -height },\n { x: 0, y: -height / 2 }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"left\") && directions.has(\"down\")) {\n return [\n { x: 0, y: 0 },\n { x: midpoint, y: -height },\n { x: width - midpoint, y: -height },\n { x: width, y: 0 }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"up\") && directions.has(\"down\")) {\n return [\n { x: 0, y: 0 },\n { x: width, y: -midpoint },\n { x: width, y: -height + midpoint },\n { x: 0, y: -height }\n ];\n }\n if (directions.has(\"left\") && directions.has(\"up\") && directions.has(\"down\")) {\n return [\n { x: width, y: 0 },\n { x: 0, y: -midpoint },\n { x: 0, y: -height + midpoint },\n { x: width, y: -height }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"left\")) {\n return [\n { x: midpoint, y: 0 },\n { x: midpoint, y: -padding2 },\n { x: width - midpoint, y: -padding2 },\n { x: width - midpoint, y: 0 },\n { x: width, y: -height / 2 },\n { x: width - midpoint, y: -height },\n { x: width - midpoint, y: -height + padding2 },\n { x: midpoint, y: -height + padding2 },\n { x: midpoint, y: -height },\n { x: 0, y: -height / 2 }\n ];\n }\n if (directions.has(\"up\") && directions.has(\"down\")) {\n return [\n // Bottom center\n { x: width / 2, y: 0 },\n // Left pont of bottom arrow\n { x: 0, y: -padding2 },\n { x: midpoint, y: -padding2 },\n // Left top over vertical section\n { x: midpoint, y: -height + padding2 },\n { x: 0, y: -height + padding2 },\n // Top of arrow\n { x: width / 2, y: -height },\n { x: width, y: -height + padding2 },\n // Top of right vertical bar\n { x: width - midpoint, y: -height + padding2 },\n { x: width - midpoint, y: -padding2 },\n { x: width, y: -padding2 }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"up\")) {\n return [\n { x: 0, y: 0 },\n { x: width, y: -midpoint },\n { x: 0, y: -height }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"down\")) {\n return [\n { x: 0, y: 0 },\n { x: width, y: 0 },\n { x: 0, y: -height }\n ];\n }\n if (directions.has(\"left\") && directions.has(\"up\")) {\n return [\n { x: width, y: 0 },\n { x: 0, y: -midpoint },\n { x: width, y: -height }\n ];\n }\n if (directions.has(\"left\") && directions.has(\"down\")) {\n return [\n { x: width, y: 0 },\n { x: 0, y: 0 },\n { x: width, y: -height }\n ];\n }\n if (directions.has(\"right\")) {\n return [\n { x: midpoint, y: -padding2 },\n { x: midpoint, y: -padding2 },\n { x: width - midpoint, y: -padding2 },\n { x: width - midpoint, y: 0 },\n { x: width, y: -height / 2 },\n { x: width - midpoint, y: -height },\n { x: width - midpoint, y: -height + padding2 },\n // top left corner of arrow\n { x: midpoint, y: -height + padding2 },\n { x: midpoint, y: -height + padding2 }\n ];\n }\n if (directions.has(\"left\")) {\n return [\n { x: midpoint, y: 0 },\n { x: midpoint, y: -padding2 },\n // Two points, the right corners\n { x: width - midpoint, y: -padding2 },\n { x: width - midpoint, y: -height + padding2 },\n { x: midpoint, y: -height + padding2 },\n { x: midpoint, y: -height },\n { x: 0, y: -height / 2 }\n ];\n }\n if (directions.has(\"up\")) {\n return [\n // Bottom center\n { x: midpoint, y: -padding2 },\n // Left top over vertical section\n { x: midpoint, y: -height + padding2 },\n { x: 0, y: -height + padding2 },\n // Top of arrow\n { x: width / 2, y: -height },\n { x: width, y: -height + padding2 },\n // Top of right vertical bar\n { x: width - midpoint, y: -height + padding2 },\n { x: width - midpoint, y: -padding2 }\n ];\n }\n if (directions.has(\"down\")) {\n return [\n // Bottom center\n { x: width / 2, y: 0 },\n // Left pont of bottom arrow\n { x: 0, y: -padding2 },\n { x: midpoint, y: -padding2 },\n // Left top over vertical section\n { x: midpoint, y: -height + padding2 },\n { x: width - midpoint, y: -height + padding2 },\n { x: width - midpoint, y: -padding2 },\n { x: width, y: -padding2 }\n ];\n }\n return [{ x: 0, y: 0 }];\n}, \"getArrowPoints\");\n\n// src/dagre-wrapper/intersect/intersect-node.js\nfunction intersectNode(node, point2) {\n return node.intersect(point2);\n}\n__name(intersectNode, \"intersectNode\");\nvar intersect_node_default = intersectNode;\n\n// src/dagre-wrapper/intersect/intersect-ellipse.js\nfunction intersectEllipse(node, rx, ry, point2) {\n var cx = node.x;\n var cy = node.y;\n var px = cx - point2.x;\n var py = cy - point2.y;\n var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);\n var dx = Math.abs(rx * ry * px / det);\n if (point2.x < cx) {\n dx = -dx;\n }\n var dy = Math.abs(rx * ry * py / det);\n if (point2.y < cy) {\n dy = -dy;\n }\n return { x: cx + dx, y: cy + dy };\n}\n__name(intersectEllipse, \"intersectEllipse\");\nvar intersect_ellipse_default = intersectEllipse;\n\n// src/dagre-wrapper/intersect/intersect-circle.js\nfunction intersectCircle(node, rx, point2) {\n return intersect_ellipse_default(node, rx, rx, point2);\n}\n__name(intersectCircle, \"intersectCircle\");\nvar intersect_circle_default = intersectCircle;\n\n// src/dagre-wrapper/intersect/intersect-line.js\nfunction intersectLine(p1, p2, q1, q2) {\n var a1, a2, b1, b2, c1, c2;\n var r1, r2, r3, r4;\n var denom, offset, num;\n var x, y;\n a1 = p2.y - p1.y;\n b1 = p1.x - p2.x;\n c1 = p2.x * p1.y - p1.x * p2.y;\n r3 = a1 * q1.x + b1 * q1.y + c1;\n r4 = a1 * q2.x + b1 * q2.y + c1;\n if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {\n return;\n }\n a2 = q2.y - q1.y;\n b2 = q1.x - q2.x;\n c2 = q2.x * q1.y - q1.x * q2.y;\n r1 = a2 * p1.x + b2 * p1.y + c2;\n r2 = a2 * p2.x + b2 * p2.y + c2;\n if (r1 !== 0 && r2 !== 0 && sameSign(r1, r2)) {\n return;\n }\n denom = a1 * b2 - a2 * b1;\n if (denom === 0) {\n return;\n }\n offset = Math.abs(denom / 2);\n num = b1 * c2 - b2 * c1;\n x = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n num = a2 * c1 - a1 * c2;\n y = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n return { x, y };\n}\n__name(intersectLine, \"intersectLine\");\nfunction sameSign(r1, r2) {\n return r1 * r2 > 0;\n}\n__name(sameSign, \"sameSign\");\nvar intersect_line_default = intersectLine;\n\n// src/dagre-wrapper/intersect/intersect-polygon.js\nvar intersect_polygon_default = intersectPolygon;\nfunction intersectPolygon(node, polyPoints, point2) {\n var x1 = node.x;\n var y1 = node.y;\n var intersections = [];\n var minX = Number.POSITIVE_INFINITY;\n var minY = Number.POSITIVE_INFINITY;\n if (typeof polyPoints.forEach === \"function\") {\n polyPoints.forEach(function(entry) {\n minX = Math.min(minX, entry.x);\n minY = Math.min(minY, entry.y);\n });\n } else {\n minX = Math.min(minX, polyPoints.x);\n minY = Math.min(minY, polyPoints.y);\n }\n var left = x1 - node.width / 2 - minX;\n var top = y1 - node.height / 2 - minY;\n for (var i = 0; i < polyPoints.length; i++) {\n var p1 = polyPoints[i];\n var p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];\n var intersect = intersect_line_default(\n node,\n point2,\n { x: left + p1.x, y: top + p1.y },\n { x: left + p2.x, y: top + p2.y }\n );\n if (intersect) {\n intersections.push(intersect);\n }\n }\n if (!intersections.length) {\n return node;\n }\n if (intersections.length > 1) {\n intersections.sort(function(p, q) {\n var pdx = p.x - point2.x;\n var pdy = p.y - point2.y;\n var distp = Math.sqrt(pdx * pdx + pdy * pdy);\n var qdx = q.x - point2.x;\n var qdy = q.y - point2.y;\n var distq = Math.sqrt(qdx * qdx + qdy * qdy);\n return distp < distq ? -1 : distp === distq ? 0 : 1;\n });\n }\n return intersections[0];\n}\n__name(intersectPolygon, \"intersectPolygon\");\n\n// src/dagre-wrapper/intersect/intersect-rect.js\nvar intersectRect = /* @__PURE__ */ __name((node, point2) => {\n var x = node.x;\n var y = node.y;\n var dx = point2.x - x;\n var dy = point2.y - y;\n var w = node.width / 2;\n var h = node.height / 2;\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n if (dy < 0) {\n h = -h;\n }\n sx = dy === 0 ? 0 : h * dx / dy;\n sy = h;\n } else {\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = dx === 0 ? 0 : w * dy / dx;\n }\n return { x: x + sx, y: y + sy };\n}, \"intersectRect\");\nvar intersect_rect_default = intersectRect;\n\n// src/dagre-wrapper/intersect/index.js\nvar intersect_default = {\n node: intersect_node_default,\n circle: intersect_circle_default,\n ellipse: intersect_ellipse_default,\n polygon: intersect_polygon_default,\n rect: intersect_rect_default\n};\n\n// src/dagre-wrapper/shapes/util.js\nimport { select as select3 } from \"d3\";\nvar labelHelper = /* @__PURE__ */ __name(async (parent, node, _classes, isNode) => {\n const config2 = getConfig2();\n let classes2;\n const useHtmlLabels = node.useHtmlLabels || evaluate(config2.flowchart.htmlLabels);\n if (!_classes) {\n classes2 = \"node default\";\n } else {\n classes2 = _classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes2).attr(\"id\", node.domId || node.id);\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", node.labelStyle);\n let labelText;\n if (node.labelText === void 0) {\n labelText = \"\";\n } else {\n labelText = typeof node.labelText === \"string\" ? node.labelText : node.labelText[0];\n }\n const textNode = label.node();\n let text;\n if (node.labelType === \"markdown\") {\n text = createText(\n label,\n sanitizeText(decodeEntities(labelText), config2),\n {\n useHtmlLabels,\n width: node.width || config2.flowchart.wrappingWidth,\n classes: \"markdown-node-label\"\n },\n config2\n );\n } else {\n text = textNode.appendChild(\n createLabel_default(sanitizeText(decodeEntities(labelText), config2), node.labelStyle, false, isNode)\n );\n }\n let bbox = text.getBBox();\n const halfPadding = node.padding / 2;\n if (evaluate(config2.flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select3(text);\n const images = div.getElementsByTagName(\"img\");\n if (images) {\n const noImgText = labelText.replace(/]*>/g, \"\").trim() === \"\";\n await Promise.all(\n [...images].map(\n (img) => new Promise((res) => {\n function setupImage() {\n img.style.display = \"flex\";\n img.style.flexDirection = \"column\";\n if (noImgText) {\n const bodyFontSize = config2.fontSize ? config2.fontSize : window.getComputedStyle(document.body).fontSize;\n const enlargingFactor = 5;\n const width = parseInt(bodyFontSize, 10) * enlargingFactor + \"px\";\n img.style.minWidth = width;\n img.style.maxWidth = width;\n } else {\n img.style.width = \"100%\";\n }\n res(img);\n }\n __name(setupImage, \"setupImage\");\n setTimeout(() => {\n if (img.complete) {\n setupImage();\n }\n });\n img.addEventListener(\"error\", setupImage);\n img.addEventListener(\"load\", setupImage);\n })\n )\n );\n }\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (useHtmlLabels) {\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n } else {\n label.attr(\"transform\", \"translate(0, \" + -bbox.height / 2 + \")\");\n }\n if (node.centerLabel) {\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n }\n label.insert(\"rect\", \":first-child\");\n return { shapeSvg, bbox, halfPadding, label };\n}, \"labelHelper\");\nvar updateNodeBounds = /* @__PURE__ */ __name((node, element) => {\n const bbox = element.node().getBBox();\n node.width = bbox.width;\n node.height = bbox.height;\n}, \"updateNodeBounds\");\nfunction insertPolygonShape(parent, w, h, points) {\n return parent.insert(\"polygon\", \":first-child\").attr(\n \"points\",\n points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")\n ).attr(\"class\", \"label-container\").attr(\"transform\", \"translate(\" + -w / 2 + \",\" + h / 2 + \")\");\n}\n__name(insertPolygonShape, \"insertPolygonShape\");\n\n// src/dagre-wrapper/shapes/note.js\nvar note = /* @__PURE__ */ __name(async (parent, node) => {\n const useHtmlLabels = node.useHtmlLabels || getConfig2().flowchart.htmlLabels;\n if (!useHtmlLabels) {\n node.centerLabel = true;\n }\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n \"node \" + node.classes,\n true\n );\n log.info(\"Classes = \", node.classes);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"note\");\nvar note_default = note;\n\n// src/dagre-wrapper/nodes.js\nvar formatClass = /* @__PURE__ */ __name((str) => {\n if (str) {\n return \" \" + str;\n }\n return \"\";\n}, \"formatClass\");\nvar getClassesFromNode = /* @__PURE__ */ __name((node, otherClasses) => {\n return `${otherClasses ? otherClasses : \"node default\"}${formatClass(node.classes)} ${formatClass(\n node.class\n )}`;\n}, \"getClassesFromNode\");\nvar question = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const s = w + h;\n const points = [\n { x: s / 2, y: 0 },\n { x: s, y: -s / 2 },\n { x: s / 2, y: -s },\n { x: 0, y: -s / 2 }\n ];\n log.info(\"Question main (Circle)\");\n const questionElem = insertPolygonShape(shapeSvg, s, s, points);\n questionElem.attr(\"style\", node.style);\n updateNodeBounds(node, questionElem);\n node.intersect = function(point2) {\n log.warn(\"Intersect called\");\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"question\");\nvar choice = /* @__PURE__ */ __name((parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const s = 28;\n const points = [\n { x: 0, y: s / 2 },\n { x: s / 2, y: 0 },\n { x: 0, y: -s / 2 },\n { x: -s / 2, y: 0 }\n ];\n const choice2 = shapeSvg.insert(\"polygon\", \":first-child\").attr(\n \"points\",\n points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")\n );\n choice2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 28).attr(\"height\", 28);\n node.width = 28;\n node.height = 28;\n node.intersect = function(point2) {\n return intersect_default.circle(node, 14, point2);\n };\n return shapeSvg;\n}, \"choice\");\nvar hexagon = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const f = 4;\n const h = bbox.height + node.padding;\n const m = h / f;\n const w = bbox.width + 2 * m + node.padding;\n const points = [\n { x: m, y: 0 },\n { x: w - m, y: 0 },\n { x: w, y: -h / 2 },\n { x: w - m, y: -h },\n { x: m, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const hex = insertPolygonShape(shapeSvg, w, h, points);\n hex.attr(\"style\", node.style);\n updateNodeBounds(node, hex);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"hexagon\");\nvar block_arrow = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, void 0, true);\n const f = 2;\n const h = bbox.height + 2 * node.padding;\n const m = h / f;\n const w = bbox.width + 2 * m + node.padding;\n const points = getArrowPoints(node.directions, bbox, node);\n const blockArrow = insertPolygonShape(shapeSvg, w, h, points);\n blockArrow.attr(\"style\", node.style);\n updateNodeBounds(node, blockArrow);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"block_arrow\");\nvar rect_left_inv_arrow = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -h / 2, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: -h / 2, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n node.width = w + h;\n node.height = h;\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"rect_left_inv_arrow\");\nvar lean_right = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, getClassesFromNode(node), true);\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -2 * h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + 2 * h / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"lean_right\");\nvar lean_left = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 2 * h / 6, y: 0 },\n { x: w + h / 6, y: 0 },\n { x: w - 2 * h / 6, y: -h },\n { x: -h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"lean_left\");\nvar trapezoid = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -2 * h / 6, y: 0 },\n { x: w + 2 * h / 6, y: 0 },\n { x: w - h / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"trapezoid\");\nvar inv_trapezoid = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + 2 * h / 6, y: -h },\n { x: -2 * h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"inv_trapezoid\");\nvar rect_right_inv_arrow = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w + h / 2, y: 0 },\n { x: w, y: -h / 2 },\n { x: w + h / 2, y: -h },\n { x: 0, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"rect_right_inv_arrow\");\nvar cylinder = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = bbox.height + ry + node.padding;\n const shape = \"M 0,\" + ry + \" a \" + rx + \",\" + ry + \" 0,0,0 \" + w + \" 0 a \" + rx + \",\" + ry + \" 0,0,0 \" + -w + \" 0 l 0,\" + h + \" a \" + rx + \",\" + ry + \" 0,0,0 \" + w + \" 0 l 0,\" + -h;\n const el = shapeSvg.attr(\"label-offset-y\", ry).insert(\"path\", \":first-child\").attr(\"style\", node.style).attr(\"d\", shape).attr(\"transform\", \"translate(\" + -w / 2 + \",\" + -(h / 2 + ry) + \")\");\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n const pos = intersect_default.rect(node, point2);\n const x = pos.x - node.x;\n if (rx != 0 && (Math.abs(x) < node.width / 2 || Math.abs(x) == node.width / 2 && Math.abs(pos.y - node.y) > node.height / 2 - ry)) {\n let y = ry * ry * (1 - x * x / (rx * rx));\n if (y != 0) {\n y = Math.sqrt(y);\n }\n y = ry - y;\n if (point2.y - node.y > 0) {\n y = -y;\n }\n pos.y += y;\n }\n return pos;\n };\n return shapeSvg;\n}, \"cylinder\");\nvar rect = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n \"node \" + node.classes + \" \" + node.class,\n true\n );\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = node.positioned ? node.width : bbox.width + node.padding;\n const totalHeight = node.positioned ? node.height : bbox.height + node.padding;\n const x = node.positioned ? -totalWidth / 2 : -bbox.width / 2 - halfPadding;\n const y = node.positioned ? -totalHeight / 2 : -bbox.height / 2 - halfPadding;\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"rect\");\nvar composite = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n \"node \" + node.classes,\n true\n );\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = node.positioned ? node.width : bbox.width + node.padding;\n const totalHeight = node.positioned ? node.height : bbox.height + node.padding;\n const x = node.positioned ? -totalWidth / 2 : -bbox.width / 2 - halfPadding;\n const y = node.positioned ? -totalHeight / 2 : -bbox.height / 2 - halfPadding;\n rect2.attr(\"class\", \"basic cluster composite label-container\").attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"composite\");\nvar labelRect = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg } = await labelHelper(parent, node, \"label\", true);\n log.trace(\"Classes = \", node.class);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = 0;\n const totalHeight = 0;\n rect2.attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n shapeSvg.attr(\"class\", \"label edgeLabel\");\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"labelRect\");\nfunction applyNodePropertyBorders(rect2, borders, totalWidth, totalHeight) {\n const strokeDashArray = [];\n const addBorder = /* @__PURE__ */ __name((length) => {\n strokeDashArray.push(length, 0);\n }, \"addBorder\");\n const skipBorder = /* @__PURE__ */ __name((length) => {\n strokeDashArray.push(0, length);\n }, \"skipBorder\");\n if (borders.includes(\"t\")) {\n log.debug(\"add top border\");\n addBorder(totalWidth);\n } else {\n skipBorder(totalWidth);\n }\n if (borders.includes(\"r\")) {\n log.debug(\"add right border\");\n addBorder(totalHeight);\n } else {\n skipBorder(totalHeight);\n }\n if (borders.includes(\"b\")) {\n log.debug(\"add bottom border\");\n addBorder(totalWidth);\n } else {\n skipBorder(totalWidth);\n }\n if (borders.includes(\"l\")) {\n log.debug(\"add left border\");\n addBorder(totalHeight);\n } else {\n skipBorder(totalHeight);\n }\n rect2.attr(\"stroke-dasharray\", strokeDashArray.join(\" \"));\n}\n__name(applyNodePropertyBorders, \"applyNodePropertyBorders\");\nvar rectWithTitle = /* @__PURE__ */ __name((parent, node) => {\n let classes2;\n if (!node.classes) {\n classes2 = \"node default\";\n } else {\n classes2 = \"node \" + node.classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes2).attr(\"id\", node.domId || node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const innerLine = shapeSvg.insert(\"line\");\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"label\");\n const text2 = node.labelText.flat ? node.labelText.flat() : node.labelText;\n let title = \"\";\n if (typeof text2 === \"object\") {\n title = text2[0];\n } else {\n title = text2;\n }\n log.info(\"Label text abc79\", title, text2, typeof text2 === \"object\");\n const text = label.node().appendChild(createLabel_default(title, node.labelStyle, true, true));\n let bbox = { width: 0, height: 0 };\n if (evaluate(getConfig2().flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select4(text);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n log.info(\"Text 2\", text2);\n const textRows = text2.slice(1, text2.length);\n let titleBox = text.getBBox();\n const descr = label.node().appendChild(\n createLabel_default(textRows.join ? textRows.join(\"
\") : textRows, node.labelStyle, true, true)\n );\n if (evaluate(getConfig2().flowchart.htmlLabels)) {\n const div = descr.children[0];\n const dv = select4(descr);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n const halfPadding = node.padding / 2;\n select4(descr).attr(\n \"transform\",\n \"translate( \" + // (titleBox.width - bbox.width) / 2 +\n (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) + \", \" + (titleBox.height + halfPadding + 5) + \")\"\n );\n select4(text).attr(\n \"transform\",\n \"translate( \" + // (titleBox.width - bbox.width) / 2 +\n (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) + \", 0)\"\n );\n bbox = label.node().getBBox();\n label.attr(\n \"transform\",\n \"translate(\" + -bbox.width / 2 + \", \" + (-bbox.height / 2 - halfPadding + 3) + \")\"\n );\n rect2.attr(\"class\", \"outer title-state\").attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n innerLine.attr(\"class\", \"divider\").attr(\"x1\", -bbox.width / 2 - halfPadding).attr(\"x2\", bbox.width / 2 + halfPadding).attr(\"y1\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding).attr(\"y2\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"rectWithTitle\");\nvar stadium = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const h = bbox.height + node.padding;\n const w = bbox.width + h / 4 + node.padding;\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\").attr(\"style\", node.style).attr(\"rx\", h / 2).attr(\"ry\", h / 2).attr(\"x\", -w / 2).attr(\"y\", -h / 2).attr(\"width\", w).attr(\"height\", h);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"stadium\");\nvar circle2 = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const circle3 = shapeSvg.insert(\"circle\", \":first-child\");\n circle3.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n log.info(\"Circle main\");\n updateNodeBounds(node, circle3);\n node.intersect = function(point2) {\n log.info(\"Circle intersect\", node, bbox.width / 2 + halfPadding, point2);\n return intersect_default.circle(node, bbox.width / 2 + halfPadding, point2);\n };\n return shapeSvg;\n}, \"circle\");\nvar doublecircle = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const gap = 5;\n const circleGroup = shapeSvg.insert(\"g\", \":first-child\");\n const outerCircle = circleGroup.insert(\"circle\");\n const innerCircle = circleGroup.insert(\"circle\");\n circleGroup.attr(\"class\", node.class);\n outerCircle.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding + gap).attr(\"width\", bbox.width + node.padding + gap * 2).attr(\"height\", bbox.height + node.padding + gap * 2);\n innerCircle.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n log.info(\"DoubleCircle main\");\n updateNodeBounds(node, outerCircle);\n node.intersect = function(point2) {\n log.info(\"DoubleCircle intersect\", node, bbox.width / 2 + halfPadding + gap, point2);\n return intersect_default.circle(node, bbox.width / 2 + halfPadding + gap, point2);\n };\n return shapeSvg;\n}, \"doublecircle\");\nvar subroutine = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h },\n { x: 0, y: 0 },\n { x: -8, y: 0 },\n { x: w + 8, y: 0 },\n { x: w + 8, y: -h },\n { x: -8, y: -h },\n { x: -8, y: 0 }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"subroutine\");\nvar start = /* @__PURE__ */ __name((parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const circle3 = shapeSvg.insert(\"circle\", \":first-child\");\n circle3.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n updateNodeBounds(node, circle3);\n node.intersect = function(point2) {\n return intersect_default.circle(node, 7, point2);\n };\n return shapeSvg;\n}, \"start\");\nvar forkJoin = /* @__PURE__ */ __name((parent, node, dir) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n let width = 70;\n let height = 10;\n if (dir === \"LR\") {\n width = 10;\n height = 70;\n }\n const shape = shapeSvg.append(\"rect\").attr(\"x\", -1 * width / 2).attr(\"y\", -1 * height / 2).attr(\"width\", width).attr(\"height\", height).attr(\"class\", \"fork-join\");\n updateNodeBounds(node, shape);\n node.height = node.height + node.padding / 2;\n node.width = node.width + node.padding / 2;\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"forkJoin\");\nvar end = /* @__PURE__ */ __name((parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const innerCircle = shapeSvg.insert(\"circle\", \":first-child\");\n const circle3 = shapeSvg.insert(\"circle\", \":first-child\");\n circle3.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n innerCircle.attr(\"class\", \"state-end\").attr(\"r\", 5).attr(\"width\", 10).attr(\"height\", 10);\n updateNodeBounds(node, circle3);\n node.intersect = function(point2) {\n return intersect_default.circle(node, 7, point2);\n };\n return shapeSvg;\n}, \"end\");\nvar class_box = /* @__PURE__ */ __name((parent, node) => {\n const halfPadding = node.padding / 2;\n const rowPadding = 4;\n const lineHeight = 8;\n let classes2;\n if (!node.classes) {\n classes2 = \"node default\";\n } else {\n classes2 = \"node \" + node.classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes2).attr(\"id\", node.domId || node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const topLine = shapeSvg.insert(\"line\");\n const bottomLine = shapeSvg.insert(\"line\");\n let maxWidth = 0;\n let maxHeight = rowPadding;\n const labelContainer = shapeSvg.insert(\"g\").attr(\"class\", \"label\");\n let verticalPos = 0;\n const hasInterface = node.classData.annotations?.[0];\n const interfaceLabelText = node.classData.annotations[0] ? \"\\xAB\" + node.classData.annotations[0] + \"\\xBB\" : \"\";\n const interfaceLabel = labelContainer.node().appendChild(createLabel_default(interfaceLabelText, node.labelStyle, true, true));\n let interfaceBBox = interfaceLabel.getBBox();\n if (evaluate(getConfig2().flowchart.htmlLabels)) {\n const div = interfaceLabel.children[0];\n const dv = select4(interfaceLabel);\n interfaceBBox = div.getBoundingClientRect();\n dv.attr(\"width\", interfaceBBox.width);\n dv.attr(\"height\", interfaceBBox.height);\n }\n if (node.classData.annotations[0]) {\n maxHeight += interfaceBBox.height + rowPadding;\n maxWidth += interfaceBBox.width;\n }\n let classTitleString = node.classData.label;\n if (node.classData.type !== void 0 && node.classData.type !== \"\") {\n if (getConfig2().flowchart.htmlLabels) {\n classTitleString += \"<\" + node.classData.type + \">\";\n } else {\n classTitleString += \"<\" + node.classData.type + \">\";\n }\n }\n const classTitleLabel = labelContainer.node().appendChild(createLabel_default(classTitleString, node.labelStyle, true, true));\n select4(classTitleLabel).attr(\"class\", \"classTitle\");\n let classTitleBBox = classTitleLabel.getBBox();\n if (evaluate(getConfig2().flowchart.htmlLabels)) {\n const div = classTitleLabel.children[0];\n const dv = select4(classTitleLabel);\n classTitleBBox = div.getBoundingClientRect();\n dv.attr(\"width\", classTitleBBox.width);\n dv.attr(\"height\", classTitleBBox.height);\n }\n maxHeight += classTitleBBox.height + rowPadding;\n if (classTitleBBox.width > maxWidth) {\n maxWidth = classTitleBBox.width;\n }\n const classAttributes = [];\n node.classData.members.forEach((member) => {\n const parsedInfo = member.getDisplayDetails();\n let parsedText = parsedInfo.displayText;\n if (getConfig2().flowchart.htmlLabels) {\n parsedText = parsedText.replace(/
+`:"'+(s?r:m(r,!0))+`
+`}blockquote({tokens:e}){return`"+(s?r:m(r,!0))+`
+${this.parser.parse(e)}
+`}html({text:e}){return e}heading({tokens:e,depth:t}){return`
+`}list(e){let t=e.ordered,s=e.start,n="";for(let l=0;l
+
+`+t+`
+`+n+`
+`}tablerow({text:e}){return`
+${e}
+`}tablecell(e){let t=this.parser.parseInline(e.tokens),s=e.header?"th":"td";return(e.align?`<${s} align="${e.align}">`:`<${s}>`)+t+`${s}>
+`}strong({tokens:e}){return`${this.parser.parseInline(e)}`}em({tokens:e}){return`${this.parser.parseInline(e)}`}codespan({text:e}){return`${e}
`}br(e){return"
"}del({tokens:e}){return`${this.parser.parseInline(e)}`}link({href:e,title:t,tokens:s}){let n=this.parser.parseInline(s),r=pe(e);if(r===null)return n;e=r;let i='"+n+"",i}image({href:e,title:t,text:s}){let n=pe(e);if(n===null)return s;e=n;let r=`",r}text(e){return"tokens"in e&&e.tokens?this.parser.parseInline(e.tokens):e.text}},E=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return""+e}image({text:e}){return""+e}br(){return""}},T=class a{options;renderer;textRenderer;constructor(e){this.options=e||R,this.options.renderer=this.options.renderer||new _,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new E}static parse(e,t){return new a(t).parse(e)}static parseInline(e,t){return new a(t).parseInline(e)}parse(e,t=!0){let s="";for(let n=0;n"+m(s.message+"",!0)+"
";return t?Promise.resolve(n):n}if(t)return Promise.reject(s);throw s}}},$=new H;function d(a,e){return $.parse(a,e)}d.options=d.setOptions=function(a){return $.setOptions(a),d.defaults=$.defaults,ge(d.defaults),d};d.getDefaults=N;d.defaults=R;d.use=function(...a){return $.use(...a),d.defaults=$.defaults,ge(d.defaults),d};d.walkTokens=function(a,e){return $.walkTokens(a,e)};d.parseInline=$.parseInline;d.Parser=T;d.parser=T.parse;d.Renderer=_;d.TextRenderer=E;d.Lexer=y;d.lexer=y.lex;d.Tokenizer=S;d.Hooks=z;d.parse=d;var kt=d.options,xt=d.setOptions,mt=d.use,bt=d.walkTokens,wt=d.parseInline;var yt=T.parse,Tt=y.lex;function Re(a,{markdownAutoWrap:e}){let s=a.replace(/
/g,`
+`).replace(/\n{2,}/g,`
+`),n=ae(s);return e===!1?n.replace(/ /g," "):n}x(Re,"preprocessMarkdown");function ze(a,e={}){let t=Re(a,e),s=d.lexer(t),n=[[]],r=0;function i(l,o="normal"){l.type==="text"?l.text.split(`
+`).forEach((c,h)=>{h!==0&&(r++,n.push([])),c.split(" ").forEach(u=>{u=u.replace(/'/g,"'"),u&&n[r].push({content:u,type:o})})}):l.type==="strong"||l.type==="em"?l.tokens.forEach(p=>{i(p,l.type)}):l.type==="html"&&n[r].push({content:l.text,type:"normal"})}return x(i,"processNode"),s.forEach(l=>{l.type==="paragraph"?l.tokens?.forEach(o=>{i(o)}):l.type==="html"&&n[r].push({content:l.text,type:"normal"})}),n}x(ze,"markdownToLines");function Se(a,{markdownAutoWrap:e}={}){let t=d.lexer(a);function s(n){return n.type==="text"?e===!1?n.text.replace(/\n */g,"
").replace(/ /g," "):n.text.replace(/\n */g,"
"):n.type==="strong"?`${n.tokens?.map(s).join("")}`:n.type==="em"?`${n.tokens?.map(s).join("")}`:n.type==="paragraph"?`
/g,"
"),h=ze(c.replace("
","
"),p),u=ve(l,a,h,e?o:!1);if(i){/stroke:/.exec(t)&&(t=t.replace("stroke:","lineColor:"));let f=t.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:");B(u).attr("style",f)}else{let f=t.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/background:/g,"fill:");B(u).select("rect").attr("style",f.replace(/background:/g,"fill:"));let g=t.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:");B(u).select("text").attr("style",g)}return u}},"createText");export{ae as a,gt as b,Ce as c,At as d};
+//# sourceMappingURL=chunk-24EG6CQZ.min.js.map
diff --git a/docs/public/chunk-24EG6CQZ.min.js.map b/docs/public/chunk-24EG6CQZ.min.js.map
new file mode 100644
index 00000000000..c04e8653e0a
--- /dev/null
+++ b/docs/public/chunk-24EG6CQZ.min.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": ["../../node_modules/ts-dedent/src/index.ts", "../../node_modules/marked/src/defaults.ts", "../../node_modules/marked/src/helpers.ts", "../../node_modules/marked/src/Tokenizer.ts", "../../node_modules/marked/src/rules.ts", "../../node_modules/marked/src/Lexer.ts", "../../node_modules/marked/src/Renderer.ts", "../../node_modules/marked/src/TextRenderer.ts", "../../node_modules/marked/src/Parser.ts", "../../node_modules/marked/src/Hooks.ts", "../../node_modules/marked/src/Instance.ts", "../../node_modules/marked/src/marked.ts", "../../node_modules/mermaid/dist/chunks/mermaid.core/chunk-U6O4IJP6.mjs"],
+ "sourcesContent": ["export function dedent(\n templ: TemplateStringsArray | string,\n ...values: unknown[]\n): string {\n let strings = Array.from(typeof templ === 'string' ? [templ] : templ);\n\n // 1. Remove trailing whitespace.\n strings[strings.length - 1] = strings[strings.length - 1].replace(\n /\\r?\\n([\\t ]*)$/,\n '',\n );\n\n // 2. Find all line breaks to determine the highest common indentation level.\n const indentLengths = strings.reduce((arr, str) => {\n const matches = str.match(/\\n([\\t ]+|(?!\\s).)/g);\n if (matches) {\n return arr.concat(\n matches.map((match) => match.match(/[\\t ]/g)?.length ?? 0),\n );\n }\n return arr;\n },
\\n';\n }\n return ''\n + (escaped ? code : escape(code, true))\n + '
\\n';\n }\n blockquote({ tokens }) {\n const body = this.parser.parse(tokens);\n return `'\n + (escaped ? code : escape(code, true))\n + '
\\n${body}
\\n`;\n }\n html({ text }) {\n return text;\n }\n heading({ tokens, depth }) {\n return `
\\n';\n }\n list(token) {\n const ordered = token.ordered;\n const start = token.start;\n let body = '';\n for (let j = 0; j < token.items.length; j++) {\n const item = token.items[j];\n body += this.listitem(item);\n }\n const type = ordered ? 'ol' : 'ul';\n const startAttr = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startAttr + '>\\n' + body + '' + type + '>\\n';\n }\n listitem(item) {\n let itemBody = '';\n if (item.task) {\n const checkbox = this.checkbox({ checked: !!item.checked });\n if (item.loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n }\n else {\n item.tokens.unshift({\n type: 'text',\n raw: checkbox + ' ',\n text: checkbox + ' ',\n });\n }\n }\n else {\n itemBody += checkbox + ' ';\n }\n }\n itemBody += this.parser.parse(item.tokens, !!item.loose);\n return `\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
\\n';\n }\n tablerow({ text }) {\n return `\\n${text} \\n`;\n }\n tablecell(token) {\n const content = this.parser.parseInline(token.tokens);\n const type = token.header ? 'th' : 'td';\n const tag = token.align\n ? `<${type} align=\"${token.align}\">`\n : `<${type}>`;\n return tag + content + `${type}>\\n`;\n }\n /**\n * span level renderer\n */\n strong({ tokens }) {\n return `${this.parser.parseInline(tokens)}`;\n }\n em({ tokens }) {\n return `${this.parser.parseInline(tokens)}`;\n }\n codespan({ text }) {\n return `${text}
`;\n }\n br(token) {\n return '
';\n }\n del({ tokens }) {\n return `${this.parser.parseInline(tokens)}`;\n }\n link({ href, title, tokens }) {\n const text = this.parser.parseInline(tokens);\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = '' + text + '';\n return out;\n }\n image({ href, title, text }) {\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = `';\n return out;\n }\n text(token) {\n return 'tokens' in token && token.tokens ? this.parser.parseInline(token.tokens) : token.text;\n }\n}\n", "/**\n * TextRenderer\n * returns only the textual part of the token\n */\nexport class _TextRenderer {\n // no need for block level renderers\n strong({ text }) {\n return text;\n }\n em({ text }) {\n return text;\n }\n codespan({ text }) {\n return text;\n }\n del({ text }) {\n return text;\n }\n html({ text }) {\n return text;\n }\n text({ text }) {\n return text;\n }\n link({ text }) {\n return '' + text;\n }\n image({ text }) {\n return '' + text;\n }\n br() {\n return '';\n }\n}\n", "import { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _defaults } from './defaults.ts';\n/**\n * Parsing & Compiling\n */\nexport class _Parser {\n options;\n renderer;\n textRenderer;\n constructor(options) {\n this.options = options || _defaults;\n this.options.renderer = this.options.renderer || new _Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.renderer.parser = this;\n this.textRenderer = new _TextRenderer();\n }\n /**\n * Static Parse Method\n */\n static parse(tokens, options) {\n const parser = new _Parser(options);\n return parser.parse(tokens);\n }\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens, options) {\n const parser = new _Parser(options);\n return parser.parseInline(tokens);\n }\n /**\n * Parse Loop\n */\n parse(tokens, top = true) {\n let out = '';\n for (let i = 0; i < tokens.length; i++) {\n const anyToken = tokens[i];\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[anyToken.type]) {\n const genericToken = anyToken;\n const ret = this.options.extensions.renderers[genericToken.type].call({ parser: this }, genericToken);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(genericToken.type)) {\n out += ret || '';\n continue;\n }\n }\n const token = anyToken;\n switch (token.type) {\n case 'space': {\n out += this.renderer.space(token);\n continue;\n }\n case 'hr': {\n out += this.renderer.hr(token);\n continue;\n }\n case 'heading': {\n out += this.renderer.heading(token);\n continue;\n }\n case 'code': {\n out += this.renderer.code(token);\n continue;\n }\n case 'table': {\n out += this.renderer.table(token);\n continue;\n }\n case 'blockquote': {\n out += this.renderer.blockquote(token);\n continue;\n }\n case 'list': {\n out += this.renderer.list(token);\n continue;\n }\n case 'html': {\n out += this.renderer.html(token);\n continue;\n }\n case 'paragraph': {\n out += this.renderer.paragraph(token);\n continue;\n }\n case 'text': {\n let textToken = token;\n let body = this.renderer.text(textToken);\n while (i + 1 < tokens.length && tokens[i + 1].type === 'text') {\n textToken = tokens[++i];\n body += '\\n' + this.renderer.text(textToken);\n }\n if (top) {\n out += this.renderer.paragraph({\n type: 'paragraph',\n raw: body,\n text: body,\n tokens: [{ type: 'text', raw: body, text: body }],\n });\n }\n else {\n out += body;\n }\n continue;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n let out = '';\n for (let i = 0; i < tokens.length; i++) {\n const anyToken = tokens[i];\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[anyToken.type]) {\n const ret = this.options.extensions.renderers[anyToken.type].call({ parser: this }, anyToken);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(anyToken.type)) {\n out += ret || '';\n continue;\n }\n }\n const token = anyToken;\n switch (token.type) {\n case 'escape': {\n out += renderer.text(token);\n break;\n }\n case 'html': {\n out += renderer.html(token);\n break;\n }\n case 'link': {\n out += renderer.link(token);\n break;\n }\n case 'image': {\n out += renderer.image(token);\n break;\n }\n case 'strong': {\n out += renderer.strong(token);\n break;\n }\n case 'em': {\n out += renderer.em(token);\n break;\n }\n case 'codespan': {\n out += renderer.codespan(token);\n break;\n }\n case 'br': {\n out += renderer.br(token);\n break;\n }\n case 'del': {\n out += renderer.del(token);\n break;\n }\n case 'text': {\n out += renderer.text(token);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n", "import { _defaults } from './defaults.ts';\nexport class _Hooks {\n options;\n constructor(options) {\n this.options = options || _defaults;\n }\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess',\n 'processAllTokens',\n ]);\n /**\n * Process markdown before marked\n */\n preprocess(markdown) {\n return markdown;\n }\n /**\n * Process HTML after marked is finished\n */\n postprocess(html) {\n return html;\n }\n /**\n * Process all tokens before walk tokens\n */\n processAllTokens(tokens) {\n return tokens;\n }\n}\n", "import { _getDefaults } from './defaults.ts';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { escape, unescape, } from './helpers.ts';\nexport class Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n Parser = _Parser;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n Tokenizer = _Tokenizer;\n Hooks = _Hooks;\n constructor(...args) {\n this.use(...args);\n }\n /**\n * Run callback for every token\n */\n walkTokens(tokens, callback) {\n let values = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n const tableToken = token;\n for (const cell of tableToken.header) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n for (const row of tableToken.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n }\n break;\n }\n case 'list': {\n const listToken = token;\n values = values.concat(this.walkTokens(listToken.items, callback));\n break;\n }\n default: {\n const genericToken = token;\n if (this.defaults.extensions?.childTokens?.[genericToken.type]) {\n this.defaults.extensions.childTokens[genericToken.type].forEach((childTokens) => {\n const tokens = genericToken[childTokens].flat(Infinity);\n values = values.concat(this.walkTokens(tokens, callback));\n });\n }\n else if (genericToken.tokens) {\n values = values.concat(this.walkTokens(genericToken.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n use(...args) {\n const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} };\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack };\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function (...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n }\n else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n const extLevel = extensions[ext.level];\n if (extLevel) {\n extLevel.unshift(ext.tokenizer);\n }\n else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n }\n else {\n extensions.startBlock = [ext.start];\n }\n }\n else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n }\n else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n if (!(prop in renderer)) {\n throw new Error(`renderer '${prop}' does not exist`);\n }\n if (['options', 'parser'].includes(prop)) {\n // ignore options property\n continue;\n }\n const rendererProp = prop;\n let rendererFunc = pack.renderer[rendererProp];\n if (!pack.useNewRenderer) {\n // TODO: Remove this in next major version\n rendererFunc = this.#convertRendererFunction(rendererFunc, rendererProp, renderer);\n }\n const prevRenderer = renderer[rendererProp];\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererProp] = (...args) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n if (!(prop in tokenizer)) {\n throw new Error(`tokenizer '${prop}' does not exist`);\n }\n if (['options', 'rules', 'lexer'].includes(prop)) {\n // ignore options, rules, and lexer properties\n continue;\n }\n const tokenizerProp = prop;\n const tokenizerFunc = pack.tokenizer[tokenizerProp];\n const prevTokenizer = tokenizer[tokenizerProp];\n // Replace tokenizer with func to run extension, but fall back if false\n // @ts-expect-error cannot type tokenizer function dynamically\n tokenizer[tokenizerProp] = (...args) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n if (!(prop in hooks)) {\n throw new Error(`hook '${prop}' does not exist`);\n }\n if (prop === 'options') {\n // ignore options property\n continue;\n }\n const hooksProp = prop;\n const hooksFunc = pack.hooks[hooksProp];\n const prevHook = hooks[hooksProp];\n if (_Hooks.passThroughHooks.has(prop)) {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (arg) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n }\n else {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (...args) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n const packWalktokens = pack.walkTokens;\n opts.walkTokens = function (token) {\n let values = [];\n values.push(packWalktokens.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n this.defaults = { ...this.defaults, ...opts };\n });\n return this;\n }\n // TODO: Remove this in next major release\n #convertRendererFunction(func, prop, renderer) {\n switch (prop) {\n case 'heading':\n return function (token) {\n if (!token.type || token.type !== prop) {\n // @ts-ignore\n // eslint-disable-next-line prefer-rest-params\n return func.apply(this, arguments);\n }\n return func.call(this, renderer.parser.parseInline(token.tokens), token.depth, unescape(renderer.parser.parseInline(token.tokens, renderer.parser.textRenderer)));\n };\n case 'code':\n return function (token) {\n if (!token.type || token.type !== prop) {\n // @ts-ignore\n // eslint-disable-next-line prefer-rest-params\n return func.apply(this, arguments);\n }\n return func.call(this, token.text, token.lang, !!token.escaped);\n };\n case 'table':\n return function (token) {\n if (!token.type || token.type !== prop) {\n // @ts-ignore\n // eslint-disable-next-line prefer-rest-params\n return func.apply(this, arguments);\n }\n let header = '';\n // header\n let cell = '';\n for (let j = 0; j < token.header.length; j++) {\n cell += this.tablecell({\n text: token.header[j].text,\n tokens: token.header[j].tokens,\n header: true,\n align: token.align[j],\n });\n }\n header += this.tablerow({ text: cell });\n let body = '';\n for (let j = 0; j < token.rows.length; j++) {\n const row = token.rows[j];\n cell = '';\n for (let k = 0; k < row.length; k++) {\n cell += this.tablecell({\n text: row[k].text,\n tokens: row[k].tokens,\n header: false,\n align: token.align[k],\n });\n }\n body += this.tablerow({ text: cell });\n }\n return func.call(this, header, body);\n };\n case 'blockquote':\n return function (token) {\n if (!token.type || token.type !== prop) {\n // @ts-ignore\n // eslint-disable-next-line prefer-rest-params\n return func.apply(this, arguments);\n }\n const body = this.parser.parse(token.tokens);\n return func.call(this, body);\n };\n case 'list':\n return function (token) {\n if (!token.type || token.type !== prop) {\n // @ts-ignore\n // eslint-disable-next-line prefer-rest-params\n return func.apply(this, arguments);\n }\n const ordered = token.ordered;\n const start = token.start;\n const loose = token.loose;\n let body = '';\n for (let j = 0; j < token.items.length; j++) {\n const item = token.items[j];\n const checked = item.checked;\n const task = item.task;\n let itemBody = '';\n if (item.task) {\n const checkbox = this.checkbox({ checked: !!checked });\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n }\n else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox + ' ',\n });\n }\n }\n else {\n itemBody += checkbox + ' ';\n }\n }\n itemBody += this.parser.parse(item.tokens, loose);\n body += this.listitem({\n type: 'list_item',\n raw: itemBody,\n text: itemBody,\n task,\n checked: !!checked,\n loose,\n tokens: item.tokens,\n });\n }\n return func.call(this, body, ordered, start);\n };\n case 'html':\n return function (token) {\n if (!token.type || token.type !== prop) {\n // @ts-ignore\n // eslint-disable-next-line prefer-rest-params\n return func.apply(this, arguments);\n }\n return func.call(this, token.text, token.block);\n };\n case 'paragraph':\n return function (token) {\n if (!token.type || token.type !== prop) {\n // @ts-ignore\n // eslint-disable-next-line prefer-rest-params\n return func.apply(this, arguments);\n }\n return func.call(this, this.parser.parseInline(token.tokens));\n };\n case 'escape':\n return function (token) {\n if (!token.type || token.type !== prop) {\n // @ts-ignore\n // eslint-disable-next-line prefer-rest-params\n return func.apply(this, arguments);\n }\n return func.call(this, token.text);\n };\n case 'link':\n return function (token) {\n if (!token.type || token.type !== prop) {\n // @ts-ignore\n // eslint-disable-next-line prefer-rest-params\n return func.apply(this, arguments);\n }\n return func.call(this, token.href, token.title, this.parser.parseInline(token.tokens));\n };\n case 'image':\n return function (token) {\n if (!token.type || token.type !== prop) {\n // @ts-ignore\n // eslint-disable-next-line prefer-rest-params\n return func.apply(this, arguments);\n }\n return func.call(this, token.href, token.title, token.text);\n };\n case 'strong':\n return function (token) {\n if (!token.type || token.type !== prop) {\n // @ts-ignore\n // eslint-disable-next-line prefer-rest-params\n return func.apply(this, arguments);\n }\n return func.call(this, this.parser.parseInline(token.tokens));\n };\n case 'em':\n return function (token) {\n if (!token.type || token.type !== prop) {\n // @ts-ignore\n // eslint-disable-next-line prefer-rest-params\n return func.apply(this, arguments);\n }\n return func.call(this, this.parser.parseInline(token.tokens));\n };\n case 'codespan':\n return function (token) {\n if (!token.type || token.type !== prop) {\n // @ts-ignore\n // eslint-disable-next-line prefer-rest-params\n return func.apply(this, arguments);\n }\n return func.call(this, token.text);\n };\n case 'del':\n return function (token) {\n if (!token.type || token.type !== prop) {\n // @ts-ignore\n // eslint-disable-next-line prefer-rest-params\n return func.apply(this, arguments);\n }\n return func.call(this, this.parser.parseInline(token.tokens));\n };\n case 'text':\n return function (token) {\n if (!token.type || token.type !== prop) {\n // @ts-ignore\n // eslint-disable-next-line prefer-rest-params\n return func.apply(this, arguments);\n }\n return func.call(this, token.text);\n };\n default:\n // do nothing\n }\n return func;\n }\n setOptions(opt) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n lexer(src, options) {\n return _Lexer.lex(src, options ?? this.defaults);\n }\n parser(tokens, options) {\n return _Parser.parse(tokens, options ?? this.defaults);\n }\n #parseMarkdown(lexer, parser) {\n return (src, options) => {\n const origOpt = { ...options };\n const opt = { ...this.defaults, ...origOpt };\n // Show warning if an extension set async to true but the parse was called with async: false\n if (this.defaults.async === true && origOpt.async === false) {\n if (!opt.silent) {\n console.warn('marked(): The async option was set to true by an extension. The async: false option sent to parse will be ignored.');\n }\n opt.async = true;\n }\n const throwError = this.#onError(!!opt.silent, !!opt.async);\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.hooks ? opt.hooks.processAllTokens(tokens) : tokens)\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n let tokens = lexer(src, opt);\n if (opt.hooks) {\n tokens = opt.hooks.processAllTokens(tokens);\n }\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n }\n catch (e) {\n return throwError(e);\n }\n };\n }\n #onError(silent, async) {\n return (e) => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if (silent) {\n const msg = ''\n + escape(e.message + '', true)\n + '
';\n if (async) {\n return Promise.resolve(msg);\n }\n return msg;\n }\n if (async) {\n return Promise.reject(e);\n }\n throw e;\n };\n }\n}\n", "import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport { _getDefaults, changeDefaults, _defaults, } from './defaults.ts';\nconst markedInstance = new Marked();\nexport function marked(src, opt) {\n return markedInstance.parse(src, opt);\n}\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\n marked.setOptions = function (options) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n };\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\nmarked.defaults = _defaults;\n/**\n * Use Extension\n */\nmarked.use = function (...args) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n/**\n * Run callback for every token\n */\nmarked.walkTokens = function (tokens, callback) {\n return markedInstance.walkTokens(tokens, callback);\n};\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\n", "import {\n decodeEntities\n} from \"./chunk-MCANT3UC.mjs\";\nimport {\n __name,\n common_default,\n getConfig2 as getConfig,\n hasKatex,\n log,\n renderKatex\n} from \"./chunk-P27NXTFD.mjs\";\n\n// src/rendering-util/createText.ts\nimport { select } from \"d3\";\n\n// src/rendering-util/handle-markdown-text.ts\nimport { marked } from \"marked\";\nimport { dedent } from \"ts-dedent\";\nfunction preprocessMarkdown(markdown, { markdownAutoWrap }) {\n const withoutBR = markdown.replace(/
/g, \"\\n\");\n const withoutMultipleNewlines = withoutBR.replace(/\\n{2,}/g, \"\\n\");\n const withoutExtraSpaces = dedent(withoutMultipleNewlines);\n if (markdownAutoWrap === false) {\n return withoutExtraSpaces.replace(/ /g, \" \");\n }\n return withoutExtraSpaces;\n}\n__name(preprocessMarkdown, \"preprocessMarkdown\");\nfunction markdownToLines(markdown, config = {}) {\n const preprocessedMarkdown = preprocessMarkdown(markdown, config);\n const nodes = marked.lexer(preprocessedMarkdown);\n const lines = [[]];\n let currentLine = 0;\n function processNode(node, parentType = \"normal\") {\n if (node.type === \"text\") {\n const textLines = node.text.split(\"\\n\");\n textLines.forEach((textLine, index) => {\n if (index !== 0) {\n currentLine++;\n lines.push([]);\n }\n textLine.split(\" \").forEach((word) => {\n word = word.replace(/'/g, `'`);\n if (word) {\n lines[currentLine].push({ content: word, type: parentType });\n }\n });\n });\n } else if (node.type === \"strong\" || node.type === \"em\") {\n node.tokens.forEach((contentNode) => {\n processNode(contentNode, node.type);\n });\n } else if (node.type === \"html\") {\n lines[currentLine].push({ content: node.text, type: \"normal\" });\n }\n }\n __name(processNode, \"processNode\");\n nodes.forEach((treeNode) => {\n if (treeNode.type === \"paragraph\") {\n treeNode.tokens?.forEach((contentNode) => {\n processNode(contentNode);\n });\n } else if (treeNode.type === \"html\") {\n lines[currentLine].push({ content: treeNode.text, type: \"normal\" });\n }\n });\n return lines;\n}\n__name(markdownToLines, \"markdownToLines\");\nfunction markdownToHTML(markdown, { markdownAutoWrap } = {}) {\n const nodes = marked.lexer(markdown);\n function output(node) {\n if (node.type === \"text\") {\n if (markdownAutoWrap === false) {\n return node.text.replace(/\\n */g, \"
\").replace(/ /g, \" \");\n }\n return node.text.replace(/\\n */g, \"
\");\n } else if (node.type === \"strong\") {\n return `${node.tokens?.map(output).join(\"\")}`;\n } else if (node.type === \"em\") {\n return `${node.tokens?.map(output).join(\"\")}`;\n } else if (node.type === \"paragraph\") {\n return `
/g, \"
\");\n const structuredText = markdownToLines(sanitizeBR.replace(\"
\", \"
\"), config);\n const svgLabel = createFormattedText(\n width,\n el,\n structuredText,\n text ? addSvgBackground : false\n );\n if (isNode) {\n if (/stroke:/.exec(style)) {\n style = style.replace(\"stroke:\", \"lineColor:\");\n }\n const nodeLabelTextStyle = style.replace(/stroke:[^;]+;?/g, \"\").replace(/stroke-width:[^;]+;?/g, \"\").replace(/fill:[^;]+;?/g, \"\").replace(/color:/g, \"fill:\");\n select(svgLabel).attr(\"style\", nodeLabelTextStyle);\n } else {\n const edgeLabelRectStyle = style.replace(/stroke:[^;]+;?/g, \"\").replace(/stroke-width:[^;]+;?/g, \"\").replace(/fill:[^;]+;?/g, \"\").replace(/background:/g, \"fill:\");\n select(svgLabel).select(\"rect\").attr(\"style\", edgeLabelRectStyle.replace(/background:/g, \"fill:\"));\n const edgeLabelTextStyle = style.replace(/stroke:[^;]+;?/g, \"\").replace(/stroke-width:[^;]+;?/g, \"\").replace(/fill:[^;]+;?/g, \"\").replace(/color:/g, \"fill:\");\n select(svgLabel).select(\"text\").attr(\"style\", edgeLabelTextStyle);\n }\n return svgLabel;\n }\n}, \"createText\");\n\nexport {\n computeDimensionOfText,\n replaceIconSubstring,\n createText\n};\n"],
+ "mappings": "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",
+ "names": ["dedent", "templ", "values", "_i", "strings", "indentLengths", "arr", "str", "matches", "match", "_a", "_b", "pattern_1", "string", "value", "i", "endentations", "endentation", "indentedValue", "_getDefaults", "_defaults", "changeDefaults", "newDefaults", "escapeTest", "escapeReplace", "escapeTestNoEncode", "escapeReplaceNoEncode", "escapeReplacements", "getEscapeReplacement", "ch", "escape", "html", "encode", "unescapeTest", "unescape", "_", "n", "caret", "edit", "regex", "opt", "source", "obj", "name", "val", "valSource", "cleanUrl", "href", "noopTest", "splitCells", "tableRow", "count", "row", "match", "offset", "str", "escaped", "curr", "cells", "i", "rtrim", "c", "invert", "l", "suffLen", "currChar", "findClosingBracket", "b", "level", "outputLink", "cap", "link", "raw", "lexer", "title", "text", "token", "indentCodeCompensation", "matchIndentToCode", "indentToCode", "node", "matchIndentInNode", "indentInNode", "_Tokenizer", "options", "src", "trimmed", "lines", "tokens", "inBlockquote", "currentLines", "currentRaw", "currentText", "top", "lastToken", "oldToken", "newText", "newToken", "bull", "isordered", "list", "itemRegex", "endsWithBlankLine", "endEarly", "itemContents", "line", "t", "nextLine", "blankLine", "indent", "nextBulletRegex", "hrRegex", "fencesBeginRegex", "headingBeginRegex", "rawLine", "istask", "ischecked", "spacers", "hasMultipleLineBreaks", "tag", "headers", "aligns", "rows", "item", "align", "cell", "trimmedUrl", "rtrimSlash", "lastParenIndex", "linkLen", "links", "linkString", "maskedSrc", "prevChar", "lLength", "rDelim", "rLength", "delimTotal", "midDelimTotal", "endReg", "lastCharLength", "hasNonSpaceChars", "hasSpaceCharsOnBothEnds", "prevCapZero", "newline", "blockCode", "fences", "hr", "heading", "bullet", "lheading", "_paragraph", "blockText", "_blockLabel", "def", "_tag", "_comment", "paragraph", "blockquote", "blockNormal", "gfmTable", "blockGfm", "blockPedantic", "inlineCode", "br", "inlineText", "_punctuation", "punctuation", "blockSkip", "emStrongLDelim", "emStrongRDelimAst", "emStrongRDelimUnd", "anyPunctuation", "autolink", "_inlineComment", "_inlineLabel", "reflink", "nolink", "reflinkSearch", "inlineNormal", "inlinePedantic", "inlineGfm", "inlineBreaks", "block", "inline", "_Lexer", "__Lexer", "rules", "next", "lastParagraphClipped", "leading", "tabs", "cutSrc", "extTokenizer", "startIndex", "tempSrc", "tempStart", "getStartIndex", "errMsg", "keepPrevChar", "_Renderer", "lang", "langString", "code", "depth", "ordered", "start", "body", "j", "type", "startAttr", "itemBody", "checkbox", "checked", "header", "k", "content", "cleanHref", "out", "_TextRenderer", "_Parser", "__Parser", "anyToken", "genericToken", "ret", "textToken", "renderer", "_Hooks", "markdown", "Marked", "#parseMarkdown", "args", "callback", "values", "tableToken", "listToken", "childTokens", "extensions", "pack", "opts", "ext", "prevRenderer", "extLevel", "prop", "rendererProp", "rendererFunc", "#convertRendererFunction", "tokenizer", "tokenizerProp", "tokenizerFunc", "prevTokenizer", "hooks", "hooksProp", "hooksFunc", "prevHook", "arg", "walkTokens", "packWalktokens", "func", "loose", "task", "parser", "origOpt", "throwError", "#onError", "e", "silent", "async", "msg", "markedInstance", "marked", "setOptions", "use", "parseInline", "parser", "_Parser", "lexer", "_Lexer", "preprocessMarkdown", "markdown", "markdownAutoWrap", "withoutMultipleNewlines", "withoutExtraSpaces", "dedent", "__name", "markdownToLines", "config", "preprocessedMarkdown", "nodes", "marked", "lines", "currentLine", "processNode", "node", "parentType", "textLine", "index", "word", "contentNode", "treeNode", "markdownToHTML", "output", "splitTextToChars", "text", "s", "splitWordToFitWidth", "checkFit", "characters", "splitWordToFitWidthRecursion", "usedChars", "remainingChars", "type", "nextChar", "rest", "newWord", "splitLineToFitWidth", "line", "content", "splitLineToFitWidthRecursion", "words", "newLine", "joiner", "nextWord", "lineWithNextWord", "applyStyle", "dom", "styleFn", "addHtmlSpan", "element", "width", "classes", "addBackground", "fo", "div", "label", "hasKatex", "renderKatex", "common_default", "getConfig2", "labelClass", "span", "bbox", "createTspan", "textElement", "lineIndex", "lineHeight", "computeWidthOfText", "parentNode", "testElement", "testSpan", "updateTextContentAndStyles", "textLength", "computeDimensionOfText", "textDimension", "createFormattedText", "g", "structuredText", "labelGroup", "bkg", "checkWidth", "line2", "linesUnderWidth", "preparedLine", "tspan", "padding", "wrappedLine", "innerTspan", "replaceIconSubstring", "createText", "el", "style", "isTitle", "useHtmlLabels", "isNode", "addSvgBackground", "log", "htmlText", "decodedReplacedText", "decodeEntities", "inputForKatex", "sanitizeBR", "svgLabel", "nodeLabelTextStyle", "select_default", "edgeLabelRectStyle", "edgeLabelTextStyle"]
+}
diff --git a/docs/public/chunk-2TAJJIOM.min.js b/docs/public/chunk-2TAJJIOM.min.js
new file mode 100644
index 00000000000..f9246e34d05
--- /dev/null
+++ b/docs/public/chunk-2TAJJIOM.min.js
@@ -0,0 +1,221 @@
+import{a as ee,b as se}from"./chunk-HOCACIQT.min.js";import{b as te}from"./chunk-TOQ6ACLX.min.js";import{e as Qt,m as Zt}from"./chunk-KF4CENUX.min.js";import{N as P,S as Ht,T as zt,U as Wt,V as Xt,W as Kt,X as Jt,Y as qt,Z as C,h as r,j as E}from"./chunk-UOD6J27N.min.js";var Nt=function(){var t=r(function($,o,u,n){for(u=u||{},n=$.length;n--;u[$[n]]=o);return u},"o"),e=[1,2],c=[1,3],a=[1,4],d=[2,4],i=[1,9],p=[1,11],g=[1,16],l=[1,17],_=[1,18],k=[1,19],O=[1,32],L=[1,20],f=[1,21],A=[1,22],I=[1,23],Y=[1,24],F=[1,26],N=[1,27],w=[1,28],st=[1,29],rt=[1,30],it=[1,31],at=[1,34],nt=[1,35],lt=[1,36],ot=[1,37],X=[1,33],S=[1,4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,45,48,49,50,51,54],ct=[1,4,5,14,15,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,45,48,49,50,51,54],Mt=[4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,45,48,49,50,51,54],Dt={trace:r(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,SD:6,document:7,line:8,statement:9,classDefStatement:10,styleStatement:11,cssClassStatement:12,idStatement:13,DESCR:14,"-->":15,HIDE_EMPTY:16,scale:17,WIDTH:18,COMPOSIT_STATE:19,STRUCT_START:20,STRUCT_STOP:21,STATE_DESCR:22,AS:23,ID:24,FORK:25,JOIN:26,CHOICE:27,CONCURRENT:28,note:29,notePosition:30,NOTE_TEXT:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,classDef:38,CLASSDEF_ID:39,CLASSDEF_STYLEOPTS:40,DEFAULT:41,style:42,STYLE_IDS:43,STYLEDEF_STYLEOPTS:44,class:45,CLASSENTITY_IDS:46,STYLECLASS:47,direction_tb:48,direction_bt:49,direction_rl:50,direction_lr:51,eol:52,";":53,EDGE_STATE:54,STYLE_SEPARATOR:55,left_of:56,right_of:57,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",6:"SD",14:"DESCR",15:"-->",16:"HIDE_EMPTY",17:"scale",18:"WIDTH",19:"COMPOSIT_STATE",20:"STRUCT_START",21:"STRUCT_STOP",22:"STATE_DESCR",23:"AS",24:"ID",25:"FORK",26:"JOIN",27:"CHOICE",28:"CONCURRENT",29:"note",31:"NOTE_TEXT",33:"acc_title",34:"acc_title_value",35:"acc_descr",36:"acc_descr_value",37:"acc_descr_multiline_value",38:"classDef",39:"CLASSDEF_ID",40:"CLASSDEF_STYLEOPTS",41:"DEFAULT",42:"style",43:"STYLE_IDS",44:"STYLEDEF_STYLEOPTS",45:"class",46:"CLASSENTITY_IDS",47:"STYLECLASS",48:"direction_tb",49:"direction_bt",50:"direction_rl",51:"direction_lr",53:";",54:"EDGE_STATE",55:"STYLE_SEPARATOR",56:"left_of",57:"right_of"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,3],[9,4],[9,1],[9,2],[9,1],[9,4],[9,3],[9,6],[9,1],[9,1],[9,1],[9,1],[9,4],[9,4],[9,1],[9,2],[9,2],[9,1],[10,3],[10,3],[11,3],[12,3],[32,1],[32,1],[32,1],[32,1],[52,1],[52,1],[13,1],[13,1],[13,3],[13,3],[30,1],[30,1]],performAction:r(function(o,u,n,y,b,s,K){var h=s.length-1;switch(b){case 3:return y.setRootDoc(s[h]),s[h];break;case 4:this.$=[];break;case 5:s[h]!="nl"&&(s[h-1].push(s[h]),this.$=s[h-1]);break;case 6:case 7:this.$=s[h];break;case 8:this.$="nl";break;case 12:this.$=s[h];break;case 13:let ht=s[h-1];ht.description=y.trimColon(s[h]),this.$=ht;break;case 14:this.$={stmt:"relation",state1:s[h-2],state2:s[h]};break;case 15:let dt=y.trimColon(s[h]);this.$={stmt:"relation",state1:s[h-3],state2:s[h-1],description:dt};break;case 19:this.$={stmt:"state",id:s[h-3],type:"default",description:"",doc:s[h-1]};break;case 20:var V=s[h],H=s[h-2].trim();if(s[h].match(":")){var J=s[h].split(":");V=J[0],H=[H,J[1]]}this.$={stmt:"state",id:V,type:"default",description:H};break;case 21:this.$={stmt:"state",id:s[h-3],type:"default",description:s[h-5],doc:s[h-1]};break;case 22:this.$={stmt:"state",id:s[h],type:"fork"};break;case 23:this.$={stmt:"state",id:s[h],type:"join"};break;case 24:this.$={stmt:"state",id:s[h],type:"choice"};break;case 25:this.$={stmt:"state",id:y.getDividerId(),type:"divider"};break;case 26:this.$={stmt:"state",id:s[h-1].trim(),note:{position:s[h-2].trim(),text:s[h].trim()}};break;case 29:this.$=s[h].trim(),y.setAccTitle(this.$);break;case 30:case 31:this.$=s[h].trim(),y.setAccDescription(this.$);break;case 32:case 33:this.$={stmt:"classDef",id:s[h-1].trim(),classes:s[h].trim()};break;case 34:this.$={stmt:"style",id:s[h-1].trim(),styleClass:s[h].trim()};break;case 35:this.$={stmt:"applyClass",id:s[h-1].trim(),styleClass:s[h].trim()};break;case 36:y.setDirection("TB"),this.$={stmt:"dir",value:"TB"};break;case 37:y.setDirection("BT"),this.$={stmt:"dir",value:"BT"};break;case 38:y.setDirection("RL"),this.$={stmt:"dir",value:"RL"};break;case 39:y.setDirection("LR"),this.$={stmt:"dir",value:"LR"};break;case 42:case 43:this.$={stmt:"state",id:s[h].trim(),type:"default",description:""};break;case 44:this.$={stmt:"state",id:s[h-2].trim(),classes:[s[h].trim()],type:"default",description:""};break;case 45:this.$={stmt:"state",id:s[h-2].trim(),classes:[s[h].trim()],type:"default",description:""};break}},"anonymous"),table:[{3:1,4:e,5:c,6:a},{1:[3]},{3:5,4:e,5:c,6:a},{3:6,4:e,5:c,6:a},t([1,4,5,16,17,19,22,24,25,26,27,28,29,33,35,37,38,42,45,48,49,50,51,54],d,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:i,5:p,8:8,9:10,10:12,11:13,12:14,13:15,16:g,17:l,19:_,22:k,24:O,25:L,26:f,27:A,28:I,29:Y,32:25,33:F,35:N,37:w,38:st,42:rt,45:it,48:at,49:nt,50:lt,51:ot,54:X},t(S,[2,5]),{9:38,10:12,11:13,12:14,13:15,16:g,17:l,19:_,22:k,24:O,25:L,26:f,27:A,28:I,29:Y,32:25,33:F,35:N,37:w,38:st,42:rt,45:it,48:at,49:nt,50:lt,51:ot,54:X},t(S,[2,7]),t(S,[2,8]),t(S,[2,9]),t(S,[2,10]),t(S,[2,11]),t(S,[2,12],{14:[1,39],15:[1,40]}),t(S,[2,16]),{18:[1,41]},t(S,[2,18],{20:[1,42]}),{23:[1,43]},t(S,[2,22]),t(S,[2,23]),t(S,[2,24]),t(S,[2,25]),{30:44,31:[1,45],56:[1,46],57:[1,47]},t(S,[2,28]),{34:[1,48]},{36:[1,49]},t(S,[2,31]),{39:[1,50],41:[1,51]},{43:[1,52]},{46:[1,53]},t(ct,[2,42],{55:[1,54]}),t(ct,[2,43],{55:[1,55]}),t(S,[2,36]),t(S,[2,37]),t(S,[2,38]),t(S,[2,39]),t(S,[2,6]),t(S,[2,13]),{13:56,24:O,54:X},t(S,[2,17]),t(Mt,d,{7:57}),{24:[1,58]},{24:[1,59]},{23:[1,60]},{24:[2,46]},{24:[2,47]},t(S,[2,29]),t(S,[2,30]),{40:[1,61]},{40:[1,62]},{44:[1,63]},{47:[1,64]},{24:[1,65]},{24:[1,66]},t(S,[2,14],{14:[1,67]}),{4:i,5:p,8:8,9:10,10:12,11:13,12:14,13:15,16:g,17:l,19:_,21:[1,68],22:k,24:O,25:L,26:f,27:A,28:I,29:Y,32:25,33:F,35:N,37:w,38:st,42:rt,45:it,48:at,49:nt,50:lt,51:ot,54:X},t(S,[2,20],{20:[1,69]}),{31:[1,70]},{24:[1,71]},t(S,[2,32]),t(S,[2,33]),t(S,[2,34]),t(S,[2,35]),t(ct,[2,44]),t(ct,[2,45]),t(S,[2,15]),t(S,[2,19]),t(Mt,d,{7:72}),t(S,[2,26]),t(S,[2,27]),{4:i,5:p,8:8,9:10,10:12,11:13,12:14,13:15,16:g,17:l,19:_,21:[1,73],22:k,24:O,25:L,26:f,27:A,28:I,29:Y,32:25,33:F,35:N,37:w,38:st,42:rt,45:it,48:at,49:nt,50:lt,51:ot,54:X},t(S,[2,21])],defaultActions:{5:[2,1],6:[2,2],46:[2,46],47:[2,47]},parseError:r(function(o,u){if(u.recoverable)this.trace(o);else{var n=new Error(o);throw n.hash=u,n}},"parseError"),parse:r(function(o){var u=this,n=[0],y=[],b=[null],s=[],K=this.table,h="",V=0,H=0,J=0,ht=2,dt=1,Pe=s.slice.call(arguments,1),T=Object.create(this.lexer),M={yy:{}};for(var Ct in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Ct)&&(M.yy[Ct]=this.yy[Ct]);T.setInput(o,M.yy),M.yy.lexer=T,M.yy.parser=this,typeof T.yylloc>"u"&&(T.yylloc={});var xt=T.yylloc;s.push(xt);var Ge=T.options&&T.options.ranges;typeof M.yy.parseError=="function"?this.parseError=M.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Be(D){n.length=n.length-2*D,b.length=b.length-D,s.length=s.length-D}r(Be,"popStack");function Ut(){var D;return D=y.pop()||T.lex()||dt,typeof D!="number"&&(D instanceof Array&&(y=D,D=y.pop()),D=u.symbols_[D]||D),D}r(Ut,"lex");for(var v,At,U,x,As,Lt,z={},ft,R,jt,pt;;){if(U=n[n.length-1],this.defaultActions[U]?x=this.defaultActions[U]:((v===null||typeof v>"u")&&(v=Ut()),x=K[U]&&K[U][v]),typeof x>"u"||!x.length||!x[0]){var It="";pt=[];for(ft in K[U])this.terminals_[ft]&&ft>ht&&pt.push("'"+this.terminals_[ft]+"'");T.showPosition?It="Parse error on line "+(V+1)+`:
+`+T.showPosition()+`
+Expecting `+pt.join(", ")+", got '"+(this.terminals_[v]||v)+"'":It="Parse error on line "+(V+1)+": Unexpected "+(v==dt?"end of input":"'"+(this.terminals_[v]||v)+"'"),this.parseError(It,{text:T.match,token:this.terminals_[v]||v,line:T.yylineno,loc:xt,expected:pt})}if(x[0]instanceof Array&&x.length>1)throw new Error("Parse Error: multiple actions possible at state: "+U+", token: "+v);switch(x[0]){case 1:n.push(v),b.push(T.yytext),s.push(T.yylloc),n.push(x[1]),v=null,At?(v=At,At=null):(H=T.yyleng,h=T.yytext,V=T.yylineno,xt=T.yylloc,J>0&&J--);break;case 2:if(R=this.productions_[x[1]][1],z.$=b[b.length-R],z._$={first_line:s[s.length-(R||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(R||1)].first_column,last_column:s[s.length-1].last_column},Ge&&(z._$.range=[s[s.length-(R||1)].range[0],s[s.length-1].range[1]]),Lt=this.performAction.apply(z,[h,H,V,M.yy,x[1],b,s].concat(Pe)),typeof Lt<"u")return Lt;R&&(n=n.slice(0,-1*R*2),b=b.slice(0,-1*R),s=s.slice(0,-1*R)),n.push(this.productions_[x[1]][0]),b.push(z.$),s.push(z._$),jt=K[n[n.length-2]][n[n.length-1]],n.push(jt);break;case 3:return!0}}return!0},"parse")},$e=function(){var $={EOF:1,parseError:r(function(u,n){if(this.yy.parser)this.yy.parser.parseError(u,n);else throw new Error(u)},"parseError"),setInput:r(function(o,u){return this.yy=u||this.yy||{},this._input=o,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:r(function(){var o=this._input[0];this.yytext+=o,this.yyleng++,this.offset++,this.match+=o,this.matched+=o;var u=o.match(/(?:\r\n?|\n).*/g);return u?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),o},"input"),unput:r(function(o){var u=o.length,n=o.split(/(?:\r\n?|\n)/g);this._input=o+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-u),this.offset-=u;var y=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var b=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===y.length?this.yylloc.first_column:0)+y[y.length-n.length].length-n[0].length:this.yylloc.first_column-u},this.options.ranges&&(this.yylloc.range=[b[0],b[0]+this.yyleng-u]),this.yyleng=this.yytext.length,this},"unput"),more:r(function(){return this._more=!0,this},"more"),reject:r(function(){if(this.options.backtrack_lexer)this._backtrack=!0;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).
+`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:r(function(o){this.unput(this.match.slice(o))},"less"),pastInput:r(function(){var o=this.matched.substr(0,this.matched.length-this.match.length);return(o.length>20?"...":"")+o.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:r(function(){var o=this.match;return o.length<20&&(o+=this._input.substr(0,20-o.length)),(o.substr(0,20)+(o.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:r(function(){var o=this.pastInput(),u=new Array(o.length+1).join("-");return o+this.upcomingInput()+`
+`+u+"^"},"showPosition"),test_match:r(function(o,u){var n,y,b;if(this.options.backtrack_lexer&&(b={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(b.yylloc.range=this.yylloc.range.slice(0))),y=o[0].match(/(?:\r\n?|\n).*/g),y&&(this.yylineno+=y.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:y?y[y.length-1].length-y[y.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+o[0].length},this.yytext+=o[0],this.match+=o[0],this.matches=o,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(o[0].length),this.matched+=o[0],n=this.performAction.call(this,this.yy,this,u,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var s in b)this[s]=b[s];return!1}return!1},"test_match"),next:r(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var o,u,n,y;this._more||(this.yytext="",this.match="");for(var b=this._currentRules(),s=0;s
\"));\n el.classed(\"hover\", true);\n }).on(\"mouseout\", function() {\n tooltipElem.transition().duration(500).style(\"opacity\", 0);\n const el = select(this);\n el.classed(\"hover\", false);\n });\n};\nfuns.push(setupToolTips);\nconst clear = function(ver = \"gen-1\") {\n vertices = {};\n classes = {};\n edges = [];\n funs = [setupToolTips];\n subGraphs = [];\n subGraphLookup = {};\n subCount = 0;\n tooltips = {};\n firstGraphFlag = true;\n version = ver;\n config = getConfig();\n clear$1();\n};\nconst setGen = (ver) => {\n version = ver || \"gen-2\";\n};\nconst defaultStyle = function() {\n return \"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;\";\n};\nconst addSubGraph = function(_id, list, _title) {\n let id = _id.text.trim();\n let title = _title.text;\n if (_id === _title && _title.text.match(/\\s/)) {\n id = void 0;\n }\n function uniq(a) {\n const prims = { boolean: {}, number: {}, string: {} };\n const objs = [];\n let dir2;\n const nodeList2 = a.filter(function(item) {\n const type = typeof item;\n if (item.stmt && item.stmt === \"dir\") {\n dir2 = item.value;\n return false;\n }\n if (item.trim() === \"\") {\n return false;\n }\n if (type in prims) {\n return prims[type].hasOwnProperty(item) ? false : prims[type][item] = true;\n } else {\n return objs.includes(item) ? false : objs.push(item);\n }\n });\n return { nodeList: nodeList2, dir: dir2 };\n }\n let nodeList = [];\n const { nodeList: nl, dir } = uniq(nodeList.concat.apply(nodeList, list));\n nodeList = nl;\n if (version === \"gen-1\") {\n for (let i = 0; i < nodeList.length; i++) {\n nodeList[i] = lookUpDomId(nodeList[i]);\n }\n }\n id = id || \"subGraph\" + subCount;\n title = title || \"\";\n title = sanitizeText(title);\n subCount = subCount + 1;\n const subGraph = {\n id,\n nodes: nodeList,\n title: title.trim(),\n classes: [],\n dir,\n labelType: _title.type\n };\n log.info(\"Adding\", subGraph.id, subGraph.nodes, subGraph.dir);\n subGraph.nodes = makeUniq(subGraph, subGraphs).nodes;\n subGraphs.push(subGraph);\n subGraphLookup[id] = subGraph;\n return id;\n};\nconst getPosForId = function(id) {\n for (const [i, subGraph] of subGraphs.entries()) {\n if (subGraph.id === id) {\n return i;\n }\n }\n return -1;\n};\nlet secCount = -1;\nconst posCrossRef = [];\nconst indexNodes2 = function(id, pos) {\n const nodes = subGraphs[pos].nodes;\n secCount = secCount + 1;\n if (secCount > 2e3) {\n return;\n }\n posCrossRef[secCount] = pos;\n if (subGraphs[pos].id === id) {\n return {\n result: true,\n count: 0\n };\n }\n let count = 0;\n let posCount = 1;\n while (count < nodes.length) {\n const childPos = getPosForId(nodes[count]);\n if (childPos >= 0) {\n const res = indexNodes2(id, childPos);\n if (res.result) {\n return {\n result: true,\n count: posCount + res.count\n };\n } else {\n posCount = posCount + res.count;\n }\n }\n count = count + 1;\n }\n return {\n result: false,\n count: posCount\n };\n};\nconst getDepthFirstPos = function(pos) {\n return posCrossRef[pos];\n};\nconst indexNodes = function() {\n secCount = -1;\n if (subGraphs.length > 0) {\n indexNodes2(\"none\", subGraphs.length - 1);\n }\n};\nconst getSubGraphs = function() {\n return subGraphs;\n};\nconst firstGraph = () => {\n if (firstGraphFlag) {\n firstGraphFlag = false;\n return true;\n }\n return false;\n};\nconst destructStartLink = (_str) => {\n let str = _str.trim();\n let type = \"arrow_open\";\n switch (str[0]) {\n case \"<\":\n type = \"arrow_point\";\n str = str.slice(1);\n break;\n case \"x\":\n type = \"arrow_cross\";\n str = str.slice(1);\n break;\n case \"o\":\n type = \"arrow_circle\";\n str = str.slice(1);\n break;\n }\n let stroke = \"normal\";\n if (str.includes(\"=\")) {\n stroke = \"thick\";\n }\n if (str.includes(\".\")) {\n stroke = \"dotted\";\n }\n return { type, stroke };\n};\nconst countChar = (char, str) => {\n const length = str.length;\n let count = 0;\n for (let i = 0; i < length; ++i) {\n if (str[i] === char) {\n ++count;\n }\n }\n return count;\n};\nconst destructEndLink = (_str) => {\n const str = _str.trim();\n let line = str.slice(0, -1);\n let type = \"arrow_open\";\n switch (str.slice(-1)) {\n case \"x\":\n type = \"arrow_cross\";\n if (str[0] === \"x\") {\n type = \"double_\" + type;\n line = line.slice(1);\n }\n break;\n case \">\":\n type = \"arrow_point\";\n if (str[0] === \"<\") {\n type = \"double_\" + type;\n line = line.slice(1);\n }\n break;\n case \"o\":\n type = \"arrow_circle\";\n if (str[0] === \"o\") {\n type = \"double_\" + type;\n line = line.slice(1);\n }\n break;\n }\n let stroke = \"normal\";\n let length = line.length - 1;\n if (line[0] === \"=\") {\n stroke = \"thick\";\n }\n if (line[0] === \"~\") {\n stroke = \"invisible\";\n }\n let dots = countChar(\".\", line);\n if (dots) {\n stroke = \"dotted\";\n length = dots;\n }\n return { type, stroke, length };\n};\nconst destructLink = (_str, _startStr) => {\n const info = destructEndLink(_str);\n let startInfo;\n if (_startStr) {\n startInfo = destructStartLink(_startStr);\n if (startInfo.stroke !== info.stroke) {\n return { type: \"INVALID\", stroke: \"INVALID\" };\n }\n if (startInfo.type === \"arrow_open\") {\n startInfo.type = info.type;\n } else {\n if (startInfo.type !== info.type) {\n return { type: \"INVALID\", stroke: \"INVALID\" };\n }\n startInfo.type = \"double_\" + startInfo.type;\n }\n if (startInfo.type === \"double_arrow\") {\n startInfo.type = \"double_arrow_point\";\n }\n startInfo.length = info.length;\n return startInfo;\n }\n return info;\n};\nconst exists = (allSgs, _id) => {\n let res = false;\n allSgs.forEach((sg) => {\n const pos = sg.nodes.indexOf(_id);\n if (pos >= 0) {\n res = true;\n }\n });\n return res;\n};\nconst makeUniq = (sg, allSubgraphs) => {\n const res = [];\n sg.nodes.forEach((_id, pos) => {\n if (!exists(allSubgraphs, _id)) {\n res.push(sg.nodes[pos]);\n }\n });\n return { nodes: res };\n};\nconst lex = {\n firstGraph\n};\nconst flowDb = {\n defaultConfig: () => defaultConfig.flowchart,\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n addVertex,\n lookUpDomId,\n addLink,\n updateLinkInterpolate,\n updateLink,\n addClass,\n setDirection,\n setClass,\n setTooltip,\n getTooltip,\n setClickEvent,\n setLink,\n bindFunctions,\n getDirection,\n getVertices,\n getEdges,\n getClasses,\n clear,\n setGen,\n defaultStyle,\n addSubGraph,\n getDepthFirstPos,\n indexNodes,\n getSubGraphs,\n destructLink,\n lex,\n exists,\n makeUniq,\n setDiagramTitle,\n getDiagramTitle\n};\nconst db = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n addClass,\n addLink,\n addSingleLink,\n addSubGraph,\n addVertex,\n bindFunctions,\n clear,\n default: flowDb,\n defaultStyle,\n destructLink,\n firstGraph,\n getClasses,\n getDepthFirstPos,\n getDirection,\n getEdges,\n getSubGraphs,\n getTooltip,\n getVertices,\n indexNodes,\n lex,\n lookUpDomId,\n setClass,\n setClickEvent,\n setDirection,\n setGen,\n setLink,\n updateLink,\n updateLinkInterpolate\n}, Symbol.toStringTag, { value: \"Module\" }));\nexport {\n db as d,\n flowDb as f,\n parser$1 as p\n};\n"],
- "mappings": "yJAEA,IAAIA,GAAS,UAAW,CACtB,IAAIC,EAAI,SAASC,GAAGC,EAAGC,EAAIC,EAAG,CAC5B,IAAKD,EAAKA,GAAM,CAAC,EAAGC,EAAIH,GAAE,OAAQG,IAAKD,EAAGF,GAAEG,CAAC,CAAC,EAAIF,EAChD,CACF,OAAOC,CACT,EAAGE,EAAM,CAAC,EAAG,CAAC,EAAGC,EAAM,CAAC,EAAG,CAAC,EAAGC,EAAM,CAAC,EAAG,CAAC,EAAGC,EAAM,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAAGC,EAAM,CAAC,EAAG,CAAC,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAG,GAAI,GAAI,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAG,GAAI,GAAI,GAAI,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAAGC,GAAM,CAAC,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAAGC,GAAM,CAAC,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAAGC,GAAM,CAAC,EAAG,GAAG,EAAGC,GAAM,CAAC,EAAG,GAAG,EAAGC,GAAM,CAAC,EAAG,GAAG,EAAGC,GAAM,CAAC,EAAG,GAAG,EAAGC,GAAM,CAAC,EAAG,GAAG,EAAGC,GAAM,CAAC,EAAG,GAAG,EAAGC,GAAM,CAAC,EAAG,GAAG,EAAGC,GAAM,CAAC,EAAG,GAAG,EAAGC,GAAM,CAAC,EAAG,GAAG,EAAGC,GAAO,CAAC,EAAG,GAAG,EAAGC,GAAO,CAAC,EAAG,GAAG,EAAGC,GAAO,CAAC,EAAG,GAAG,EAAGC,GAAO,CAAC,EAAG,GAAG,EAAGC,GAAO,CAAC,EAAG,GAAG,EAAGC,GAAO,CAAC,EAAG,GAAG,EAAGC,GAAO,CAAC,EAAG,GAAG,EAAGC,GAAO,CAAC,EAAG,GAAG,EAAGC,GAAO,CAAC,EAAG,GAAG,EAAGC,GAAO,CAAC,EAAG,GAAG,EAAGC,GAAO,CAAC,EAAG,GAAG,EAAGC,GAAO,CAAC,EAAG,GAAG,EAAGC,GAAO,CAAC,EAAG,GAAG,EAAGC,GAAO,CAAC,EAAG,GAAG,EAAGC,GAAO,CAAC,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAAGC,GAAO,CAAC,EAAG,GAAG,EAAGC,EAAO,CAAC,EAAG,EAAG,EAAE,EAAGC,EAAO,CAAC,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,GAAO,CAAC,GAAI,IAAK,GAAG,EAAGC,EAAO,CAAC,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAAGC,GAAO,CAAC,GAAI,GAAG,EAAGC,GAAO,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,EAAO,CAAC,EAAG,GAAG,EAAGC,GAAO,CAAC,EAAG,GAAG,EAAGC,GAAO,CAAC,EAAG,GAAG,EAAGC,GAAO,CAAC,EAAG,GAAG,EAAGC,GAAO,CAAC,EAAG,GAAG,EAAGC,GAAO,CAAC,EAAG,GAAG,EAAGC,GAAO,CAAC,EAAG,GAAG,EAAGC,GAAO,CAAC,EAAG,GAAG,EAAGC,GAAO,CAAC,EAAG,EAAG,GAAI,GAAG,EAAGC,EAAO,CAAC,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EACp9EC,GAAU,CACZ,MAAO,UAAiB,CACxB,EACA,GAAI,CAAC,EACL,SAAU,CAAE,MAAS,EAAG,MAAS,EAAG,YAAe,EAAG,SAAY,EAAG,KAAQ,EAAG,UAAa,EAAG,KAAQ,EAAG,QAAW,EAAG,MAAS,GAAI,IAAO,GAAI,MAAS,GAAI,MAAS,GAAI,IAAO,GAAI,mBAAsB,GAAI,OAAU,GAAI,SAAY,GAAI,UAAa,GAAI,iBAAoB,GAAI,gBAAmB,GAAI,UAAa,GAAI,eAAkB,GAAI,mBAAsB,GAAI,kBAAqB,GAAI,eAAkB,GAAI,eAAkB,GAAI,SAAY,GAAI,WAAc,GAAI,IAAO,GAAI,KAAQ,GAAI,IAAO,GAAI,IAAO,GAAI,UAAa,GAAI,UAAa,GAAI,gBAAmB,GAAI,UAAa,GAAI,gBAAmB,GAAI,0BAA6B,GAAI,KAAQ,GAAI,KAAQ,GAAI,aAAgB,GAAI,IAAO,GAAI,OAAU,GAAI,gBAAmB,GAAI,SAAY,GAAI,kBAAqB,GAAI,gBAAmB,GAAI,GAAM,GAAI,GAAM,GAAI,KAAM,GAAI,KAAM,GAAI,aAAgB,GAAI,WAAc,GAAI,gBAAmB,GAAI,cAAiB,GAAI,wBAA2B,GAAI,qBAAsB,GAAI,MAAS,GAAI,qBAAsB,GAAI,KAAQ,GAAI,cAAiB,GAAI,YAAe,GAAI,cAAiB,GAAI,aAAgB,GAAI,OAAU,GAAI,UAAa,GAAI,QAAW,GAAI,aAAgB,GAAI,WAAc,GAAI,cAAiB,GAAI,UAAa,GAAI,QAAW,GAAI,WAAc,GAAI,SAAY,GAAI,KAAQ,GAAI,cAAiB,GAAI,IAAO,GAAI,OAAU,GAAI,UAAa,GAAI,SAAY,GAAI,MAAS,GAAI,UAAa,GAAI,SAAY,GAAI,MAAS,GAAI,MAAS,GAAI,KAAQ,GAAI,GAAM,GAAI,gBAAmB,GAAI,UAAa,GAAI,mBAAoB,GAAI,kBAAmB,GAAI,aAAgB,GAAI,aAAgB,GAAI,KAAQ,GAAI,YAAe,GAAI,YAAa,GAAI,eAAgB,GAAI,SAAY,GAAI,QAAW,GAAI,QAAW,IAAK,YAAe,IAAK,IAAO,IAAK,MAAS,IAAK,MAAS,IAAK,eAAkB,IAAK,YAAe,IAAK,KAAQ,IAAK,KAAQ,IAAK,IAAO,IAAK,cAAiB,IAAK,MAAS,IAAK,KAAQ,IAAK,aAAgB,IAAK,KAAQ,IAAK,SAAY,IAAK,UAAa,IAAK,cAAiB,IAAK,aAAgB,IAAK,aAAgB,IAAK,aAAgB,IAAK,aAAgB,IAAK,QAAW,EAAG,KAAQ,CAAE,EACnjE,WAAY,CAAE,EAAG,QAAS,EAAG,OAAQ,EAAG,UAAW,GAAI,QAAS,GAAI,MAAO,GAAI,QAAS,GAAI,QAAS,GAAI,MAAO,GAAI,WAAY,GAAI,MAAO,GAAI,MAAO,GAAI,MAAO,GAAI,YAAa,GAAI,kBAAmB,GAAI,YAAa,GAAI,kBAAmB,GAAI,4BAA6B,GAAI,MAAO,GAAI,kBAAmB,GAAI,oBAAqB,GAAI,kBAAmB,GAAI,KAAM,GAAI,KAAM,GAAI,KAAM,GAAI,KAAM,GAAI,eAAgB,GAAI,aAAc,GAAI,kBAAmB,GAAI,gBAAiB,GAAI,0BAA2B,GAAI,qBAAsB,GAAI,QAAS,GAAI,qBAAsB,GAAI,OAAQ,GAAI,gBAAiB,GAAI,cAAe,GAAI,gBAAiB,GAAI,eAAgB,GAAI,SAAU,GAAI,YAAa,GAAI,UAAW,GAAI,eAAgB,GAAI,aAAc,GAAI,UAAW,GAAI,aAAc,GAAI,OAAQ,GAAI,MAAO,GAAI,SAAU,GAAI,QAAS,GAAI,YAAa,GAAI,WAAY,GAAI,QAAS,GAAI,QAAS,GAAI,OAAQ,GAAI,KAAM,GAAI,mBAAoB,GAAI,kBAAmB,GAAI,eAAgB,GAAI,eAAgB,GAAI,OAAQ,GAAI,cAAe,GAAI,YAAa,GAAI,eAAgB,GAAI,UAAW,IAAK,cAAe,IAAK,MAAO,IAAK,QAAS,IAAK,cAAe,IAAK,OAAQ,IAAK,OAAQ,IAAK,MAAO,IAAK,QAAS,IAAK,OAAQ,IAAK,eAAgB,IAAK,OAAQ,IAAK,WAAY,IAAK,YAAa,IAAK,eAAgB,IAAK,eAAgB,IAAK,eAAgB,IAAK,cAAe,EACx1C,aAAc,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,IAAK,CAAC,EAAG,CAAC,GAAI,CAAC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,GACT,IAAK,IACH,YAAK,SAAS,EACP,GACT,IAAK,IACH,YAAK,SAAS,EACP,GACT,IAAK,IACH,YAAK,SAAS,EACP,GACT,IAAK,IACH,YAAK,SAAS,EACP,GACT,IAAK,IACH,YAAK,SAAS,EACP,GACT,IAAK,IACH,YAAK,SAAS,EACP,GACT,IAAK,IACH,YAAK,SAAS,EACP,GACT,IAAK,IACH,YAAK,SAAS,EACP,GACT,IAAK,IACH,YAAK,SAAS,EACP,GACT,IAAK,IACH,YAAK,SAAS,EACP,GACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,MAAO,GACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,YAAK,SAAS,EACP,GACT,IAAK,IACH,YAAK,UAAU,UAAU,EAClB,GACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,YAAK,SAAS,EACP,GACT,IAAK,IACH,YAAK,UAAU,eAAe,EACvB,GACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,YAAK,SAAS,EACP,GACT,IAAK,IACH,YAAK,UAAU,gBAAgB,EACxB,GACT,IAAK,IACH,MAAO,KACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,YAAK,SAAS,EACP,GACT,IAAK,IACH,MAAO,OACT,IAAK,IACH,YAAK,UAAU,aAAa,EACrB,GACT,IAAK,IACH,YAAK,SAAS,EACP,GACT,IAAK,IACH,YAAK,UAAU,MAAM,EACd,GACT,IAAK,IACH,YAAK,SAAS,EACP,GACT,IAAK,IACH,YAAK,UAAU,MAAM,EACd,GACT,IAAK,IACH,MAAO,IACT,IAAK,IACH,YAAK,UAAU,MAAM,EACd,GACT,IAAK,IACH,YAAK,SAAS,EACP,GACT,IAAK,IACH,YAAK,UAAU,MAAM,EACd,GACT,IAAK,IACH,YAAK,SAAS,EACP,GACT,IAAK,IAC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",
- "names": ["parser", "o", "k", "v", "o2", "l", "$V0", "$V1", "$V2", "$V3", "$V4", "$V5", "$V6", "$V7", "$V8", "$V9", "$Va", "$Vb", "$Vc", "$Vd", "$Ve", "$Vf", "$Vg", "$Vh", "$Vi", "$Vj", "$Vk", "$Vl", "$Vm", "$Vn", "$Vo", "$Vp", "$Vq", "$Vr", "$Vs", "$Vt", "$Vu", "$Vv", "$Vw", "$Vx", "$Vy", "$Vz", "$VA", "$VB", "$VC", "$VD", "$VE", "$VF", "$VG", "$VH", "$VI", "$VJ", "$VK", "$VL", "$VM", "$VN", "$VO", "$VP", "$VQ", "$VR", "$VS", "$VT", "$VU", "$VV", "$VW", "$VX", "$VY", "$VZ", "$V_", "$V$", "$V01", "$V11", "$V21", "$V31", "$V41", "$V51", "$V61", "$V71", "$V81", "$V91", "$Va1", "$Vb1", "$Vc1", "$Vd1", "$Ve1", "$Vf1", "$Vg1", "$Vh1", "$Vi1", "$Vj1", "$Vk1", "$Vl1", "$Vm1", "$Vn1", "$Vo1", "$Vp1", "$Vq1", "$Vr1", "$Vs1", "$Vt1", "$Vu1", "$Vv1", "$Vw1", "$Vx1", "$Vy1", "$Vz1", "$VA1", "$VB1", "$VC1", "parser2", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "inf", "str", "hash", "error", "input", "self", "stack", "tstack", "vstack", "lstack", "table", "TERROR", "EOF", "args", "lexer2", "sharedState", "yyloc", "ranges", "lex2", "token", "symbol", "state", "action", "r", "yyval", "p", "len", "newState", "expected", "errStr", "lexer", "ch", "lines", "oldLines", "n", "past", "next", "pre", "c", "match", "indexed_rule", "backup", "tempMatch", "index", "rules", "i", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "Parser", "parser$1", "MERMAID_DOM_ID_PREFIX", "vertexCounter", "config", "getConfig", "vertices", "edges", "classes", "subGraphs", "subGraphLookup", "tooltips", "subCount", "firstGraphFlag", "direction", "version", "funs", "sanitizeText", "txt", "common$1", "lookUpDomId", "id", "vertexKeys", "vertexKey", "addVertex", "_id", "textObj", "type", "style", "classes2", "dir", "props", "s", "addSingleLink", "_start", "_end", "edge", "log$1", "linkTextObj", "addLink", "j", "updateLinkInterpolate", "positions", "interp", "pos", "updateLink", "utils", "addClass", "ids", "newStyle", "setDirection", "setClass", "className", "setTooltip", "tooltip", "setClickFun", "functionName", "functionArgs", "domId", "argList", "item", "elem", "setLink", "linkStr", "target", "getTooltip", "setClickEvent", "bindFunctions", "element", "fun", "getDirection", "getVertices", "getEdges", "getClasses", "setupToolTips", "tooltipElem", "select_default", "el", "rect", "clear", "ver", "setGen", "defaultStyle", "addSubGraph", "list", "_title", "title", "uniq", "a", "prims", "objs", "dir2", "nodeList", "nl", "subGraph", "makeUniq", "getPosForId", "secCount", "posCrossRef", "indexNodes2", "nodes", "count", "posCount", "childPos", "res", "getDepthFirstPos", "indexNodes", "getSubGraphs", "firstGraph", "destructStartLink", "_str", "stroke", "countChar", "char", "length", "destructEndLink", "line", "dots", "destructLink", "_startStr", "info", "startInfo", "exists", "allSgs", "sg", "allSubgraphs", "lex", "flowDb", "defaultConfig", "setAccTitle", "getAccTitle", "getAccDescription", "setAccDescription", "setDiagramTitle", "getDiagramTitle", "db"]
-}
diff --git a/docs/public/chunk-CIWIECNU.min.js b/docs/public/chunk-CIWIECNU.min.js
new file mode 100644
index 00000000000..033956b9490
--- /dev/null
+++ b/docs/public/chunk-CIWIECNU.min.js
@@ -0,0 +1,2 @@
+import{h as i}from"./chunk-UOD6J27N.min.js";var o=i(({flowchart:t})=>{let r=t?.subGraphTitleMargin?.top??0,a=t?.subGraphTitleMargin?.bottom??0,e=r+a;return{subGraphTitleTopMargin:r,subGraphTitleBottomMargin:a,subGraphTitleTotalMargin:e}},"getSubGraphTitleMargins");export{o as a};
+//# sourceMappingURL=chunk-CIWIECNU.min.js.map
diff --git a/docs/public/chunk-CIWIECNU.min.js.map b/docs/public/chunk-CIWIECNU.min.js.map
new file mode 100644
index 00000000000..0d57309693c
--- /dev/null
+++ b/docs/public/chunk-CIWIECNU.min.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": ["../../node_modules/mermaid/dist/chunks/mermaid.core/chunk-V2CZVG6A.mjs"],
+ "sourcesContent": ["import {\n __name\n} from \"./chunk-P27NXTFD.mjs\";\n\n// src/utils/subGraphTitleMargins.ts\nvar getSubGraphTitleMargins = /* @__PURE__ */ __name(({\n flowchart\n}) => {\n const subGraphTitleTopMargin = flowchart?.subGraphTitleMargin?.top ?? 0;\n const subGraphTitleBottomMargin = flowchart?.subGraphTitleMargin?.bottom ?? 0;\n const subGraphTitleTotalMargin = subGraphTitleTopMargin + subGraphTitleBottomMargin;\n return {\n subGraphTitleTopMargin,\n subGraphTitleBottomMargin,\n subGraphTitleTotalMargin\n };\n}, \"getSubGraphTitleMargins\");\n\nexport {\n getSubGraphTitleMargins\n};\n"],
+ "mappings": "4CAKA,IAAIA,EAA0CC,EAAO,CAAC,CACpD,UAAAC,CACF,IAAM,CACJ,IAAMC,EAAyBD,GAAW,qBAAqB,KAAO,EAChEE,EAA4BF,GAAW,qBAAqB,QAAU,EACtEG,EAA2BF,EAAyBC,EAC1D,MAAO,CACL,uBAAAD,EACA,0BAAAC,EACA,yBAAAC,CACF,CACF,EAAG,yBAAyB",
+ "names": ["getSubGraphTitleMargins", "__name", "flowchart", "subGraphTitleTopMargin", "subGraphTitleBottomMargin", "subGraphTitleTotalMargin"]
+}
diff --git a/docs/public/chunk-CM5D5KZN.min.js b/docs/public/chunk-CM5D5KZN.min.js
new file mode 100644
index 00000000000..76e50e8b796
--- /dev/null
+++ b/docs/public/chunk-CM5D5KZN.min.js
@@ -0,0 +1,2 @@
+import{a as m}from"./chunk-OSRY5VT3.min.js";var R=m(e=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.BLANK_URL=e.relativeFirstCharacters=e.whitespaceEscapeCharsRegex=e.urlSchemeRegex=e.ctrlCharactersRegex=e.htmlCtrlEntityRegex=e.htmlEntitiesRegex=e.invalidProtocolRegex=void 0;e.invalidProtocolRegex=/^([^\w]*)(javascript|data|vbscript)/im;e.htmlEntitiesRegex=/(\w+)(^\w|;)?/g;e.htmlCtrlEntityRegex=/&(newline|tab);/gi;e.ctrlCharactersRegex=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim;e.urlSchemeRegex=/^.+(:|:)/gim;e.whitespaceEscapeCharsRegex=/(\\|%5[cC])((%(6[eE]|72|74))|[nrt])/g;e.relativeFirstCharacters=[".","/"];e.BLANK_URL="about:blank"});var p=m(s=>{"use strict";Object.defineProperty(s,"__esModule",{value:!0});s.sanitizeUrl=void 0;var t=R();function d(r){return t.relativeFirstCharacters.indexOf(r[0])>-1}function v(r){var c=r.replace(t.ctrlCharactersRegex,"");return c.replace(t.htmlEntitiesRegex,function(a,i){return String.fromCharCode(i)})}function x(r){return URL.canParse(r)}function g(r){try{return decodeURIComponent(r)}catch{return r}}function C(r){if(!r)return t.BLANK_URL;var c,a=g(r.trim());do a=v(a).replace(t.htmlCtrlEntityRegex,"").replace(t.ctrlCharactersRegex,"").replace(t.whitespaceEscapeCharsRegex,"").trim(),a=g(a),c=a.match(t.ctrlCharactersRegex)||a.match(t.htmlEntitiesRegex)||a.match(t.htmlCtrlEntityRegex)||a.match(t.whitespaceEscapeCharsRegex);while(c&&c.length>0);var i=a;if(!i)return t.BLANK_URL;if(d(i))return i;var h=i.trimStart(),u=h.match(t.urlSchemeRegex);if(!u)return i;var n=u[0].toLowerCase().trim();if(t.invalidProtocolRegex.test(n))return t.BLANK_URL;var o=h.replace(/\\/g,"/");if(n==="mailto:"||n.includes("://"))return o;if(n==="http:"||n==="https:"){if(!x(o))return t.BLANK_URL;var l=new URL(o);return l.protocol=l.protocol.toLowerCase(),l.hostname=l.hostname.toLowerCase(),l.toString()}return o}s.sanitizeUrl=C});export{p as a};
+//# sourceMappingURL=chunk-CM5D5KZN.min.js.map
diff --git a/docs/public/chunk-CM5D5KZN.min.js.map b/docs/public/chunk-CM5D5KZN.min.js.map
new file mode 100644
index 00000000000..508e75f6f98
--- /dev/null
+++ b/docs/public/chunk-CM5D5KZN.min.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": ["../../node_modules/@braintree/sanitize-url/dist/constants.js", "../../node_modules/@braintree/sanitize-url/dist/index.js"],
+ "sourcesContent": ["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BLANK_URL = exports.relativeFirstCharacters = exports.whitespaceEscapeCharsRegex = exports.urlSchemeRegex = exports.ctrlCharactersRegex = exports.htmlCtrlEntityRegex = exports.htmlEntitiesRegex = exports.invalidProtocolRegex = void 0;\nexports.invalidProtocolRegex = /^([^\\w]*)(javascript|data|vbscript)/im;\nexports.htmlEntitiesRegex = /(\\w+)(^\\w|;)?/g;\nexports.htmlCtrlEntityRegex = /&(newline|tab);/gi;\nexports.ctrlCharactersRegex = /[\\u0000-\\u001F\\u007F-\\u009F\\u2000-\\u200D\\uFEFF]/gim;\nexports.urlSchemeRegex = /^.+(:|:)/gim;\nexports.whitespaceEscapeCharsRegex = /(\\\\|%5[cC])((%(6[eE]|72|74))|[nrt])/g;\nexports.relativeFirstCharacters = [\".\", \"/\"];\nexports.BLANK_URL = \"about:blank\";\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sanitizeUrl = void 0;\nvar constants_1 = require(\"./constants\");\nfunction isRelativeUrlWithoutProtocol(url) {\n return constants_1.relativeFirstCharacters.indexOf(url[0]) > -1;\n}\nfunction decodeHtmlCharacters(str) {\n var removedNullByte = str.replace(constants_1.ctrlCharactersRegex, \"\");\n return removedNullByte.replace(constants_1.htmlEntitiesRegex, function (match, dec) {\n return String.fromCharCode(dec);\n });\n}\nfunction isValidUrl(url) {\n return URL.canParse(url);\n}\nfunction decodeURI(uri) {\n try {\n return decodeURIComponent(uri);\n }\n catch (e) {\n // Ignoring error\n // It is possible that the URI contains a `%` not associated\n // with URI/URL-encoding.\n return uri;\n }\n}\nfunction sanitizeUrl(url) {\n if (!url) {\n return constants_1.BLANK_URL;\n }\n var charsToDecode;\n var decodedUrl = decodeURI(url.trim());\n do {\n decodedUrl = decodeHtmlCharacters(decodedUrl)\n .replace(constants_1.htmlCtrlEntityRegex, \"\")\n .replace(constants_1.ctrlCharactersRegex, \"\")\n .replace(constants_1.whitespaceEscapeCharsRegex, \"\")\n .trim();\n decodedUrl = decodeURI(decodedUrl);\n charsToDecode =\n decodedUrl.match(constants_1.ctrlCharactersRegex) ||\n decodedUrl.match(constants_1.htmlEntitiesRegex) ||\n decodedUrl.match(constants_1.htmlCtrlEntityRegex) ||\n decodedUrl.match(constants_1.whitespaceEscapeCharsRegex);\n } while (charsToDecode && charsToDecode.length > 0);\n var sanitizedUrl = decodedUrl;\n if (!sanitizedUrl) {\n return constants_1.BLANK_URL;\n }\n if (isRelativeUrlWithoutProtocol(sanitizedUrl)) {\n return sanitizedUrl;\n }\n // Remove any leading whitespace before checking the URL scheme\n var trimmedUrl = sanitizedUrl.trimStart();\n var urlSchemeParseResults = trimmedUrl.match(constants_1.urlSchemeRegex);\n if (!urlSchemeParseResults) {\n return sanitizedUrl;\n }\n var urlScheme = urlSchemeParseResults[0].toLowerCase().trim();\n if (constants_1.invalidProtocolRegex.test(urlScheme)) {\n return constants_1.BLANK_URL;\n }\n var backSanitized = trimmedUrl.replace(/\\\\/g, \"/\");\n // Handle special cases for mailto: and custom deep-link protocols\n if (urlScheme === \"mailto:\" || urlScheme.includes(\"://\")) {\n return backSanitized;\n }\n // For http and https URLs, perform additional validation\n if (urlScheme === \"http:\" || urlScheme === \"https:\") {\n if (!isValidUrl(backSanitized)) {\n return constants_1.BLANK_URL;\n }\n var url_1 = new URL(backSanitized);\n url_1.protocol = url_1.protocol.toLowerCase();\n url_1.hostname = url_1.hostname.toLowerCase();\n return url_1.toString();\n }\n return backSanitized;\n}\nexports.sanitizeUrl = sanitizeUrl;\n"],
+ "mappings": "4CAAA,IAAAA,EAAAC,EAAAC,GAAA,cACA,OAAO,eAAeA,EAAS,aAAc,CAAE,MAAO,EAAK,CAAC,EAC5DA,EAAQ,UAAYA,EAAQ,wBAA0BA,EAAQ,2BAA6BA,EAAQ,eAAiBA,EAAQ,oBAAsBA,EAAQ,oBAAsBA,EAAQ,kBAAoBA,EAAQ,qBAAuB,OAC3OA,EAAQ,qBAAuB,wCAC/BA,EAAQ,kBAAoB,mBAC5BA,EAAQ,oBAAsB,oBAC9BA,EAAQ,oBAAsB,qDAC9BA,EAAQ,eAAiB,oBACzBA,EAAQ,2BAA6B,uCACrCA,EAAQ,wBAA0B,CAAC,IAAK,GAAG,EAC3CA,EAAQ,UAAY,gBCVpB,IAAAC,EAAAC,EAAAC,GAAA,cACA,OAAO,eAAeA,EAAS,aAAc,CAAE,MAAO,EAAK,CAAC,EAC5DA,EAAQ,YAAc,OACtB,IAAIC,EAAc,IAClB,SAASC,EAA6BC,EAAK,CACvC,OAAOF,EAAY,wBAAwB,QAAQE,EAAI,CAAC,CAAC,EAAI,EACjE,CACA,SAASC,EAAqBC,EAAK,CAC/B,IAAIC,EAAkBD,EAAI,QAAQJ,EAAY,oBAAqB,EAAE,EACrE,OAAOK,EAAgB,QAAQL,EAAY,kBAAmB,SAAUM,EAAOC,EAAK,CAChF,OAAO,OAAO,aAAaA,CAAG,CAClC,CAAC,CACL,CACA,SAASC,EAAWN,EAAK,CACrB,OAAO,IAAI,SAASA,CAAG,CAC3B,CACA,SAASO,EAAUC,EAAK,CACpB,GAAI,CACA,OAAO,mBAAmBA,CAAG,CACjC,MACU,CAIN,OAAOA,CACX,CACJ,CACA,SAASC,EAAYT,EAAK,CACtB,GAAI,CAACA,EACD,OAAOF,EAAY,UAEvB,IAAIY,EACAC,EAAaJ,EAAUP,EAAI,KAAK,CAAC,EACrC,GACIW,EAAaV,EAAqBU,CAAU,EACvC,QAAQb,EAAY,oBAAqB,EAAE,EAC3C,QAAQA,EAAY,oBAAqB,EAAE,EAC3C,QAAQA,EAAY,2BAA4B,EAAE,EAClD,KAAK,EACVa,EAAaJ,EAAUI,CAAU,EACjCD,EACIC,EAAW,MAAMb,EAAY,mBAAmB,GAC5Ca,EAAW,MAAMb,EAAY,iBAAiB,GAC9Ca,EAAW,MAAMb,EAAY,mBAAmB,GAChDa,EAAW,MAAMb,EAAY,0BAA0B,QAC1DY,GAAiBA,EAAc,OAAS,GACjD,IAAIE,EAAeD,EACnB,GAAI,CAACC,EACD,OAAOd,EAAY,UAEvB,GAAIC,EAA6Ba,CAAY,EACzC,OAAOA,EAGX,IAAIC,EAAaD,EAAa,UAAU,EACpCE,EAAwBD,EAAW,MAAMf,EAAY,cAAc,EACvE,GAAI,CAACgB,EACD,OAAOF,EAEX,IAAIG,EAAYD,EAAsB,CAAC,EAAE,YAAY,EAAE,KAAK,EAC5D,GAAIhB,EAAY,qBAAqB,KAAKiB,CAAS,EAC/C,OAAOjB,EAAY,UAEvB,IAAIkB,EAAgBH,EAAW,QAAQ,MAAO,GAAG,EAEjD,GAAIE,IAAc,WAAaA,EAAU,SAAS,KAAK,EACnD,OAAOC,EAGX,GAAID,IAAc,SAAWA,IAAc,SAAU,CACjD,GAAI,CAACT,EAAWU,CAAa,EACzB,OAAOlB,EAAY,UAEvB,IAAImB,EAAQ,IAAI,IAAID,CAAa,EACjC,OAAAC,EAAM,SAAWA,EAAM,SAAS,YAAY,EAC5CA,EAAM,SAAWA,EAAM,SAAS,YAAY,EACrCA,EAAM,SAAS,CAC1B,CACA,OAAOD,CACX,CACAnB,EAAQ,YAAcY",
+ "names": ["require_constants", "__commonJSMin", "exports", "require_dist", "__commonJSMin", "exports", "constants_1", "isRelativeUrlWithoutProtocol", "url", "decodeHtmlCharacters", "str", "removedNullByte", "match", "dec", "isValidUrl", "decodeURI", "uri", "sanitizeUrl", "charsToDecode", "decodedUrl", "sanitizedUrl", "trimmedUrl", "urlSchemeParseResults", "urlScheme", "backSanitized", "url_1"]
+}
diff --git a/docs/public/chunk-CXRPJJJE.min.js b/docs/public/chunk-CXRPJJJE.min.js
new file mode 100644
index 00000000000..e4866a05294
--- /dev/null
+++ b/docs/public/chunk-CXRPJJJE.min.js
@@ -0,0 +1,2 @@
+var Pr=typeof global=="object"&&global&&global.Object===Object&&global,U=Pr;var Sr=typeof self=="object"&&self&&self.Object===Object&&self,Ir=U||Sr||Function("return this")(),c=Ir;var Mr=c.Symbol,_=Mr;var nt=Object.prototype,Er=nt.hasOwnProperty,Fr=nt.toString,E=_?_.toStringTag:void 0;function Lr(t){var r=Er.call(t,E),e=t[E];try{t[E]=void 0;var o=!0}catch{}var a=Fr.call(t);return o&&(r?t[E]=e:delete t[E]),a}var it=Lr;var Dr=Object.prototype,Gr=Dr.toString;function Nr(t){return Gr.call(t)}var ft=Nr;var zr="[object Null]",Ur="[object Undefined]",pt=_?_.toStringTag:void 0;function Rr(t){return t==null?t===void 0?Ur:zr:pt&&pt in Object(t)?it(t):ft(t)}var g=Rr;function Hr(t){var r=typeof t;return t!=null&&(r=="object"||r=="function")}var s=Hr;var Br="[object AsyncFunction]",Vr="[object Function]",Kr="[object GeneratorFunction]",qr="[object Proxy]";function $r(t){if(!s(t))return!1;var r=g(t);return r==Vr||r==Kr||r==Br||r==qr}var O=$r;var Xr=c["__core-js_shared__"],R=Xr;var ut=function(){var t=/[^.]+$/.exec(R&&R.keys&&R.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}();function Jr(t){return!!ut&&ut in t}var st=Jr;var Wr=Function.prototype,Yr=Wr.toString;function Zr(t){if(t!=null){try{return Yr.call(t)}catch{}try{return t+""}catch{}}return""}var mt=Zr;var Qr=/[\\^$.*+?()[\]{}|]/g,kr=/^\[object .+?Constructor\]$/,te=Function.prototype,re=Object.prototype,ee=te.toString,oe=re.hasOwnProperty,ae=RegExp("^"+ee.call(oe).replace(Qr,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function ne(t){if(!s(t)||st(t))return!1;var r=O(t)?ae:kr;return r.test(mt(t))}var lt=ne;function ie(t,r){return t?.[r]}var ct=ie;function fe(t,r){var e=ct(t,r);return lt(e)?e:void 0}var T=fe;var pe=T(Object,"create"),h=pe;function ue(){this.__data__=h?h(null):{},this.size=0}var dt=ue;function se(t){var r=this.has(t)&&delete this.__data__[t];return this.size-=r?1:0,r}var ht=se;var me="__lodash_hash_undefined__",le=Object.prototype,ce=le.hasOwnProperty;function de(t){var r=this.__data__;if(h){var e=r[t];return e===me?void 0:e}return ce.call(r,t)?r[t]:void 0}var gt=de;var he=Object.prototype,ge=he.hasOwnProperty;function ye(t){var r=this.__data__;return h?r[t]!==void 0:ge.call(r,t)}var yt=ye;var be="__lodash_hash_undefined__";function xe(t,r){var e=this.__data__;return this.size+=this.has(t)?0:1,e[t]=h&&r===void 0?be:r,this}var bt=xe;function j(t){var r=-1,e=t==null?0:t.length;for(this.clear();++r"),e.result!==null&&g.kind!==e.kind&&h(e,"unacceptable node kind for !<"+e.tag+'> tag; it should be "'+g.kind+'", not "'+e.kind+'"'),g.resolve(e.result,e.tag)?(e.result=g.construct(e.result,e.tag),e.anchor!==null&&(e.anchorMap[e.anchor]=e.result)):h(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")}return e.listener!==null&&e.listener("close",e),e.tag!==null||e.anchor!==null||d}f(Y,"composeNode");function Pn(e){var n=e.position,i,l,r,u=!1,o;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap=Object.create(null),e.anchorMap=Object.create(null);(o=e.input.charCodeAt(e.position))!==0&&(_(e,!0,-1),o=e.input.charCodeAt(e.position),!(e.lineIndent>0||o!==37));){for(u=!0,o=e.input.charCodeAt(++e.position),i=e.position;o!==0&&!b(o);)o=e.input.charCodeAt(++e.position);for(l=e.input.slice(i,e.position),r=[],l.length<1&&h(e,"directive name must not be less than one character in length");o!==0;){for(;k(o);)o=e.input.charCodeAt(++e.position);if(o===35){do o=e.input.charCodeAt(++e.position);while(o!==0&&!E(o));break}if(E(o))break;for(i=e.position;o!==0&&!b(o);)o=e.input.charCodeAt(++e.position);r.push(e.input.slice(i,e.position))}o!==0&&J(e),L.call(Te,l)?Te[l](e,l,r):H(e,'unknown document directive "'+l+'"')}if(_(e,!0,-1),e.lineIndent===0&&e.input.charCodeAt(e.position)===45&&e.input.charCodeAt(e.position+1)===45&&e.input.charCodeAt(e.position+2)===45?(e.position+=3,_(e,!0,-1)):u&&h(e,"directives end mark is expected"),Y(e,e.lineIndent-1,V,!1,!0),_(e,!0,-1),e.checkLineBreaks&&Wi.test(e.input.slice(n,e.position))&&H(e,"non-ASCII line breaks are interpreted as content"),e.documents.push(e.result),e.position===e.lineStart&&q(e)){e.input.charCodeAt(e.position)===46&&(e.position+=3,_(e,!0,-1));return}if(e.position
"},r),$.lineBreakRegex.test(e)))return e;let n=e.split(" ").filter(Boolean),i=[],o="";return n.forEach((a,l)=>{let c=v(`${a} `,r),u=v(o,r);if(c>t){let{hyphenatedStrings:g,remainingWord:h}=Ct(a,t,"-",r);i.push(o,...g),o=h}else u+c>=t?(i.push(o),o=a):o=[o,a].filter(Boolean).join(" ");l+1===n.length&&i.push(o)}),i.filter(a=>a!=="").join(r.joinWith)},(e,t,r)=>`${e}${t}${r.fontSize}${r.fontWeight}${r.fontFamily}${r.joinWith}`),Ct=w((e,t,r="-",n)=>{n=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:0},n);let i=[...e],o=[],a="";return i.forEach((l,c)=>{let u=`${a}${l}`;if(v(u,n)>=t){let x=c+1,g=i.length===x,h=`${u}${r}`;o.push(g?u:h),a=""}else a=u}),{hyphenatedStrings:o,remainingWord:a}},(e,t,r="-",n)=>`${e}${t}${r}${n.fontSize}${n.fontWeight}${n.fontFamily}`);function ht(e,t){return W(e,t).height}s(ht,"calculateTextHeight");function v(e,t){return W(e,t).width}s(v,"calculateTextWidth");var W=w((e,t)=>{let{fontSize:r=12,fontFamily:n="Arial",fontWeight:i=400}=t;if(!e)return{width:0,height:0};let[,o]=T(r),a=["sans-serif",n],l=e.split($.lineBreakRegex),c=[],u=L("body");if(!u.remove)return{width:0,height:0,lineHeight:0};let y=u.append("svg");for(let g of a){let h=0,d={width:0,height:0,lineHeight:0};for(let ft of l){let C=St();C.text=ft||vt;let P=Wt(y,C).style("font-size",o).style("font-weight",i).style("font-family",g),p=(P._groups||P)[0][0].getBBox();if(p.width===0&&p.height===0)throw new Error("svg element not in render tree");d.width=Math.round(Math.max(d.width,p.width)),h=Math.round(p.height),d.height+=h,d.lineHeight=Math.round(Math.max(d.lineHeight,h))}c.push(d)}y.remove();let x=isNaN(c[1].height)||isNaN(c[1].width)||isNaN(c[1].lineHeight)||c[0].height>c[1].height&&c[0].width>c[1].width&&c[0].lineHeight>c[1].lineHeight?0:1;return c[x]},(e,t)=>`${e}${t.fontSize}${t.fontWeight}${t.fontFamily}`),Pt=class{constructor(e=!1,t){this.count=0,this.count=t?t.length:0,this.next=e?()=>this.count++:()=>Date.now()}static{s(this,"InitIDGenerator")}},M,Et=s(function(e){return M=M||document.createElement("div"),e=escape(e).replace(/%26/g,"&").replace(/%23/g,"#").replace(/%3B/g,";"),M.innerHTML=e,unescape(M.textContent)},"entityDecode");function It(e){return"str"in e}s(It,"isDetailedError");var Lt=s((e,t,r,n)=>{if(!n)return;let i=e.node()?.getBBox();i&&e.append("text").text(n).attr("text-anchor","middle").attr("x",i.x+i.width/2).attr("y",-r).attr("class",t)},"insertTitle"),T=s(e=>{if(typeof e=="number")return[e,e+"px"];let t=parseInt(e??"",10);return Number.isNaN(t)?[void 0,void 0]:e===String(t)?[t,e+"px"]:[t,e]},"parseFontSize");function dt(e,t){return V({},e,t)}s(dt,"cleanAndMerge");var Dt={assignWithDepth:b,wrapLabel:Tt,calculateTextHeight:ht,calculateTextWidth:v,calculateTextDimensions:W,cleanAndMerge:dt,detectInit:pt,detectDirective:rt,isSubstringInArray:$t,interpolateToCurve:it,calcLabelPosition:st,calcCardinalityPosition:Mt,calcTerminalLabelPosition:ct,formatUrl:ot,getStylesFromArray:lt,generateId:bt,random:Bt,runFunc:wt,entityDecode:Et,insertTitle:Lt,parseFontSize:T,InitIDGenerator:Pt},Ot=s(function(e){let t=e;return t=t.replace(/style.*:\S*#.*;/g,function(r){return r.substring(0,r.length-1)}),t=t.replace(/classDef.*:\S*#.*;/g,function(r){return r.substring(0,r.length-1)}),t=t.replace(/#\w+;/g,function(r){let n=r.substring(1,r.length-1);return/^\+?\d+$/.test(n)?"\uFB02\xB0\xB0"+n+"\xB6\xDF":"\uFB02\xB0"+n+"\xB6\xDF"}),t},"encodeEntities"),jt=s(function(e){return e.replace(/fl°°/g,"").replace(/fl°/g,"&").replace(/¶ß/g,";")},"decodeEntities"),zt=s((e,t,{counter:r=0,prefix:n,suffix:i})=>`${n?`${n}_`:""}${e}_${t}_${r}${i?`_${i}`:""}`,"getEdgeId");function Ft(e){return e??null}s(Ft,"handleUndefinedAttr");export{vt as a,Ht as b,it as c,lt as d,bt as e,Bt as f,Tt as g,ht as h,v as i,It as j,T as k,dt as l,Dt as m,Ot as n,jt as o,zt as p,Ft as q};
+//# sourceMappingURL=chunk-KF4CENUX.min.js.map
diff --git a/docs/public/chunk-KF4CENUX.min.js.map b/docs/public/chunk-KF4CENUX.min.js.map
new file mode 100644
index 00000000000..1be5caefe6f
--- /dev/null
+++ b/docs/public/chunk-KF4CENUX.min.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": ["../../node_modules/mermaid/dist/chunks/mermaid.core/chunk-MCANT3UC.mjs"],
+ "sourcesContent": ["import {\n __name,\n assignWithDepth_default,\n common_default,\n detectType,\n directiveRegex,\n log,\n sanitizeDirective\n} from \"./chunk-P27NXTFD.mjs\";\n\n// src/utils.ts\nimport { sanitizeUrl } from \"@braintree/sanitize-url\";\nimport {\n curveBasis,\n curveBasisClosed,\n curveBasisOpen,\n curveBumpX,\n curveBumpY,\n curveBundle,\n curveCardinalClosed,\n curveCardinalOpen,\n curveCardinal,\n curveCatmullRomClosed,\n curveCatmullRomOpen,\n curveCatmullRom,\n curveLinear,\n curveLinearClosed,\n curveMonotoneX,\n curveMonotoneY,\n curveNatural,\n curveStep,\n curveStepAfter,\n curveStepBefore,\n select\n} from \"d3\";\nimport memoize from \"lodash-es/memoize.js\";\nimport merge from \"lodash-es/merge.js\";\nvar ZERO_WIDTH_SPACE = \"\\u200B\";\nvar d3CurveTypes = {\n curveBasis,\n curveBasisClosed,\n curveBasisOpen,\n curveBumpX,\n curveBumpY,\n curveBundle,\n curveCardinalClosed,\n curveCardinalOpen,\n curveCardinal,\n curveCatmullRomClosed,\n curveCatmullRomOpen,\n curveCatmullRom,\n curveLinear,\n curveLinearClosed,\n curveMonotoneX,\n curveMonotoneY,\n curveNatural,\n curveStep,\n curveStepAfter,\n curveStepBefore\n};\nvar directiveWithoutOpen = /\\s*(?:(\\w+)(?=:):|(\\w+))\\s*(?:(\\w+)|((?:(?!}%{2}).|\\r?\\n)*))?\\s*(?:}%{2})?/gi;\nvar detectInit = /* @__PURE__ */ __name(function(text, config) {\n const inits = detectDirective(text, /(?:init\\b)|(?:initialize\\b)/);\n let results = {};\n if (Array.isArray(inits)) {\n const args = inits.map((init) => init.args);\n sanitizeDirective(args);\n results = assignWithDepth_default(results, [...args]);\n } else {\n results = inits.args;\n }\n if (!results) {\n return;\n }\n let type = detectType(text, config);\n const prop = \"config\";\n if (results[prop] !== void 0) {\n if (type === \"flowchart-v2\") {\n type = \"flowchart\";\n }\n results[type] = results[prop];\n delete results[prop];\n }\n return results;\n}, \"detectInit\");\nvar detectDirective = /* @__PURE__ */ __name(function(text, type = null) {\n try {\n const commentWithoutDirectives = new RegExp(\n `[%]{2}(?![{]${directiveWithoutOpen.source})(?=[}][%]{2}).*\n`,\n \"ig\"\n );\n text = text.trim().replace(commentWithoutDirectives, \"\").replace(/'/gm, '\"');\n log.debug(\n `Detecting diagram directive${type !== null ? \" type:\" + type : \"\"} based on the text:${text}`\n );\n let match;\n const result = [];\n while ((match = directiveRegex.exec(text)) !== null) {\n if (match.index === directiveRegex.lastIndex) {\n directiveRegex.lastIndex++;\n }\n if (match && !type || type && match[1]?.match(type) || type && match[2]?.match(type)) {\n const type2 = match[1] ? match[1] : match[2];\n const args = match[3] ? match[3].trim() : match[4] ? JSON.parse(match[4].trim()) : null;\n result.push({ type: type2, args });\n }\n }\n if (result.length === 0) {\n return { type: text, args: null };\n }\n return result.length === 1 ? result[0] : result;\n } catch (error) {\n log.error(\n `ERROR: ${error.message} - Unable to parse directive type: '${type}' based on the text: '${text}'`\n );\n return { type: void 0, args: null };\n }\n}, \"detectDirective\");\nvar removeDirectives = /* @__PURE__ */ __name(function(text) {\n return text.replace(directiveRegex, \"\");\n}, \"removeDirectives\");\nvar isSubstringInArray = /* @__PURE__ */ __name(function(str, arr) {\n for (const [i, element] of arr.entries()) {\n if (element.match(str)) {\n return i;\n }\n }\n return -1;\n}, \"isSubstringInArray\");\nfunction interpolateToCurve(interpolate, defaultCurve) {\n if (!interpolate) {\n return defaultCurve;\n }\n const curveName = `curve${interpolate.charAt(0).toUpperCase() + interpolate.slice(1)}`;\n return d3CurveTypes[curveName] ?? defaultCurve;\n}\n__name(interpolateToCurve, \"interpolateToCurve\");\nfunction formatUrl(linkStr, config) {\n const url = linkStr.trim();\n if (!url) {\n return void 0;\n }\n if (config.securityLevel !== \"loose\") {\n return sanitizeUrl(url);\n }\n return url;\n}\n__name(formatUrl, \"formatUrl\");\nvar runFunc = /* @__PURE__ */ __name((functionName, ...params) => {\n const arrPaths = functionName.split(\".\");\n const len = arrPaths.length - 1;\n const fnName = arrPaths[len];\n let obj = window;\n for (let i = 0; i < len; i++) {\n obj = obj[arrPaths[i]];\n if (!obj) {\n log.error(`Function name: ${functionName} not found in window`);\n return;\n }\n }\n obj[fnName](...params);\n}, \"runFunc\");\nfunction distance(p1, p2) {\n if (!p1 || !p2) {\n return 0;\n }\n return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));\n}\n__name(distance, \"distance\");\nfunction traverseEdge(points) {\n let prevPoint;\n let totalDistance = 0;\n points.forEach((point) => {\n totalDistance += distance(point, prevPoint);\n prevPoint = point;\n });\n const remainingDistance = totalDistance / 2;\n return calculatePoint(points, remainingDistance);\n}\n__name(traverseEdge, \"traverseEdge\");\nfunction calcLabelPosition(points) {\n if (points.length === 1) {\n return points[0];\n }\n return traverseEdge(points);\n}\n__name(calcLabelPosition, \"calcLabelPosition\");\nvar roundNumber = /* @__PURE__ */ __name((num, precision = 2) => {\n const factor = Math.pow(10, precision);\n return Math.round(num * factor) / factor;\n}, \"roundNumber\");\nvar calculatePoint = /* @__PURE__ */ __name((points, distanceToTraverse) => {\n let prevPoint = void 0;\n let remainingDistance = distanceToTraverse;\n for (const point of points) {\n if (prevPoint) {\n const vectorDistance = distance(point, prevPoint);\n if (vectorDistance < remainingDistance) {\n remainingDistance -= vectorDistance;\n } else {\n const distanceRatio = remainingDistance / vectorDistance;\n if (distanceRatio <= 0) {\n return prevPoint;\n }\n if (distanceRatio >= 1) {\n return { x: point.x, y: point.y };\n }\n if (distanceRatio > 0 && distanceRatio < 1) {\n return {\n x: roundNumber((1 - distanceRatio) * prevPoint.x + distanceRatio * point.x, 5),\n y: roundNumber((1 - distanceRatio) * prevPoint.y + distanceRatio * point.y, 5)\n };\n }\n }\n }\n prevPoint = point;\n }\n throw new Error(\"Could not find a suitable point for the given distance\");\n}, \"calculatePoint\");\nvar calcCardinalityPosition = /* @__PURE__ */ __name((isRelationTypePresent, points, initialPosition) => {\n log.info(`our points ${JSON.stringify(points)}`);\n if (points[0] !== initialPosition) {\n points = points.reverse();\n }\n const distanceToCardinalityPoint = 25;\n const center = calculatePoint(points, distanceToCardinalityPoint);\n const d = isRelationTypePresent ? 10 : 5;\n const angle = Math.atan2(points[0].y - center.y, points[0].x - center.x);\n const cardinalityPosition = { x: 0, y: 0 };\n cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2;\n cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2;\n return cardinalityPosition;\n}, \"calcCardinalityPosition\");\nfunction calcTerminalLabelPosition(terminalMarkerSize, position, _points) {\n const points = structuredClone(_points);\n log.info(\"our points\", points);\n if (position !== \"start_left\" && position !== \"start_right\") {\n points.reverse();\n }\n const distanceToCardinalityPoint = 25 + terminalMarkerSize;\n const center = calculatePoint(points, distanceToCardinalityPoint);\n const d = 10 + terminalMarkerSize * 0.5;\n const angle = Math.atan2(points[0].y - center.y, points[0].x - center.x);\n const cardinalityPosition = { x: 0, y: 0 };\n if (position === \"start_left\") {\n cardinalityPosition.x = Math.sin(angle + Math.PI) * d + (points[0].x + center.x) / 2;\n cardinalityPosition.y = -Math.cos(angle + Math.PI) * d + (points[0].y + center.y) / 2;\n } else if (position === \"end_right\") {\n cardinalityPosition.x = Math.sin(angle - Math.PI) * d + (points[0].x + center.x) / 2 - 5;\n cardinalityPosition.y = -Math.cos(angle - Math.PI) * d + (points[0].y + center.y) / 2 - 5;\n } else if (position === \"end_left\") {\n cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2 - 5;\n cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2 - 5;\n } else {\n cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2;\n cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2;\n }\n return cardinalityPosition;\n}\n__name(calcTerminalLabelPosition, \"calcTerminalLabelPosition\");\nfunction getStylesFromArray(arr) {\n let style = \"\";\n let labelStyle = \"\";\n for (const element of arr) {\n if (element !== void 0) {\n if (element.startsWith(\"color:\") || element.startsWith(\"text-align:\")) {\n labelStyle = labelStyle + element + \";\";\n } else {\n style = style + element + \";\";\n }\n }\n }\n return { style, labelStyle };\n}\n__name(getStylesFromArray, \"getStylesFromArray\");\nvar cnt = 0;\nvar generateId = /* @__PURE__ */ __name(() => {\n cnt++;\n return \"id-\" + Math.random().toString(36).substr(2, 12) + \"-\" + cnt;\n}, \"generateId\");\nfunction makeRandomHex(length) {\n let result = \"\";\n const characters = \"0123456789abcdef\";\n const charactersLength = characters.length;\n for (let i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n return result;\n}\n__name(makeRandomHex, \"makeRandomHex\");\nvar random = /* @__PURE__ */ __name((options) => {\n return makeRandomHex(options.length);\n}, \"random\");\nvar getTextObj = /* @__PURE__ */ __name(function() {\n return {\n x: 0,\n y: 0,\n fill: void 0,\n anchor: \"start\",\n style: \"#666\",\n width: 100,\n height: 100,\n textMargin: 0,\n rx: 0,\n ry: 0,\n valign: void 0,\n text: \"\"\n };\n}, \"getTextObj\");\nvar drawSimpleText = /* @__PURE__ */ __name(function(elem, textData) {\n const nText = textData.text.replace(common_default.lineBreakRegex, \" \");\n const [, _fontSizePx] = parseFontSize(textData.fontSize);\n const textElem = elem.append(\"text\");\n textElem.attr(\"x\", textData.x);\n textElem.attr(\"y\", textData.y);\n textElem.style(\"text-anchor\", textData.anchor);\n textElem.style(\"font-family\", textData.fontFamily);\n textElem.style(\"font-size\", _fontSizePx);\n textElem.style(\"font-weight\", textData.fontWeight);\n textElem.attr(\"fill\", textData.fill);\n if (textData.class !== void 0) {\n textElem.attr(\"class\", textData.class);\n }\n const span = textElem.append(\"tspan\");\n span.attr(\"x\", textData.x + textData.textMargin * 2);\n span.attr(\"fill\", textData.fill);\n span.text(nText);\n return textElem;\n}, \"drawSimpleText\");\nvar wrapLabel = memoize(\n (label, maxWidth, config) => {\n if (!label) {\n return label;\n }\n config = Object.assign(\n { fontSize: 12, fontWeight: 400, fontFamily: \"Arial\", joinWith: \"
\" },\n config\n );\n if (common_default.lineBreakRegex.test(label)) {\n return label;\n }\n const words = label.split(\" \").filter(Boolean);\n const completedLines = [];\n let nextLine = \"\";\n words.forEach((word, index) => {\n const wordLength = calculateTextWidth(`${word} `, config);\n const nextLineLength = calculateTextWidth(nextLine, config);\n if (wordLength > maxWidth) {\n const { hyphenatedStrings, remainingWord } = breakString(word, maxWidth, \"-\", config);\n completedLines.push(nextLine, ...hyphenatedStrings);\n nextLine = remainingWord;\n } else if (nextLineLength + wordLength >= maxWidth) {\n completedLines.push(nextLine);\n nextLine = word;\n } else {\n nextLine = [nextLine, word].filter(Boolean).join(\" \");\n }\n const currentWord = index + 1;\n const isLastWord = currentWord === words.length;\n if (isLastWord) {\n completedLines.push(nextLine);\n }\n });\n return completedLines.filter((line) => line !== \"\").join(config.joinWith);\n },\n (label, maxWidth, config) => `${label}${maxWidth}${config.fontSize}${config.fontWeight}${config.fontFamily}${config.joinWith}`\n);\nvar breakString = memoize(\n (word, maxWidth, hyphenCharacter = \"-\", config) => {\n config = Object.assign(\n { fontSize: 12, fontWeight: 400, fontFamily: \"Arial\", margin: 0 },\n config\n );\n const characters = [...word];\n const lines = [];\n let currentLine = \"\";\n characters.forEach((character, index) => {\n const nextLine = `${currentLine}${character}`;\n const lineWidth = calculateTextWidth(nextLine, config);\n if (lineWidth >= maxWidth) {\n const currentCharacter = index + 1;\n const isLastLine = characters.length === currentCharacter;\n const hyphenatedNextLine = `${nextLine}${hyphenCharacter}`;\n lines.push(isLastLine ? nextLine : hyphenatedNextLine);\n currentLine = \"\";\n } else {\n currentLine = nextLine;\n }\n });\n return { hyphenatedStrings: lines, remainingWord: currentLine };\n },\n (word, maxWidth, hyphenCharacter = \"-\", config) => `${word}${maxWidth}${hyphenCharacter}${config.fontSize}${config.fontWeight}${config.fontFamily}`\n);\nfunction calculateTextHeight(text, config) {\n return calculateTextDimensions(text, config).height;\n}\n__name(calculateTextHeight, \"calculateTextHeight\");\nfunction calculateTextWidth(text, config) {\n return calculateTextDimensions(text, config).width;\n}\n__name(calculateTextWidth, \"calculateTextWidth\");\nvar calculateTextDimensions = memoize(\n (text, config) => {\n const { fontSize = 12, fontFamily = \"Arial\", fontWeight = 400 } = config;\n if (!text) {\n return { width: 0, height: 0 };\n }\n const [, _fontSizePx] = parseFontSize(fontSize);\n const fontFamilies = [\"sans-serif\", fontFamily];\n const lines = text.split(common_default.lineBreakRegex);\n const dims = [];\n const body = select(\"body\");\n if (!body.remove) {\n return { width: 0, height: 0, lineHeight: 0 };\n }\n const g = body.append(\"svg\");\n for (const fontFamily2 of fontFamilies) {\n let cHeight = 0;\n const dim = { width: 0, height: 0, lineHeight: 0 };\n for (const line of lines) {\n const textObj = getTextObj();\n textObj.text = line || ZERO_WIDTH_SPACE;\n const textElem = drawSimpleText(g, textObj).style(\"font-size\", _fontSizePx).style(\"font-weight\", fontWeight).style(\"font-family\", fontFamily2);\n const bBox = (textElem._groups || textElem)[0][0].getBBox();\n if (bBox.width === 0 && bBox.height === 0) {\n throw new Error(\"svg element not in render tree\");\n }\n dim.width = Math.round(Math.max(dim.width, bBox.width));\n cHeight = Math.round(bBox.height);\n dim.height += cHeight;\n dim.lineHeight = Math.round(Math.max(dim.lineHeight, cHeight));\n }\n dims.push(dim);\n }\n g.remove();\n const index = isNaN(dims[1].height) || isNaN(dims[1].width) || isNaN(dims[1].lineHeight) || dims[0].height > dims[1].height && dims[0].width > dims[1].width && dims[0].lineHeight > dims[1].lineHeight ? 0 : 1;\n return dims[index];\n },\n (text, config) => `${text}${config.fontSize}${config.fontWeight}${config.fontFamily}`\n);\nvar InitIDGenerator = class {\n constructor(deterministic = false, seed) {\n this.count = 0;\n this.count = seed ? seed.length : 0;\n this.next = deterministic ? () => this.count++ : () => Date.now();\n }\n static {\n __name(this, \"InitIDGenerator\");\n }\n};\nvar decoder;\nvar entityDecode = /* @__PURE__ */ __name(function(html) {\n decoder = decoder || document.createElement(\"div\");\n html = escape(html).replace(/%26/g, \"&\").replace(/%23/g, \"#\").replace(/%3B/g, \";\");\n decoder.innerHTML = html;\n return unescape(decoder.textContent);\n}, \"entityDecode\");\nfunction isDetailedError(error) {\n return \"str\" in error;\n}\n__name(isDetailedError, \"isDetailedError\");\nvar insertTitle = /* @__PURE__ */ __name((parent, cssClass, titleTopMargin, title) => {\n if (!title) {\n return;\n }\n const bounds = parent.node()?.getBBox();\n if (!bounds) {\n return;\n }\n parent.append(\"text\").text(title).attr(\"text-anchor\", \"middle\").attr(\"x\", bounds.x + bounds.width / 2).attr(\"y\", -titleTopMargin).attr(\"class\", cssClass);\n}, \"insertTitle\");\nvar parseFontSize = /* @__PURE__ */ __name((fontSize) => {\n if (typeof fontSize === \"number\") {\n return [fontSize, fontSize + \"px\"];\n }\n const fontSizeNumber = parseInt(fontSize ?? \"\", 10);\n if (Number.isNaN(fontSizeNumber)) {\n return [void 0, void 0];\n } else if (fontSize === String(fontSizeNumber)) {\n return [fontSizeNumber, fontSize + \"px\"];\n } else {\n return [fontSizeNumber, fontSize];\n }\n}, \"parseFontSize\");\nfunction cleanAndMerge(defaultData, data) {\n return merge({}, defaultData, data);\n}\n__name(cleanAndMerge, \"cleanAndMerge\");\nvar utils_default = {\n assignWithDepth: assignWithDepth_default,\n wrapLabel,\n calculateTextHeight,\n calculateTextWidth,\n calculateTextDimensions,\n cleanAndMerge,\n detectInit,\n detectDirective,\n isSubstringInArray,\n interpolateToCurve,\n calcLabelPosition,\n calcCardinalityPosition,\n calcTerminalLabelPosition,\n formatUrl,\n getStylesFromArray,\n generateId,\n random,\n runFunc,\n entityDecode,\n insertTitle,\n parseFontSize,\n InitIDGenerator\n};\nvar encodeEntities = /* @__PURE__ */ __name(function(text) {\n let txt = text;\n txt = txt.replace(/style.*:\\S*#.*;/g, function(s) {\n return s.substring(0, s.length - 1);\n });\n txt = txt.replace(/classDef.*:\\S*#.*;/g, function(s) {\n return s.substring(0, s.length - 1);\n });\n txt = txt.replace(/#\\w+;/g, function(s) {\n const innerTxt = s.substring(1, s.length - 1);\n const isInt = /^\\+?\\d+$/.test(innerTxt);\n if (isInt) {\n return \"\\uFB02\\xB0\\xB0\" + innerTxt + \"\\xB6\\xDF\";\n } else {\n return \"\\uFB02\\xB0\" + innerTxt + \"\\xB6\\xDF\";\n }\n });\n return txt;\n}, \"encodeEntities\");\nvar decodeEntities = /* @__PURE__ */ __name(function(text) {\n return text.replace(/\uFB02\u00B0\u00B0/g, \"\").replace(/\uFB02\u00B0/g, \"&\").replace(/\u00B6\u00DF/g, \";\");\n}, \"decodeEntities\");\nvar getEdgeId = /* @__PURE__ */ __name((from, to, {\n counter = 0,\n prefix,\n suffix\n}) => {\n return `${prefix ? `${prefix}_` : \"\"}${from}_${to}_${counter}${suffix ? `_${suffix}` : \"\"}`;\n}, \"getEdgeId\");\nfunction handleUndefinedAttr(attrValue) {\n return attrValue ?? null;\n}\n__name(handleUndefinedAttr, \"handleUndefinedAttr\");\n\nexport {\n ZERO_WIDTH_SPACE,\n removeDirectives,\n interpolateToCurve,\n getStylesFromArray,\n generateId,\n random,\n wrapLabel,\n calculateTextHeight,\n calculateTextWidth,\n isDetailedError,\n parseFontSize,\n cleanAndMerge,\n utils_default,\n encodeEntities,\n decodeEntities,\n getEdgeId,\n handleUndefinedAttr\n};\n"],
+ "mappings": "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",
+ "names": ["import_sanitize_url", "ZERO_WIDTH_SPACE", "d3CurveTypes", "basis_default", "basisClosed_default", "basisOpen_default", "bumpX", "bumpY", "bundle_default", "cardinalClosed_default", "cardinalOpen_default", "cardinal_default", "catmullRomClosed_default", "catmullRomOpen_default", "catmullRom_default", "linear_default", "linearClosed_default", "monotoneX", "monotoneY", "natural_default", "step_default", "stepAfter", "stepBefore", "directiveWithoutOpen", "detectInit", "__name", "text", "config", "inits", "detectDirective", "results", "args", "init", "sanitizeDirective", "assignWithDepth_default", "type", "detectType", "prop", "commentWithoutDirectives", "log", "match", "result", "directiveRegex", "type2", "error", "removeDirectives", "isSubstringInArray", "str", "arr", "i", "element", "interpolateToCurve", "interpolate", "defaultCurve", "curveName", "formatUrl", "linkStr", "url", "runFunc", "functionName", "params", "arrPaths", "len", "fnName", "obj", "distance", "p1", "p2", "traverseEdge", "points", "prevPoint", "totalDistance", "point", "remainingDistance", "calculatePoint", "calcLabelPosition", "roundNumber", "num", "precision", "factor", "distanceToTraverse", "vectorDistance", "distanceRatio", "calcCardinalityPosition", "isRelationTypePresent", "initialPosition", "center", "d", "angle", "cardinalityPosition", "calcTerminalLabelPosition", "terminalMarkerSize", "position", "_points", "distanceToCardinalityPoint", "getStylesFromArray", "style", "labelStyle", "cnt", "generateId", "makeRandomHex", "length", "characters", "charactersLength", "random", "options", "getTextObj", "drawSimpleText", "elem", "textData", "nText", "common_default", "_fontSizePx", "parseFontSize", "textElem", "span", "wrapLabel", "memoize_default", "label", "maxWidth", "words", "completedLines", "nextLine", "word", "index", "wordLength", "calculateTextWidth", "nextLineLength", "hyphenatedStrings", "remainingWord", "breakString", "line", "hyphenCharacter", "lines", "currentLine", "character", "currentCharacter", "isLastLine", "hyphenatedNextLine", "calculateTextHeight", "calculateTextDimensions", "fontSize", "fontFamily", "fontWeight", "fontFamilies", "dims", "body", "select_default", "g", "fontFamily2", "cHeight", "dim", "textObj", "bBox", "InitIDGenerator", "deterministic", "seed", "decoder", "entityDecode", "html", "isDetailedError", "insertTitle", "parent", "cssClass", "titleTopMargin", "title", "bounds", "fontSizeNumber", "cleanAndMerge", "defaultData", "data", "merge_default", "utils_default", "encodeEntities", "txt", "s", "innerTxt", "decodeEntities", "getEdgeId", "from", "to", "counter", "prefix", "suffix", "handleUndefinedAttr", "attrValue"]
+}
diff --git a/docs/public/chunk-LDPOAEOH.min.js b/docs/public/chunk-LDPOAEOH.min.js
new file mode 100644
index 00000000000..051ac54296b
--- /dev/null
+++ b/docs/public/chunk-LDPOAEOH.min.js
@@ -0,0 +1,16 @@
+import{a as Tt}from"./chunk-CIWIECNU.min.js";import{c as ft}from"./chunk-PYBRKFQJ.min.js";import{d as ct}from"./chunk-24EG6CQZ.min.js";import{i as ls,k as cs,o as ut,q as J}from"./chunk-KF4CENUX.min.js";import{D as Rt,H as Lt,I as Q,K as At,M as rs,N as is,Z as X,aa as ns,h as S,ia as Y,j as q,v as as}from"./chunk-UOD6J27N.min.js";function Wt(l,t,r){if(l&&l.length){let[a,e]=t,i=Math.PI/180*r,o=Math.cos(i),s=Math.sin(i);for(let h of l){let[n,c]=h;h[0]=(n-a)*o-(c-e)*s+a,h[1]=(n-a)*s+(c-e)*o+e}}}function _e(l,t){return l[0]===t[0]&&l[1]===t[1]}function ze(l,t,r,a=1){let e=r,i=Math.max(t,.1),o=l[0]&&l[0][0]&&typeof l[0][0]=="number"?[l]:l,s=[0,0];if(e)for(let n of o)Wt(n,s,e);let h=function(n,c,g){let f=[];for(let x of n){let b=[...x];_e(b[0],b[b.length-1])||b.push([b[0][0],b[0][1]]),b.length>2&&f.push(b)}let p=[];c=Math.max(c,.1);let u=[];for(let x of f)for(let b=0;bc%2?n+r:n+t);i.push({key:"C",data:h}),t=h[4],r=h[5];break}case"Q":i.push({key:"Q",data:[...s]}),t=s[2],r=s[3];break;case"q":{let h=s.map((n,c)=>c%2?n+r:n+t);i.push({key:"Q",data:h}),t=h[2],r=h[3];break}case"A":i.push({key:"A",data:[...s]}),t=s[5],r=s[6];break;case"a":t+=s[5],r+=s[6],i.push({key:"A",data:[s[0],s[1],s[2],s[3],s[4],t,r]});break;case"H":i.push({key:"H",data:[...s]}),t=s[0];break;case"h":t+=s[0],i.push({key:"H",data:[t]});break;case"V":i.push({key:"V",data:[...s]}),r=s[0];break;case"v":r+=s[0],i.push({key:"V",data:[r]});break;case"S":i.push({key:"S",data:[...s]}),t=s[2],r=s[3];break;case"s":{let h=s.map((n,c)=>c%2?n+r:n+t);i.push({key:"S",data:h}),t=h[2],r=h[3];break}case"T":i.push({key:"T",data:[...s]}),t=s[0],r=s[1];break;case"t":t+=s[0],r+=s[1],i.push({key:"T",data:[t,r]});break;case"Z":case"z":i.push({key:"Z",data:[]}),t=a,r=e}return i}function xs(l){let t=[],r="",a=0,e=0,i=0,o=0,s=0,h=0;for(let{key:n,data:c}of l){switch(n){case"M":t.push({key:"M",data:[...c]}),[a,e]=c,[i,o]=c;break;case"C":t.push({key:"C",data:[...c]}),a=c[4],e=c[5],s=c[2],h=c[3];break;case"L":t.push({key:"L",data:[...c]}),[a,e]=c;break;case"H":a=c[0],t.push({key:"L",data:[a,e]});break;case"V":e=c[0],t.push({key:"L",data:[a,e]});break;case"S":{let g=0,f=0;r==="C"||r==="S"?(g=a+(a-s),f=e+(e-h)):(g=a,f=e),t.push({key:"C",data:[g,f,...c]}),s=c[0],h=c[1],a=c[2],e=c[3];break}case"T":{let[g,f]=c,p=0,u=0;r==="Q"||r==="T"?(p=a+(a-s),u=e+(e-h)):(p=a,u=e);let y=a+2*(p-a)/3,m=e+2*(u-e)/3,d=g+2*(p-g)/3,x=f+2*(u-f)/3;t.push({key:"C",data:[y,m,d,x,g,f]}),s=p,h=u,a=g,e=f;break}case"Q":{let[g,f,p,u]=c,y=a+2*(g-a)/3,m=e+2*(f-e)/3,d=p+2*(g-p)/3,x=u+2*(f-u)/3;t.push({key:"C",data:[y,m,d,x,p,u]}),s=g,h=f,a=p,e=u;break}case"A":{let g=Math.abs(c[0]),f=Math.abs(c[1]),p=c[2],u=c[3],y=c[4],m=c[5],d=c[6];g===0||f===0?(t.push({key:"C",data:[a,e,m,d,m,d]}),a=m,e=d):(a!==m||e!==d)&&(bs(a,e,m,d,g,f,p,u,y).forEach(function(x){t.push({key:"C",data:x})}),a=m,e=d);break}case"Z":t.push({key:"Z",data:[]}),a=i,e=o}r=n}return t}function yt(l,t,r){return[l*Math.cos(r)-t*Math.sin(r),l*Math.sin(r)+t*Math.cos(r)]}function bs(l,t,r,a,e,i,o,s,h,n){let c=(g=o,Math.PI*g/180);var g;let f=[],p=0,u=0,y=0,m=0;if(n)[p,u,y,m]=n;else{[l,t]=yt(l,t,-c),[r,a]=yt(r,a,-c);let P=(l-r)/2,A=(t-a)/2,W=P*P/(e*e)+A*A/(i*i);W>1&&(W=Math.sqrt(W),e*=W,i*=W);let B=e*e,O=i*i,z=B*O-B*A*A-O*P*P,Z=B*A*A+O*P*P,tt=(s===h?-1:1)*Math.sqrt(Math.abs(z/Z));y=tt*e*A/i+(l+r)/2,m=tt*-i*P/e+(t+a)/2,p=Math.asin(parseFloat(((t-m)/i).toFixed(9))),u=Math.asin(parseFloat(((a-m)/i).toFixed(9))),l
"),q.info("vertexText"+e);let i={isNode:a,label:ut(e).replace(/fa[blrs]?:fa-[\w-]+/g,s=>``),labelStyle:t&&t.replace("fill:","color:")};return await vs(i)}else{let i=document.createElementNS("http://www.w3.org/2000/svg","text");i.setAttribute("style",t.replace("color:","fill:"));let o=[];typeof e=="string"?o=e.split(/\\n|\n|
/gi):Array.isArray(e)?o=e:o=[];for(let s of o){let h=document.createElementNS("http://www.w3.org/2000/svg","tspan");h.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),h.setAttribute("dy","1em"),h.setAttribute("x","0"),r?h.setAttribute("class","title-row"):h.setAttribute("class","row"),h.textContent=s.trim(),i.appendChild(h)}return i}},"createLabel"),Kt=Ze,at=S((l,t,r,a,e)=>["M",l+e,t,"H",l+r-e,"A",e,e,0,0,1,l+r,t+e,"V",t+a-e,"A",e,e,0,0,1,l+r-e,t+a,"H",l+e,"A",e,e,0,0,1,l,t+a-e,"V",t+e,"A",e,e,0,0,1,l+e,t,"Z"].join(" "),"createRoundedRectPathD"),Qe=S(l=>{let{handDrawnSeed:t}=X();return{fill:l,hachureAngle:120,hachureGap:4,fillWeight:2,roughness:.7,stroke:l,seed:t}},"solidStateFill"),pt=S(l=>{let t=Je([...l.cssCompiledStyles||[],...l.cssStyles||[]]);return{stylesMap:t,stylesArray:[...t]}},"compileStyles"),Je=S(l=>{let t=new Map;return l.forEach(r=>{let[a,e]=r.split(":");t.set(a.trim(),e?.trim())}),t},"styles2Map"),I=S(l=>{let{stylesArray:t}=pt(l),r=[],a=[],e=[],i=[];return t.forEach(o=>{let s=o[0];s==="color"||s==="font-size"||s==="font-family"||s==="font-weight"||s==="font-style"||s==="text-decoration"||s==="text-align"||s==="text-transform"||s==="line-height"||s==="letter-spacing"||s==="word-spacing"||s==="text-shadow"||s==="text-overflow"||s==="white-space"||s==="word-wrap"||s==="word-break"||s==="overflow-wrap"||s==="hyphens"?r.push(o.join(":")+" !important"):(a.push(o.join(":")+" !important"),s.includes("stroke")&&e.push(o.join(":")+" !important"),s==="fill"&&i.push(o.join(":")+" !important"))}),{labelStyles:r.join(";"),nodeStyles:a.join(";"),stylesArray:t,borderStyles:e,backgroundStyles:i}},"styles2String"),T=S((l,t)=>{let{themeVariables:r,handDrawnSeed:a}=X(),{nodeBorder:e,mainBkg:i}=r,{stylesMap:o}=pt(l);return Object.assign({roughness:.7,fill:o.get("fill")||i,fillStyle:"hachure",fillWeight:4,hachureGap:5.2,stroke:o.get("stroke")||e,seed:a,strokeWidth:o.get("stroke-width")?.replace("px","")||1.3,fillLineDash:[0,0]},t)},"userNodeOverrides"),$s=S(async(l,t)=>{q.info("Creating subgraph rect for ",t.id,t);let r=X(),{themeVariables:a,handDrawnSeed:e}=r,{clusterBkg:i,clusterBorder:o}=a,{labelStyles:s,nodeStyles:h,borderStyles:n,backgroundStyles:c}=I(t),g=l.insert("g").attr("class","cluster "+t.cssClasses).attr("id",t.id).attr("data-look",t.look),f=Q(r.flowchart.htmlLabels),p=g.insert("g").attr("class","cluster-label "),u=await ct(p,t.label,{style:t.labelStyle,useHtmlLabels:f,isNode:!0}),y=u.getBBox();if(Q(r.flowchart.htmlLabels)){let $=u.children[0],D=Y(u);y=$.getBoundingClientRect(),D.attr("width",y.width),D.attr("height",y.height)}let m=t.width<=y.width+t.padding?y.width+t.padding:t.width;t.width<=y.width+t.padding?t.diff=(m-t.width)/2-t.padding:t.diff=-t.padding;let d=t.height,x=t.x-m/2,b=t.y-d/2;q.trace("Data ",t,JSON.stringify(t));let k;if(t.look==="handDrawn"){let $=M.svg(g),D=T(t,{roughness:.7,fill:i,stroke:o,fillWeight:3,seed:e}),C=$.path(at(x,b,m,d,0),D);k=g.insert(()=>(q.debug("Rough node insert CXC",C),C),":first-child"),k.select("path:nth-child(2)").attr("style",n.join(";")),k.select("path").attr("style",c.join(";").replace("fill","stroke"))}else k=g.insert("rect",":first-child"),k.attr("style",h).attr("rx",t.rx).attr("ry",t.ry).attr("x",x).attr("y",b).attr("width",m).attr("height",d);let{subGraphTitleTopMargin:w}=Tt(r);if(p.attr("transform",`translate(${t.x-y.width/2}, ${t.y-t.height/2+w})`),s){let $=p.select("span");$&&$.attr("style",s)}let v=k.node().getBBox();return t.offsetX=0,t.width=v.width,t.height=v.height,t.offsetY=y.height-t.padding/2,t.intersect=function($){return gt(t,$)},{cluster:g,labelBBox:y}},"rect"),Ue=S((l,t)=>{let r=l.insert("g").attr("class","note-cluster").attr("id",t.id),a=r.insert("rect",":first-child"),e=0*t.padding,i=e/2;a.attr("rx",t.rx).attr("ry",t.ry).attr("x",t.x-t.width/2-i).attr("y",t.y-t.height/2-i).attr("width",t.width+e).attr("height",t.height+e).attr("fill","none");let o=a.node().getBBox();return t.width=o.width,t.height=o.height,t.intersect=function(s){return gt(t,s)},{cluster:r,labelBBox:{width:0,height:0}}},"noteGroup"),Ke=S(async(l,t)=>{let r=X(),{themeVariables:a,handDrawnSeed:e}=r,{altBackground:i,compositeBackground:o,compositeTitleBackground:s,nodeBorder:h}=a,n=l.insert("g").attr("class",t.cssClasses).attr("id",t.id).attr("data-id",t.id).attr("data-look",t.look),c=n.insert("g",":first-child"),g=n.insert("g").attr("class","cluster-label"),f=n.append("rect"),p=g.node().appendChild(await Kt(t.label,t.labelStyle,void 0,!0)),u=p.getBBox();if(Q(r.flowchart.htmlLabels)){let C=p.children[0],R=Y(p);u=C.getBoundingClientRect(),R.attr("width",u.width),R.attr("height",u.height)}let y=0*t.padding,m=y/2,d=(t.width<=u.width+t.padding?u.width+t.padding:t.width)+y;t.width<=u.width+t.padding?t.diff=(d-t.width)/2-t.padding:t.diff=-t.padding;let x=t.height+y,b=t.height+y-u.height-6,k=t.x-d/2,w=t.y-x/2;t.width=d;let v=t.y-t.height/2-m+u.height+2,$;if(t.look==="handDrawn"){let C=t.cssClasses.includes("statediagram-cluster-alt"),R=M.svg(n),L=t.rx||t.ry?R.path(at(k,w,d,x,10),{roughness:.7,fill:s,fillStyle:"solid",stroke:h,seed:e}):R.rectangle(k,w,d,x,{seed:e});$=n.insert(()=>L,":first-child");let E=R.rectangle(k,v,d,b,{fill:C?i:o,fillStyle:C?"hachure":"solid",stroke:h,seed:e});$=n.insert(()=>L,":first-child"),f=n.insert(()=>E)}else $=c.insert("rect",":first-child"),$.attr("class","outer").attr("x",k).attr("y",w).attr("width",d).attr("height",x).attr("data-look",t.look),f.attr("class","inner").attr("x",k).attr("y",v).attr("width",d).attr("height",b);g.attr("transform",`translate(${t.x-u.width/2}, ${w+1-(Q(r.flowchart.htmlLabels)?0:3)})`);let D=$.node().getBBox();return t.height=D.height,t.offsetX=0,t.offsetY=u.height-t.padding/2,t.labelBBox=u,t.intersect=function(C){return gt(t,C)},{cluster:n,labelBBox:u}},"roundedWithTitle"),ta=S(async(l,t)=>{q.info("Creating subgraph rect for ",t.id,t);let r=X(),{themeVariables:a,handDrawnSeed:e}=r,{clusterBkg:i,clusterBorder:o}=a,{labelStyles:s,nodeStyles:h,borderStyles:n,backgroundStyles:c}=I(t),g=l.insert("g").attr("class","cluster "+t.cssClasses).attr("id",t.id).attr("data-look",t.look),f=Q(r.flowchart.htmlLabels),p=g.insert("g").attr("class","cluster-label "),u=await ct(p,t.label,{style:t.labelStyle,useHtmlLabels:f,isNode:!0,width:t.width}),y=u.getBBox();if(Q(r.flowchart.htmlLabels)){let $=u.children[0],D=Y(u);y=$.getBoundingClientRect(),D.attr("width",y.width),D.attr("height",y.height)}let m=t.width<=y.width+t.padding?y.width+t.padding:t.width;t.width<=y.width+t.padding?t.diff=(m-t.width)/2-t.padding:t.diff=-t.padding;let d=t.height,x=t.x-m/2,b=t.y-d/2;q.trace("Data ",t,JSON.stringify(t));let k;if(t.look==="handDrawn"){let $=M.svg(g),D=T(t,{roughness:.7,fill:i,stroke:o,fillWeight:4,seed:e}),C=$.path(at(x,b,m,d,t.rx),D);k=g.insert(()=>(q.debug("Rough node insert CXC",C),C),":first-child"),k.select("path:nth-child(2)").attr("style",n.join(";")),k.select("path").attr("style",c.join(";").replace("fill","stroke"))}else k=g.insert("rect",":first-child"),k.attr("style",h).attr("rx",t.rx).attr("ry",t.ry).attr("x",x).attr("y",b).attr("width",m).attr("height",d);let{subGraphTitleTopMargin:w}=Tt(r);if(p.attr("transform",`translate(${t.x-y.width/2}, ${t.y-t.height/2+w})`),s){let $=p.select("span");$&&$.attr("style",s)}let v=k.node().getBBox();return t.offsetX=0,t.width=v.width,t.height=v.height,t.offsetY=y.height-t.padding/2,t.intersect=function($){return gt(t,$)},{cluster:g,labelBBox:y}},"kanbanSection"),sa=S((l,t)=>{let r=X(),{themeVariables:a,handDrawnSeed:e}=r,{nodeBorder:i}=a,o=l.insert("g").attr("class",t.cssClasses).attr("id",t.id).attr("data-look",t.look),s=o.insert("g",":first-child"),h=0*t.padding,n=t.width+h;t.diff=-t.padding;let c=t.height+h,g=t.x-n/2,f=t.y-c/2;t.width=n;let p;if(t.look==="handDrawn"){let m=M.svg(o).rectangle(g,f,n,c,{fill:"lightgrey",roughness:.5,strokeLineDash:[5],stroke:i,seed:e});p=o.insert(()=>m,":first-child")}else p=s.insert("rect",":first-child"),p.attr("class","divider").attr("x",g).attr("y",f).attr("width",n).attr("height",c).attr("data-look",t.look);let u=p.node().getBBox();return t.height=u.height,t.offsetX=0,t.offsetY=0,t.intersect=function(y){return gt(t,y)},{cluster:o,labelBBox:{}}},"divider"),ea=$s,aa={rect:$s,squareRect:ea,roundedWithTitle:Ke,noteGroup:Ue,divider:sa,kanbanSection:ta},Ds=new Map,Ta=S(async(l,t)=>{let r=t.shape||"rect",a=await aa[r](l,t);return Ds.set(t.id,a),a},"insertCluster"),Wa=S(()=>{Ds=new Map},"clear");function Ps(l,t){return l.intersect(t)}S(Ps,"intersectNode");var ra=Ps;function Cs(l,t,r,a){var e=l.x,i=l.y,o=e-a.x,s=i-a.y,h=Math.sqrt(t*t*s*s+r*r*o*o),n=Math.abs(t*r*o/h);a.x
"):f,t.labelStyle,!0,!0)),y=u.children[0],m=Y(u);g=y.getBoundingClientRect(),m.attr("width",g.width),m.attr("height",g.height);let d=(t.padding||0)/2;Y(u).attr("transform","translate( "+(g.width>p.width?0:(p.width-g.width)/2)+", "+(p.height+d+5)+")"),Y(c).attr("transform","translate( "+(g.width
").length,g.innerHTML.includes("")&&(c+=g.innerHTML.split("
\");\n log.info(\"vertexText\" + vertexText);\n const node = {\n isNode,\n label: decodeEntities(vertexText).replace(\n /fa[blrs]?:fa-[\\w-]+/g,\n (s) => ``\n ),\n labelStyle: style ? style.replace(\"fill:\", \"color:\") : style\n };\n let vertexNode = await addHtmlLabel(node);\n return vertexNode;\n } else {\n const svgLabel = document.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n svgLabel.setAttribute(\"style\", style.replace(\"color:\", \"fill:\"));\n let rows = [];\n if (typeof vertexText === \"string\") {\n rows = vertexText.split(/\\\\n|\\n|
/gi);\n } else if (Array.isArray(vertexText)) {\n rows = vertexText;\n } else {\n rows = [];\n }\n for (const row of rows) {\n const tspan = document.createElementNS(\"http://www.w3.org/2000/svg\", \"tspan\");\n tspan.setAttributeNS(\"http://www.w3.org/XML/1998/namespace\", \"xml:space\", \"preserve\");\n tspan.setAttribute(\"dy\", \"1em\");\n tspan.setAttribute(\"x\", \"0\");\n if (isTitle) {\n tspan.setAttribute(\"class\", \"title-row\");\n } else {\n tspan.setAttribute(\"class\", \"row\");\n }\n tspan.textContent = row.trim();\n svgLabel.appendChild(tspan);\n }\n return svgLabel;\n }\n}, \"createLabel\");\nvar createLabel_default = createLabel;\n\n// src/rendering-util/rendering-elements/shapes/roundedRectPath.ts\nvar createRoundedRectPathD = /* @__PURE__ */ __name((x, y, totalWidth, totalHeight, radius) => [\n \"M\",\n x + radius,\n y,\n // Move to the first point\n \"H\",\n x + totalWidth - radius,\n // Draw horizontal line to the beginning of the right corner\n \"A\",\n radius,\n radius,\n 0,\n 0,\n 1,\n x + totalWidth,\n y + radius,\n // Draw arc to the right top corner\n \"V\",\n y + totalHeight - radius,\n // Draw vertical line down to the beginning of the right bottom corner\n \"A\",\n radius,\n radius,\n 0,\n 0,\n 1,\n x + totalWidth - radius,\n y + totalHeight,\n // Draw arc to the right bottom corner\n \"H\",\n x + radius,\n // Draw horizontal line to the beginning of the left bottom corner\n \"A\",\n radius,\n radius,\n 0,\n 0,\n 1,\n x,\n y + totalHeight - radius,\n // Draw arc to the left bottom corner\n \"V\",\n y + radius,\n // Draw vertical line up to the beginning of the left top corner\n \"A\",\n radius,\n radius,\n 0,\n 0,\n 1,\n x + radius,\n y,\n // Draw arc to the left top corner\n \"Z\"\n // Close the path\n].join(\" \"), \"createRoundedRectPathD\");\n\n// src/rendering-util/rendering-elements/shapes/handDrawnShapeStyles.ts\nvar solidStateFill = /* @__PURE__ */ __name((color) => {\n const { handDrawnSeed } = getConfig2();\n return {\n fill: color,\n hachureAngle: 120,\n // angle of hachure,\n hachureGap: 4,\n fillWeight: 2,\n roughness: 0.7,\n stroke: color,\n seed: handDrawnSeed\n };\n}, \"solidStateFill\");\nvar compileStyles = /* @__PURE__ */ __name((node) => {\n const stylesMap = styles2Map([...node.cssCompiledStyles || [], ...node.cssStyles || []]);\n return { stylesMap, stylesArray: [...stylesMap] };\n}, \"compileStyles\");\nvar styles2Map = /* @__PURE__ */ __name((styles) => {\n const styleMap = /* @__PURE__ */ new Map();\n styles.forEach((style) => {\n const [key, value] = style.split(\":\");\n styleMap.set(key.trim(), value?.trim());\n });\n return styleMap;\n}, \"styles2Map\");\nvar styles2String = /* @__PURE__ */ __name((node) => {\n const { stylesArray } = compileStyles(node);\n const labelStyles = [];\n const nodeStyles = [];\n const borderStyles = [];\n const backgroundStyles = [];\n stylesArray.forEach((style) => {\n const key = style[0];\n if (key === \"color\" || key === \"font-size\" || key === \"font-family\" || key === \"font-weight\" || key === \"font-style\" || key === \"text-decoration\" || key === \"text-align\" || key === \"text-transform\" || key === \"line-height\" || key === \"letter-spacing\" || key === \"word-spacing\" || key === \"text-shadow\" || key === \"text-overflow\" || key === \"white-space\" || key === \"word-wrap\" || key === \"word-break\" || key === \"overflow-wrap\" || key === \"hyphens\") {\n labelStyles.push(style.join(\":\") + \" !important\");\n } else {\n nodeStyles.push(style.join(\":\") + \" !important\");\n if (key.includes(\"stroke\")) {\n borderStyles.push(style.join(\":\") + \" !important\");\n }\n if (key === \"fill\") {\n backgroundStyles.push(style.join(\":\") + \" !important\");\n }\n }\n });\n return {\n labelStyles: labelStyles.join(\";\"),\n nodeStyles: nodeStyles.join(\";\"),\n stylesArray,\n borderStyles,\n backgroundStyles\n };\n}, \"styles2String\");\nvar userNodeOverrides = /* @__PURE__ */ __name((node, options) => {\n const { themeVariables, handDrawnSeed } = getConfig2();\n const { nodeBorder, mainBkg } = themeVariables;\n const { stylesMap } = compileStyles(node);\n const result = Object.assign(\n {\n roughness: 0.7,\n fill: stylesMap.get(\"fill\") || mainBkg,\n fillStyle: \"hachure\",\n // solid fill\n fillWeight: 4,\n hachureGap: 5.2,\n stroke: stylesMap.get(\"stroke\") || nodeBorder,\n seed: handDrawnSeed,\n strokeWidth: stylesMap.get(\"stroke-width\")?.replace(\"px\", \"\") || 1.3,\n fillLineDash: [0, 0]\n },\n options\n );\n return result;\n}, \"userNodeOverrides\");\n\n// src/rendering-util/rendering-elements/clusters.js\nvar rect = /* @__PURE__ */ __name(async (parent, node) => {\n log.info(\"Creating subgraph rect for \", node.id, node);\n const siteConfig = getConfig2();\n const { themeVariables, handDrawnSeed } = siteConfig;\n const { clusterBkg, clusterBorder } = themeVariables;\n const { labelStyles, nodeStyles, borderStyles, backgroundStyles } = styles2String(node);\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"cluster \" + node.cssClasses).attr(\"id\", node.id).attr(\"data-look\", node.look);\n const useHtmlLabels = evaluate(siteConfig.flowchart.htmlLabels);\n const labelEl = shapeSvg.insert(\"g\").attr(\"class\", \"cluster-label \");\n const text2 = await createText(labelEl, node.label, {\n style: node.labelStyle,\n useHtmlLabels,\n isNode: true\n });\n let bbox = text2.getBBox();\n if (evaluate(siteConfig.flowchart.htmlLabels)) {\n const div = text2.children[0];\n const dv = select3(text2);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n const width = node.width <= bbox.width + node.padding ? bbox.width + node.padding : node.width;\n if (node.width <= bbox.width + node.padding) {\n node.diff = (width - node.width) / 2 - node.padding;\n } else {\n node.diff = -node.padding;\n }\n const height = node.height;\n const x = node.x - width / 2;\n const y = node.y - height / 2;\n log.trace(\"Data \", node, JSON.stringify(node));\n let rect2;\n if (node.look === \"handDrawn\") {\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {\n roughness: 0.7,\n fill: clusterBkg,\n // fill: 'red',\n stroke: clusterBorder,\n fillWeight: 3,\n seed: handDrawnSeed\n });\n const roughNode = rc.path(createRoundedRectPathD(x, y, width, height, 0), options);\n rect2 = shapeSvg.insert(() => {\n log.debug(\"Rough node insert CXC\", roughNode);\n return roughNode;\n }, \":first-child\");\n rect2.select(\"path:nth-child(2)\").attr(\"style\", borderStyles.join(\";\"));\n rect2.select(\"path\").attr(\"style\", backgroundStyles.join(\";\").replace(\"fill\", \"stroke\"));\n } else {\n rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"style\", nodeStyles).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height);\n }\n const { subGraphTitleTopMargin } = getSubGraphTitleMargins(siteConfig);\n labelEl.attr(\n \"transform\",\n // This puts the label on top of the box instead of inside it\n `translate(${node.x - bbox.width / 2}, ${node.y - node.height / 2 + subGraphTitleTopMargin})`\n );\n if (labelStyles) {\n const span = labelEl.select(\"span\");\n if (span) {\n span.attr(\"style\", labelStyles);\n }\n }\n const rectBox = rect2.node().getBBox();\n node.offsetX = 0;\n node.width = rectBox.width;\n node.height = rectBox.height;\n node.offsetY = bbox.height - node.padding / 2;\n node.intersect = function(point) {\n return intersect_rect_default(node, point);\n };\n return { cluster: shapeSvg, labelBBox: bbox };\n}, \"rect\");\nvar noteGroup = /* @__PURE__ */ __name((parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"note-cluster\").attr(\"id\", node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n rect2.attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", node.x - node.width / 2 - halfPadding).attr(\"y\", node.y - node.height / 2 - halfPadding).attr(\"width\", node.width + padding).attr(\"height\", node.height + padding).attr(\"fill\", \"none\");\n const rectBox = rect2.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n node.intersect = function(point) {\n return intersect_rect_default(node, point);\n };\n return { cluster: shapeSvg, labelBBox: { width: 0, height: 0 } };\n}, \"noteGroup\");\nvar roundedWithTitle = /* @__PURE__ */ __name(async (parent, node) => {\n const siteConfig = getConfig2();\n const { themeVariables, handDrawnSeed } = siteConfig;\n const { altBackground, compositeBackground, compositeTitleBackground, nodeBorder } = themeVariables;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", node.cssClasses).attr(\"id\", node.id).attr(\"data-id\", node.id).attr(\"data-look\", node.look);\n const outerRectG = shapeSvg.insert(\"g\", \":first-child\");\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"cluster-label\");\n let innerRect = shapeSvg.append(\"rect\");\n const text2 = label.node().appendChild(await createLabel_default(node.label, node.labelStyle, void 0, true));\n let bbox = text2.getBBox();\n if (evaluate(siteConfig.flowchart.htmlLabels)) {\n const div = text2.children[0];\n const dv = select3(text2);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n const width = (node.width <= bbox.width + node.padding ? bbox.width + node.padding : node.width) + padding;\n if (node.width <= bbox.width + node.padding) {\n node.diff = (width - node.width) / 2 - node.padding;\n } else {\n node.diff = -node.padding;\n }\n const height = node.height + padding;\n const innerHeight = node.height + padding - bbox.height - 6;\n const x = node.x - width / 2;\n const y = node.y - height / 2;\n node.width = width;\n const innerY = node.y - node.height / 2 - halfPadding + bbox.height + 2;\n let rect2;\n if (node.look === \"handDrawn\") {\n const isAlt = node.cssClasses.includes(\"statediagram-cluster-alt\");\n const rc = rough.svg(shapeSvg);\n const roughOuterNode = node.rx || node.ry ? rc.path(createRoundedRectPathD(x, y, width, height, 10), {\n roughness: 0.7,\n fill: compositeTitleBackground,\n fillStyle: \"solid\",\n stroke: nodeBorder,\n seed: handDrawnSeed\n }) : rc.rectangle(x, y, width, height, { seed: handDrawnSeed });\n rect2 = shapeSvg.insert(() => roughOuterNode, \":first-child\");\n const roughInnerNode = rc.rectangle(x, innerY, width, innerHeight, {\n fill: isAlt ? altBackground : compositeBackground,\n fillStyle: isAlt ? \"hachure\" : \"solid\",\n stroke: nodeBorder,\n seed: handDrawnSeed\n });\n rect2 = shapeSvg.insert(() => roughOuterNode, \":first-child\");\n innerRect = shapeSvg.insert(() => roughInnerNode);\n } else {\n rect2 = outerRectG.insert(\"rect\", \":first-child\");\n const outerRectClass = \"outer\";\n rect2.attr(\"class\", outerRectClass).attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height).attr(\"data-look\", node.look);\n innerRect.attr(\"class\", \"inner\").attr(\"x\", x).attr(\"y\", innerY).attr(\"width\", width).attr(\"height\", innerHeight);\n }\n label.attr(\n \"transform\",\n `translate(${node.x - bbox.width / 2}, ${y + 1 - (evaluate(siteConfig.flowchart.htmlLabels) ? 0 : 3)})`\n );\n const rectBox = rect2.node().getBBox();\n node.height = rectBox.height;\n node.offsetX = 0;\n node.offsetY = bbox.height - node.padding / 2;\n node.labelBBox = bbox;\n node.intersect = function(point) {\n return intersect_rect_default(node, point);\n };\n return { cluster: shapeSvg, labelBBox: bbox };\n}, \"roundedWithTitle\");\nvar kanbanSection = /* @__PURE__ */ __name(async (parent, node) => {\n log.info(\"Creating subgraph rect for \", node.id, node);\n const siteConfig = getConfig2();\n const { themeVariables, handDrawnSeed } = siteConfig;\n const { clusterBkg, clusterBorder } = themeVariables;\n const { labelStyles, nodeStyles, borderStyles, backgroundStyles } = styles2String(node);\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"cluster \" + node.cssClasses).attr(\"id\", node.id).attr(\"data-look\", node.look);\n const useHtmlLabels = evaluate(siteConfig.flowchart.htmlLabels);\n const labelEl = shapeSvg.insert(\"g\").attr(\"class\", \"cluster-label \");\n const text2 = await createText(labelEl, node.label, {\n style: node.labelStyle,\n useHtmlLabels,\n isNode: true,\n width: node.width\n });\n let bbox = text2.getBBox();\n if (evaluate(siteConfig.flowchart.htmlLabels)) {\n const div = text2.children[0];\n const dv = select3(text2);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n const width = node.width <= bbox.width + node.padding ? bbox.width + node.padding : node.width;\n if (node.width <= bbox.width + node.padding) {\n node.diff = (width - node.width) / 2 - node.padding;\n } else {\n node.diff = -node.padding;\n }\n const height = node.height;\n const x = node.x - width / 2;\n const y = node.y - height / 2;\n log.trace(\"Data \", node, JSON.stringify(node));\n let rect2;\n if (node.look === \"handDrawn\") {\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {\n roughness: 0.7,\n fill: clusterBkg,\n // fill: 'red',\n stroke: clusterBorder,\n fillWeight: 4,\n seed: handDrawnSeed\n });\n const roughNode = rc.path(createRoundedRectPathD(x, y, width, height, node.rx), options);\n rect2 = shapeSvg.insert(() => {\n log.debug(\"Rough node insert CXC\", roughNode);\n return roughNode;\n }, \":first-child\");\n rect2.select(\"path:nth-child(2)\").attr(\"style\", borderStyles.join(\";\"));\n rect2.select(\"path\").attr(\"style\", backgroundStyles.join(\";\").replace(\"fill\", \"stroke\"));\n } else {\n rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"style\", nodeStyles).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height);\n }\n const { subGraphTitleTopMargin } = getSubGraphTitleMargins(siteConfig);\n labelEl.attr(\n \"transform\",\n // This puts the label on top of the box instead of inside it\n `translate(${node.x - bbox.width / 2}, ${node.y - node.height / 2 + subGraphTitleTopMargin})`\n );\n if (labelStyles) {\n const span = labelEl.select(\"span\");\n if (span) {\n span.attr(\"style\", labelStyles);\n }\n }\n const rectBox = rect2.node().getBBox();\n node.offsetX = 0;\n node.width = rectBox.width;\n node.height = rectBox.height;\n node.offsetY = bbox.height - node.padding / 2;\n node.intersect = function(point) {\n return intersect_rect_default(node, point);\n };\n return { cluster: shapeSvg, labelBBox: bbox };\n}, \"kanbanSection\");\nvar divider = /* @__PURE__ */ __name((parent, node) => {\n const siteConfig = getConfig2();\n const { themeVariables, handDrawnSeed } = siteConfig;\n const { nodeBorder } = themeVariables;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", node.cssClasses).attr(\"id\", node.id).attr(\"data-look\", node.look);\n const outerRectG = shapeSvg.insert(\"g\", \":first-child\");\n const padding = 0 * node.padding;\n const width = node.width + padding;\n node.diff = -node.padding;\n const height = node.height + padding;\n const x = node.x - width / 2;\n const y = node.y - height / 2;\n node.width = width;\n let rect2;\n if (node.look === \"handDrawn\") {\n const rc = rough.svg(shapeSvg);\n const roughOuterNode = rc.rectangle(x, y, width, height, {\n fill: \"lightgrey\",\n roughness: 0.5,\n strokeLineDash: [5],\n stroke: nodeBorder,\n seed: handDrawnSeed\n });\n rect2 = shapeSvg.insert(() => roughOuterNode, \":first-child\");\n } else {\n rect2 = outerRectG.insert(\"rect\", \":first-child\");\n const outerRectClass = \"divider\";\n rect2.attr(\"class\", outerRectClass).attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height).attr(\"data-look\", node.look);\n }\n const rectBox = rect2.node().getBBox();\n node.height = rectBox.height;\n node.offsetX = 0;\n node.offsetY = 0;\n node.intersect = function(point) {\n return intersect_rect_default(node, point);\n };\n return { cluster: shapeSvg, labelBBox: {} };\n}, \"divider\");\nvar squareRect = rect;\nvar shapes = {\n rect,\n squareRect,\n roundedWithTitle,\n noteGroup,\n divider,\n kanbanSection\n};\nvar clusterElems = /* @__PURE__ */ new Map();\nvar insertCluster = /* @__PURE__ */ __name(async (elem, node) => {\n const shape = node.shape || \"rect\";\n const cluster = await shapes[shape](elem, node);\n clusterElems.set(node.id, cluster);\n return cluster;\n}, \"insertCluster\");\nvar clear = /* @__PURE__ */ __name(() => {\n clusterElems = /* @__PURE__ */ new Map();\n}, \"clear\");\n\n// src/rendering-util/rendering-elements/intersect/intersect-node.js\nfunction intersectNode(node, point) {\n return node.intersect(point);\n}\n__name(intersectNode, \"intersectNode\");\nvar intersect_node_default = intersectNode;\n\n// src/rendering-util/rendering-elements/intersect/intersect-ellipse.js\nfunction intersectEllipse(node, rx, ry, point) {\n var cx = node.x;\n var cy = node.y;\n var px = cx - point.x;\n var py = cy - point.y;\n var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);\n var dx = Math.abs(rx * ry * px / det);\n if (point.x < cx) {\n dx = -dx;\n }\n var dy = Math.abs(rx * ry * py / det);\n if (point.y < cy) {\n dy = -dy;\n }\n return { x: cx + dx, y: cy + dy };\n}\n__name(intersectEllipse, \"intersectEllipse\");\nvar intersect_ellipse_default = intersectEllipse;\n\n// src/rendering-util/rendering-elements/intersect/intersect-circle.js\nfunction intersectCircle(node, rx, point) {\n return intersect_ellipse_default(node, rx, rx, point);\n}\n__name(intersectCircle, \"intersectCircle\");\nvar intersect_circle_default = intersectCircle;\n\n// src/rendering-util/rendering-elements/intersect/intersect-line.js\nfunction intersectLine(p1, p2, q1, q2) {\n var a1, a2, b1, b2, c1, c2;\n var r1, r2, r3, r4;\n var denom, offset, num;\n var x, y;\n a1 = p2.y - p1.y;\n b1 = p1.x - p2.x;\n c1 = p2.x * p1.y - p1.x * p2.y;\n r3 = a1 * q1.x + b1 * q1.y + c1;\n r4 = a1 * q2.x + b1 * q2.y + c1;\n if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {\n return;\n }\n a2 = q2.y - q1.y;\n b2 = q1.x - q2.x;\n c2 = q2.x * q1.y - q1.x * q2.y;\n r1 = a2 * p1.x + b2 * p1.y + c2;\n r2 = a2 * p2.x + b2 * p2.y + c2;\n if (r1 !== 0 && r2 !== 0 && sameSign(r1, r2)) {\n return;\n }\n denom = a1 * b2 - a2 * b1;\n if (denom === 0) {\n return;\n }\n offset = Math.abs(denom / 2);\n num = b1 * c2 - b2 * c1;\n x = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n num = a2 * c1 - a1 * c2;\n y = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n return { x, y };\n}\n__name(intersectLine, \"intersectLine\");\nfunction sameSign(r1, r2) {\n return r1 * r2 > 0;\n}\n__name(sameSign, \"sameSign\");\nvar intersect_line_default = intersectLine;\n\n// src/rendering-util/rendering-elements/intersect/intersect-polygon.js\nfunction intersectPolygon(node, polyPoints, point) {\n let x1 = node.x;\n let y1 = node.y;\n let intersections = [];\n let minX = Number.POSITIVE_INFINITY;\n let minY = Number.POSITIVE_INFINITY;\n if (typeof polyPoints.forEach === \"function\") {\n polyPoints.forEach(function(entry) {\n minX = Math.min(minX, entry.x);\n minY = Math.min(minY, entry.y);\n });\n } else {\n minX = Math.min(minX, polyPoints.x);\n minY = Math.min(minY, polyPoints.y);\n }\n let left = x1 - node.width / 2 - minX;\n let top = y1 - node.height / 2 - minY;\n for (let i = 0; i < polyPoints.length; i++) {\n let p1 = polyPoints[i];\n let p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];\n let intersect = intersect_line_default(\n node,\n point,\n { x: left + p1.x, y: top + p1.y },\n { x: left + p2.x, y: top + p2.y }\n );\n if (intersect) {\n intersections.push(intersect);\n }\n }\n if (!intersections.length) {\n return node;\n }\n if (intersections.length > 1) {\n intersections.sort(function(p, q) {\n let pdx = p.x - point.x;\n let pdy = p.y - point.y;\n let distp = Math.sqrt(pdx * pdx + pdy * pdy);\n let qdx = q.x - point.x;\n let qdy = q.y - point.y;\n let distq = Math.sqrt(qdx * qdx + qdy * qdy);\n return distp < distq ? -1 : distp === distq ? 0 : 1;\n });\n }\n return intersections[0];\n}\n__name(intersectPolygon, \"intersectPolygon\");\nvar intersect_polygon_default = intersectPolygon;\n\n// src/rendering-util/rendering-elements/intersect/index.js\nvar intersect_default = {\n node: intersect_node_default,\n circle: intersect_circle_default,\n ellipse: intersect_ellipse_default,\n polygon: intersect_polygon_default,\n rect: intersect_rect_default\n};\n\n// src/rendering-util/rendering-elements/shapes/anchor.ts\nimport rough2 from \"roughjs\";\nfunction anchor(parent, node) {\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const classes = getNodeClasses(node);\n let cssClasses = classes;\n if (!classes) {\n cssClasses = \"anchor\";\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", cssClasses).attr(\"id\", node.domId || node.id);\n const radius = 1;\n const { cssStyles } = node;\n const rc = rough2.svg(shapeSvg);\n const options = userNodeOverrides(node, { fill: \"black\", stroke: \"none\", fillStyle: \"solid\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n }\n const roughNode = rc.circle(0, 0, radius * 2, options);\n const circleElem = shapeSvg.insert(() => roughNode, \":first-child\");\n circleElem.attr(\"class\", \"anchor\").attr(\"style\", handleUndefinedAttr(cssStyles));\n updateNodeBounds(node, circleElem);\n node.intersect = function(point) {\n log.info(\"Circle intersect\", node, radius, point);\n return intersect_default.circle(node, radius, point);\n };\n return shapeSvg;\n}\n__name(anchor, \"anchor\");\n\n// src/rendering-util/rendering-elements/shapes/bowTieRect.ts\nimport rough3 from \"roughjs\";\nfunction generateArcPoints(x1, y1, x2, y2, rx, ry, clockwise) {\n const numPoints = 20;\n const midX = (x1 + x2) / 2;\n const midY = (y1 + y2) / 2;\n const angle = Math.atan2(y2 - y1, x2 - x1);\n const dx = (x2 - x1) / 2;\n const dy = (y2 - y1) / 2;\n const transformedX = dx / rx;\n const transformedY = dy / ry;\n const distance = Math.sqrt(transformedX ** 2 + transformedY ** 2);\n if (distance > 1) {\n throw new Error(\"The given radii are too small to create an arc between the points.\");\n }\n const scaledCenterDistance = Math.sqrt(1 - distance ** 2);\n const centerX = midX + scaledCenterDistance * ry * Math.sin(angle) * (clockwise ? -1 : 1);\n const centerY = midY - scaledCenterDistance * rx * Math.cos(angle) * (clockwise ? -1 : 1);\n const startAngle = Math.atan2((y1 - centerY) / ry, (x1 - centerX) / rx);\n const endAngle = Math.atan2((y2 - centerY) / ry, (x2 - centerX) / rx);\n let angleRange = endAngle - startAngle;\n if (clockwise && angleRange < 0) {\n angleRange += 2 * Math.PI;\n }\n if (!clockwise && angleRange > 0) {\n angleRange -= 2 * Math.PI;\n }\n const points = [];\n for (let i = 0; i < numPoints; i++) {\n const t = i / (numPoints - 1);\n const angle2 = startAngle + t * angleRange;\n const x = centerX + rx * Math.cos(angle2);\n const y = centerY + ry * Math.sin(angle2);\n points.push({ x, y });\n }\n return points;\n}\n__name(generateArcPoints, \"generateArcPoints\");\nasync function bowTieRect(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + node.padding + 20;\n const h = bbox.height + node.padding;\n const ry = h / 2;\n const rx = ry / (2.5 + h / 50);\n const { cssStyles } = node;\n const points = [\n { x: w / 2, y: -h / 2 },\n { x: -w / 2, y: -h / 2 },\n ...generateArcPoints(-w / 2, -h / 2, -w / 2, h / 2, rx, ry, false),\n { x: w / 2, y: h / 2 },\n ...generateArcPoints(w / 2, h / 2, w / 2, -h / 2, rx, ry, true)\n ];\n const rc = rough3.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const bowTieRectPath = createPathFromPoints(points);\n const bowTieRectShapePath = rc.path(bowTieRectPath, options);\n const bowTieRectShape = shapeSvg.insert(() => bowTieRectShapePath, \":first-child\");\n bowTieRectShape.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n bowTieRectShape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n bowTieRectShape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n bowTieRectShape.attr(\"transform\", `translate(${rx / 2}, 0)`);\n updateNodeBounds(node, bowTieRectShape);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(bowTieRect, \"bowTieRect\");\n\n// src/rendering-util/rendering-elements/shapes/card.ts\nimport rough4 from \"roughjs\";\n\n// src/rendering-util/rendering-elements/shapes/insertPolygonShape.ts\nfunction insertPolygonShape(parent, w, h, points) {\n return parent.insert(\"polygon\", \":first-child\").attr(\n \"points\",\n points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")\n ).attr(\"class\", \"label-container\").attr(\"transform\", \"translate(\" + -w / 2 + \",\" + h / 2 + \")\");\n}\n__name(insertPolygonShape, \"insertPolygonShape\");\n\n// src/rendering-util/rendering-elements/shapes/card.ts\nasync function card(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const h = bbox.height + node.padding;\n const padding = 12;\n const w = bbox.width + node.padding + padding;\n const left = 0;\n const right = w;\n const top = -h;\n const bottom = 0;\n const points = [\n { x: left + padding, y: top },\n { x: right, y: top },\n { x: right, y: bottom },\n { x: left, y: bottom },\n { x: left, y: top + padding },\n { x: left + padding, y: top }\n ];\n let polygon;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough4.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-w / 2}, ${h / 2})`);\n if (cssStyles) {\n polygon.attr(\"style\", cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n if (nodeStyles) {\n polygon.attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(card, \"card\");\n\n// src/rendering-util/rendering-elements/shapes/choice.ts\nimport rough5 from \"roughjs\";\nfunction choice(parent, node) {\n const { nodeStyles } = styles2String(node);\n node.label = \"\";\n const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId ?? node.id);\n const { cssStyles } = node;\n const s = Math.max(28, node.width ?? 0);\n const points = [\n { x: 0, y: s / 2 },\n { x: s / 2, y: 0 },\n { x: 0, y: -s / 2 },\n { x: -s / 2, y: 0 }\n ];\n const rc = rough5.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const choicePath = createPathFromPoints(points);\n const roughNode = rc.path(choicePath, options);\n const choiceShape = shapeSvg.insert(() => roughNode, \":first-child\");\n if (cssStyles && node.look !== \"handDrawn\") {\n choiceShape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n choiceShape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n node.width = 28;\n node.height = 28;\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(choice, \"choice\");\n\n// src/rendering-util/rendering-elements/shapes/circle.ts\nimport rough6 from \"roughjs\";\nasync function circle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, halfPadding } = await labelHelper(parent, node, getNodeClasses(node));\n const radius = bbox.width / 2 + halfPadding;\n let circleElem;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough6.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const roughNode = rc.circle(0, 0, radius * 2, options);\n circleElem = shapeSvg.insert(() => roughNode, \":first-child\");\n circleElem.attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles));\n } else {\n circleElem = shapeSvg.insert(\"circle\", \":first-child\").attr(\"class\", \"basic label-container\").attr(\"style\", nodeStyles).attr(\"r\", radius).attr(\"cx\", 0).attr(\"cy\", 0);\n }\n updateNodeBounds(node, circleElem);\n node.intersect = function(point) {\n log.info(\"Circle intersect\", node, radius, point);\n return intersect_default.circle(node, radius, point);\n };\n return shapeSvg;\n}\n__name(circle, \"circle\");\n\n// src/rendering-util/rendering-elements/shapes/crossedCircle.ts\nimport rough7 from \"roughjs\";\nfunction createLine(r) {\n const xAxis45 = Math.cos(Math.PI / 4);\n const yAxis45 = Math.sin(Math.PI / 4);\n const lineLength = r * 2;\n const pointQ1 = { x: lineLength / 2 * xAxis45, y: lineLength / 2 * yAxis45 };\n const pointQ2 = { x: -(lineLength / 2) * xAxis45, y: lineLength / 2 * yAxis45 };\n const pointQ3 = { x: -(lineLength / 2) * xAxis45, y: -(lineLength / 2) * yAxis45 };\n const pointQ4 = { x: lineLength / 2 * xAxis45, y: -(lineLength / 2) * yAxis45 };\n return `M ${pointQ2.x},${pointQ2.y} L ${pointQ4.x},${pointQ4.y}\n M ${pointQ1.x},${pointQ1.y} L ${pointQ3.x},${pointQ3.y}`;\n}\n__name(createLine, \"createLine\");\nfunction crossedCircle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n node.label = \"\";\n const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId ?? node.id);\n const radius = Math.max(30, node?.width ?? 0);\n const { cssStyles } = node;\n const rc = rough7.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const circleNode = rc.circle(0, 0, radius * 2, options);\n const linePath = createLine(radius);\n const lineNode = rc.path(linePath, options);\n const crossedCircle2 = shapeSvg.insert(() => circleNode, \":first-child\");\n crossedCircle2.insert(() => lineNode);\n if (cssStyles && node.look !== \"handDrawn\") {\n crossedCircle2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n crossedCircle2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, crossedCircle2);\n node.intersect = function(point) {\n log.info(\"crossedCircle intersect\", node, { radius, point });\n const pos = intersect_default.circle(node, radius, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(crossedCircle, \"crossedCircle\");\n\n// src/rendering-util/rendering-elements/shapes/curlyBraceLeft.ts\nimport rough8 from \"roughjs\";\nfunction generateCirclePoints2(centerX, centerY, radius, numPoints = 100, startAngle = 0, endAngle = 180) {\n const points = [];\n const startAngleRad = startAngle * Math.PI / 180;\n const endAngleRad = endAngle * Math.PI / 180;\n const angleRange = endAngleRad - startAngleRad;\n const angleStep = angleRange / (numPoints - 1);\n for (let i = 0; i < numPoints; i++) {\n const angle = startAngleRad + i * angleStep;\n const x = centerX + radius * Math.cos(angle);\n const y = centerY + radius * Math.sin(angle);\n points.push({ x: -x, y: -y });\n }\n return points;\n}\n__name(generateCirclePoints2, \"generateCirclePoints\");\nasync function curlyBraceLeft(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + (node.padding ?? 0);\n const h = bbox.height + (node.padding ?? 0);\n const radius = Math.max(5, h * 0.1);\n const { cssStyles } = node;\n const points = [\n ...generateCirclePoints2(w / 2, -h / 2, radius, 30, -90, 0),\n { x: -w / 2 - radius, y: radius },\n ...generateCirclePoints2(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints2(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: -w / 2 - radius, y: -h / 2 },\n ...generateCirclePoints2(w / 2, h / 2, radius, 20, 0, 90)\n ];\n const rectPoints = [\n { x: w / 2, y: -h / 2 - radius },\n { x: -w / 2, y: -h / 2 - radius },\n ...generateCirclePoints2(w / 2, -h / 2, radius, 20, -90, 0),\n { x: -w / 2 - radius, y: -radius },\n ...generateCirclePoints2(w / 2 + w * 0.1, -radius, radius, 20, -180, -270),\n ...generateCirclePoints2(w / 2 + w * 0.1, radius, radius, 20, -90, -180),\n { x: -w / 2 - radius, y: h / 2 },\n ...generateCirclePoints2(w / 2, h / 2, radius, 20, 0, 90),\n { x: -w / 2, y: h / 2 + radius },\n { x: w / 2, y: h / 2 + radius }\n ];\n const rc = rough8.svg(shapeSvg);\n const options = userNodeOverrides(node, { fill: \"none\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const curlyBraceLeftPath = createPathFromPoints(points);\n const newCurlyBracePath = curlyBraceLeftPath.replace(\"Z\", \"\");\n const curlyBraceLeftNode = rc.path(newCurlyBracePath, options);\n const rectPath = createPathFromPoints(rectPoints);\n const rectShape = rc.path(rectPath, { ...options });\n const curlyBraceLeftShape = shapeSvg.insert(\"g\", \":first-child\");\n curlyBraceLeftShape.insert(() => rectShape, \":first-child\").attr(\"stroke-opacity\", 0);\n curlyBraceLeftShape.insert(() => curlyBraceLeftNode, \":first-child\");\n curlyBraceLeftShape.attr(\"class\", \"text\");\n if (cssStyles && node.look !== \"handDrawn\") {\n curlyBraceLeftShape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n curlyBraceLeftShape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n curlyBraceLeftShape.attr(\"transform\", `translate(${radius}, 0)`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + radius - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, curlyBraceLeftShape);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, rectPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(curlyBraceLeft, \"curlyBraceLeft\");\n\n// src/rendering-util/rendering-elements/shapes/curlyBraceRight.ts\nimport rough9 from \"roughjs\";\nfunction generateCirclePoints3(centerX, centerY, radius, numPoints = 100, startAngle = 0, endAngle = 180) {\n const points = [];\n const startAngleRad = startAngle * Math.PI / 180;\n const endAngleRad = endAngle * Math.PI / 180;\n const angleRange = endAngleRad - startAngleRad;\n const angleStep = angleRange / (numPoints - 1);\n for (let i = 0; i < numPoints; i++) {\n const angle = startAngleRad + i * angleStep;\n const x = centerX + radius * Math.cos(angle);\n const y = centerY + radius * Math.sin(angle);\n points.push({ x, y });\n }\n return points;\n}\n__name(generateCirclePoints3, \"generateCirclePoints\");\nasync function curlyBraceRight(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + (node.padding ?? 0);\n const h = bbox.height + (node.padding ?? 0);\n const radius = Math.max(5, h * 0.1);\n const { cssStyles } = node;\n const points = [\n ...generateCirclePoints3(w / 2, -h / 2, radius, 20, -90, 0),\n { x: w / 2 + radius, y: -radius },\n ...generateCirclePoints3(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints3(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: w / 2 + radius, y: h / 2 },\n ...generateCirclePoints3(w / 2, h / 2, radius, 20, 0, 90)\n ];\n const rectPoints = [\n { x: -w / 2, y: -h / 2 - radius },\n { x: w / 2, y: -h / 2 - radius },\n ...generateCirclePoints3(w / 2, -h / 2, radius, 20, -90, 0),\n { x: w / 2 + radius, y: -radius },\n ...generateCirclePoints3(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints3(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: w / 2 + radius, y: h / 2 },\n ...generateCirclePoints3(w / 2, h / 2, radius, 20, 0, 90),\n { x: w / 2, y: h / 2 + radius },\n { x: -w / 2, y: h / 2 + radius }\n ];\n const rc = rough9.svg(shapeSvg);\n const options = userNodeOverrides(node, { fill: \"none\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const curlyBraceRightPath = createPathFromPoints(points);\n const newCurlyBracePath = curlyBraceRightPath.replace(\"Z\", \"\");\n const curlyBraceRightNode = rc.path(newCurlyBracePath, options);\n const rectPath = createPathFromPoints(rectPoints);\n const rectShape = rc.path(rectPath, { ...options });\n const curlyBraceRightShape = shapeSvg.insert(\"g\", \":first-child\");\n curlyBraceRightShape.insert(() => rectShape, \":first-child\").attr(\"stroke-opacity\", 0);\n curlyBraceRightShape.insert(() => curlyBraceRightNode, \":first-child\");\n curlyBraceRightShape.attr(\"class\", \"text\");\n if (cssStyles && node.look !== \"handDrawn\") {\n curlyBraceRightShape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n curlyBraceRightShape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n curlyBraceRightShape.attr(\"transform\", `translate(${-radius}, 0)`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + (node.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, curlyBraceRightShape);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, rectPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(curlyBraceRight, \"curlyBraceRight\");\n\n// src/rendering-util/rendering-elements/shapes/curlyBraces.ts\nimport rough10 from \"roughjs\";\nfunction generateCirclePoints4(centerX, centerY, radius, numPoints = 100, startAngle = 0, endAngle = 180) {\n const points = [];\n const startAngleRad = startAngle * Math.PI / 180;\n const endAngleRad = endAngle * Math.PI / 180;\n const angleRange = endAngleRad - startAngleRad;\n const angleStep = angleRange / (numPoints - 1);\n for (let i = 0; i < numPoints; i++) {\n const angle = startAngleRad + i * angleStep;\n const x = centerX + radius * Math.cos(angle);\n const y = centerY + radius * Math.sin(angle);\n points.push({ x: -x, y: -y });\n }\n return points;\n}\n__name(generateCirclePoints4, \"generateCirclePoints\");\nasync function curlyBraces(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + (node.padding ?? 0);\n const h = bbox.height + (node.padding ?? 0);\n const radius = Math.max(5, h * 0.1);\n const { cssStyles } = node;\n const leftCurlyBracePoints = [\n ...generateCirclePoints4(w / 2, -h / 2, radius, 30, -90, 0),\n { x: -w / 2 - radius, y: radius },\n ...generateCirclePoints4(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints4(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: -w / 2 - radius, y: -h / 2 },\n ...generateCirclePoints4(w / 2, h / 2, radius, 20, 0, 90)\n ];\n const rightCurlyBracePoints = [\n ...generateCirclePoints4(-w / 2 + radius + radius / 2, -h / 2, radius, 20, -90, -180),\n { x: w / 2 - radius / 2, y: radius },\n ...generateCirclePoints4(-w / 2 - radius / 2, -radius, radius, 20, 0, 90),\n ...generateCirclePoints4(-w / 2 - radius / 2, radius, radius, 20, -90, 0),\n { x: w / 2 - radius / 2, y: -radius },\n ...generateCirclePoints4(-w / 2 + radius + radius / 2, h / 2, radius, 30, -180, -270)\n ];\n const rectPoints = [\n { x: w / 2, y: -h / 2 - radius },\n { x: -w / 2, y: -h / 2 - radius },\n ...generateCirclePoints4(w / 2, -h / 2, radius, 20, -90, 0),\n { x: -w / 2 - radius, y: -radius },\n ...generateCirclePoints4(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints4(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: -w / 2 - radius, y: h / 2 },\n ...generateCirclePoints4(w / 2, h / 2, radius, 20, 0, 90),\n { x: -w / 2, y: h / 2 + radius },\n { x: w / 2 - radius - radius / 2, y: h / 2 + radius },\n ...generateCirclePoints4(-w / 2 + radius + radius / 2, -h / 2, radius, 20, -90, -180),\n { x: w / 2 - radius / 2, y: radius },\n ...generateCirclePoints4(-w / 2 - radius / 2, -radius, radius, 20, 0, 90),\n ...generateCirclePoints4(-w / 2 - radius / 2, radius, radius, 20, -90, 0),\n { x: w / 2 - radius / 2, y: -radius },\n ...generateCirclePoints4(-w / 2 + radius + radius / 2, h / 2, radius, 30, -180, -270)\n ];\n const rc = rough10.svg(shapeSvg);\n const options = userNodeOverrides(node, { fill: \"none\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const leftCurlyBracePath = createPathFromPoints(leftCurlyBracePoints);\n const newLeftCurlyBracePath = leftCurlyBracePath.replace(\"Z\", \"\");\n const leftCurlyBraceNode = rc.path(newLeftCurlyBracePath, options);\n const rightCurlyBracePath = createPathFromPoints(rightCurlyBracePoints);\n const newRightCurlyBracePath = rightCurlyBracePath.replace(\"Z\", \"\");\n const rightCurlyBraceNode = rc.path(newRightCurlyBracePath, options);\n const rectPath = createPathFromPoints(rectPoints);\n const rectShape = rc.path(rectPath, { ...options });\n const curlyBracesShape = shapeSvg.insert(\"g\", \":first-child\");\n curlyBracesShape.insert(() => rectShape, \":first-child\").attr(\"stroke-opacity\", 0);\n curlyBracesShape.insert(() => leftCurlyBraceNode, \":first-child\");\n curlyBracesShape.insert(() => rightCurlyBraceNode, \":first-child\");\n curlyBracesShape.attr(\"class\", \"text\");\n if (cssStyles && node.look !== \"handDrawn\") {\n curlyBracesShape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n curlyBracesShape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n curlyBracesShape.attr(\"transform\", `translate(${radius - radius / 4}, 0)`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + (node.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, curlyBracesShape);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, rectPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(curlyBraces, \"curlyBraces\");\n\n// src/rendering-util/rendering-elements/shapes/curvedTrapezoid.ts\nimport rough11 from \"roughjs\";\nasync function curvedTrapezoid(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const minWidth = 80, minHeight = 20;\n const w = Math.max(minWidth, (bbox.width + (node.padding ?? 0) * 2) * 1.25, node?.width ?? 0);\n const h = Math.max(minHeight, bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const radius = h / 2;\n const { cssStyles } = node;\n const rc = rough11.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const totalWidth = w, totalHeight = h;\n const rw = totalWidth - radius;\n const tw = totalHeight / 4;\n const points = [\n { x: rw, y: 0 },\n { x: tw, y: 0 },\n { x: 0, y: totalHeight / 2 },\n { x: tw, y: totalHeight },\n { x: rw, y: totalHeight },\n ...generateCirclePoints(-rw, -totalHeight / 2, radius, 50, 270, 90)\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n polygon.attr(\"transform\", `translate(${-w / 2}, ${-h / 2})`);\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(curvedTrapezoid, \"curvedTrapezoid\");\n\n// src/rendering-util/rendering-elements/shapes/cylinder.ts\nimport rough12 from \"roughjs\";\nvar createCylinderPathD = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return [\n `M${x},${y + ry}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `a${rx},${ry} 0,0,0 ${-width},0`,\n `l0,${height}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `l0,${-height}`\n ].join(\" \");\n}, \"createCylinderPathD\");\nvar createOuterCylinderPathD = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return [\n `M${x},${y + ry}`,\n `M${x + width},${y + ry}`,\n `a${rx},${ry} 0,0,0 ${-width},0`,\n `l0,${height}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `l0,${-height}`\n ].join(\" \");\n}, \"createOuterCylinderPathD\");\nvar createInnerCylinderPathD = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return [`M${x - width / 2},${-height / 2}`, `a${rx},${ry} 0,0,0 ${width},0`].join(\" \");\n}, \"createInnerCylinderPathD\");\nasync function cylinder(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + node.padding, node.width ?? 0);\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = Math.max(bbox.height + ry + node.padding, node.height ?? 0);\n let cylinder2;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough12.svg(shapeSvg);\n const outerPathData = createOuterCylinderPathD(0, 0, w, h, rx, ry);\n const innerPathData = createInnerCylinderPathD(0, ry, w, h, rx, ry);\n const outerNode = rc.path(outerPathData, userNodeOverrides(node, {}));\n const innerLine = rc.path(innerPathData, userNodeOverrides(node, { fill: \"none\" }));\n cylinder2 = shapeSvg.insert(() => innerLine, \":first-child\");\n cylinder2 = shapeSvg.insert(() => outerNode, \":first-child\");\n cylinder2.attr(\"class\", \"basic label-container\");\n if (cssStyles) {\n cylinder2.attr(\"style\", cssStyles);\n }\n } else {\n const pathData = createCylinderPathD(0, 0, w, h, rx, ry);\n cylinder2 = shapeSvg.insert(\"path\", \":first-child\").attr(\"d\", pathData).attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles)).attr(\"style\", nodeStyles);\n }\n cylinder2.attr(\"label-offset-y\", ry);\n cylinder2.attr(\"transform\", `translate(${-w / 2}, ${-(h / 2 + ry)})`);\n updateNodeBounds(node, cylinder2);\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + (node.padding ?? 0) / 1.5 - (bbox.y - (bbox.top ?? 0))})`\n );\n node.intersect = function(point) {\n const pos = intersect_default.rect(node, point);\n const x = pos.x - (node.x ?? 0);\n if (rx != 0 && (Math.abs(x) < (node.width ?? 0) / 2 || Math.abs(x) == (node.width ?? 0) / 2 && Math.abs(pos.y - (node.y ?? 0)) > (node.height ?? 0) / 2 - ry)) {\n let y = ry * ry * (1 - x * x / (rx * rx));\n if (y > 0) {\n y = Math.sqrt(y);\n }\n y = ry - y;\n if (point.y - (node.y ?? 0) > 0) {\n y = -y;\n }\n pos.y += y;\n }\n return pos;\n };\n return shapeSvg;\n}\n__name(cylinder, \"cylinder\");\n\n// src/rendering-util/rendering-elements/shapes/dividedRect.ts\nimport rough13 from \"roughjs\";\nasync function dividedRectangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const rectOffset = h * 0.2;\n const x = -w / 2;\n const y = -h / 2 - rectOffset / 2;\n const { cssStyles } = node;\n const rc = rough13.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const pts = [\n { x, y: y + rectOffset },\n { x: -x, y: y + rectOffset },\n { x: -x, y: -y },\n { x, y: -y },\n { x, y },\n { x: -x, y },\n { x: -x, y: y + rectOffset }\n ];\n const poly = rc.polygon(\n pts.map((p) => [p.x, p.y]),\n options\n );\n const polygon = shapeSvg.insert(() => poly, \":first-child\");\n polygon.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n label.attr(\n \"transform\",\n `translate(${x + (node.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))}, ${y + rectOffset + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n const pos = intersect_default.rect(node, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(dividedRectangle, \"dividedRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/doubleCircle.ts\nimport rough14 from \"roughjs\";\nasync function doublecircle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, halfPadding } = await labelHelper(parent, node, getNodeClasses(node));\n const gap = 5;\n const outerRadius = bbox.width / 2 + halfPadding + gap;\n const innerRadius = bbox.width / 2 + halfPadding;\n let circleGroup;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough14.svg(shapeSvg);\n const outerOptions = userNodeOverrides(node, { roughness: 0.2, strokeWidth: 2.5 });\n const innerOptions = userNodeOverrides(node, { roughness: 0.2, strokeWidth: 1.5 });\n const outerRoughNode = rc.circle(0, 0, outerRadius * 2, outerOptions);\n const innerRoughNode = rc.circle(0, 0, innerRadius * 2, innerOptions);\n circleGroup = shapeSvg.insert(\"g\", \":first-child\");\n circleGroup.attr(\"class\", handleUndefinedAttr(node.cssClasses)).attr(\"style\", handleUndefinedAttr(cssStyles));\n circleGroup.node()?.appendChild(outerRoughNode);\n circleGroup.node()?.appendChild(innerRoughNode);\n } else {\n circleGroup = shapeSvg.insert(\"g\", \":first-child\");\n const outerCircle = circleGroup.insert(\"circle\", \":first-child\");\n const innerCircle = circleGroup.insert(\"circle\");\n circleGroup.attr(\"class\", \"basic label-container\").attr(\"style\", nodeStyles);\n outerCircle.attr(\"class\", \"outer-circle\").attr(\"style\", nodeStyles).attr(\"r\", outerRadius).attr(\"cx\", 0).attr(\"cy\", 0);\n innerCircle.attr(\"class\", \"inner-circle\").attr(\"style\", nodeStyles).attr(\"r\", innerRadius).attr(\"cx\", 0).attr(\"cy\", 0);\n }\n updateNodeBounds(node, circleGroup);\n node.intersect = function(point) {\n log.info(\"DoubleCircle intersect\", node, outerRadius, point);\n return intersect_default.circle(node, outerRadius, point);\n };\n return shapeSvg;\n}\n__name(doublecircle, \"doublecircle\");\n\n// src/rendering-util/rendering-elements/shapes/filledCircle.ts\nimport rough15 from \"roughjs\";\nfunction filledCircle(parent, node, { config: { themeVariables } }) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.label = \"\";\n node.labelStyle = labelStyles;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId ?? node.id);\n const radius = 7;\n const { cssStyles } = node;\n const rc = rough15.svg(shapeSvg);\n const { nodeBorder } = themeVariables;\n const options = userNodeOverrides(node, { fillStyle: \"solid\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n }\n const circleNode = rc.circle(0, 0, radius * 2, options);\n const filledCircle2 = shapeSvg.insert(() => circleNode, \":first-child\");\n filledCircle2.selectAll(\"path\").attr(\"style\", `fill: ${nodeBorder} !important;`);\n if (cssStyles && cssStyles.length > 0 && node.look !== \"handDrawn\") {\n filledCircle2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n filledCircle2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, filledCircle2);\n node.intersect = function(point) {\n log.info(\"filledCircle intersect\", node, { radius, point });\n const pos = intersect_default.circle(node, radius, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(filledCircle, \"filledCircle\");\n\n// src/rendering-util/rendering-elements/shapes/flippedTriangle.ts\nimport rough16 from \"roughjs\";\nasync function flippedTriangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + (node.padding ?? 0);\n const h = w + bbox.height;\n const tw = w + bbox.height;\n const points = [\n { x: 0, y: -h },\n { x: tw, y: -h },\n { x: tw / 2, y: 0 }\n ];\n const { cssStyles } = node;\n const rc = rough16.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n const flippedTriangle2 = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-h / 2}, ${h / 2})`);\n if (cssStyles && node.look !== \"handDrawn\") {\n flippedTriangle2.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n flippedTriangle2.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, flippedTriangle2);\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${-h / 2 + (node.padding ?? 0) / 2 + (bbox.y - (bbox.top ?? 0))})`\n );\n node.intersect = function(point) {\n log.info(\"Triangle intersect\", node, points, point);\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(flippedTriangle, \"flippedTriangle\");\n\n// src/rendering-util/rendering-elements/shapes/forkJoin.ts\nimport rough17 from \"roughjs\";\nfunction forkJoin(parent, node, { dir, config: { state: state2, themeVariables } }) {\n const { nodeStyles } = styles2String(node);\n node.label = \"\";\n const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId ?? node.id);\n const { cssStyles } = node;\n let width = Math.max(70, node?.width ?? 0);\n let height = Math.max(10, node?.height ?? 0);\n if (dir === \"LR\") {\n width = Math.max(10, node?.width ?? 0);\n height = Math.max(70, node?.height ?? 0);\n }\n const x = -1 * width / 2;\n const y = -1 * height / 2;\n const rc = rough17.svg(shapeSvg);\n const options = userNodeOverrides(node, {\n stroke: themeVariables.lineColor,\n fill: themeVariables.lineColor\n });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const roughNode = rc.rectangle(x, y, width, height, options);\n const shape = shapeSvg.insert(() => roughNode, \":first-child\");\n if (cssStyles && node.look !== \"handDrawn\") {\n shape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n shape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, shape);\n const padding = state2?.padding ?? 0;\n if (node.width && node.height) {\n node.width += padding / 2 || 0;\n node.height += padding / 2 || 0;\n }\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(forkJoin, \"forkJoin\");\n\n// src/rendering-util/rendering-elements/shapes/halfRoundedRectangle.ts\nimport rough18 from \"roughjs\";\nasync function halfRoundedRectangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const minWidth = 80, minHeight = 50;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(minWidth, bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(minHeight, bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const radius = h / 2;\n const { cssStyles } = node;\n const rc = rough18.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2, y: -h / 2 },\n { x: w / 2 - radius, y: -h / 2 },\n ...generateCirclePoints(-w / 2 + radius, 0, radius, 50, 90, 270),\n { x: w / 2 - radius, y: h / 2 },\n { x: -w / 2, y: h / 2 }\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n log.info(\"Pill intersect\", node, { radius, point });\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(halfRoundedRectangle, \"halfRoundedRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/hexagon.ts\nimport rough19 from \"roughjs\";\nvar createHexagonPathD = /* @__PURE__ */ __name((x, y, width, height, m) => {\n return [\n `M${x + m},${y}`,\n `L${x + width - m},${y}`,\n `L${x + width},${y - height / 2}`,\n `L${x + width - m},${y - height}`,\n `L${x + m},${y - height}`,\n `L${x},${y - height / 2}`,\n \"Z\"\n ].join(\" \");\n}, \"createHexagonPathD\");\nasync function hexagon(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const f = 4;\n const h = bbox.height + node.padding;\n const m = h / f;\n const w = bbox.width + 2 * m + node.padding;\n const points = [\n { x: m, y: 0 },\n { x: w - m, y: 0 },\n { x: w, y: -h / 2 },\n { x: w - m, y: -h },\n { x: m, y: -h },\n { x: 0, y: -h / 2 }\n ];\n let polygon;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough19.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createHexagonPathD(0, 0, w, h, m);\n const roughNode = rc.path(pathData, options);\n polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-w / 2}, ${h / 2})`);\n if (cssStyles) {\n polygon.attr(\"style\", cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n if (nodeStyles) {\n polygon.attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(hexagon, \"hexagon\");\n\n// src/rendering-util/rendering-elements/shapes/hourglass.ts\nimport rough20 from \"roughjs\";\nasync function hourglass(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.label = \"\";\n node.labelStyle = labelStyles;\n const { shapeSvg } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(30, node?.width ?? 0);\n const h = Math.max(30, node?.height ?? 0);\n const { cssStyles } = node;\n const rc = rough20.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: 0, y: h },\n { x: w, y: h }\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n polygon.attr(\"transform\", `translate(${-w / 2}, ${-h / 2})`);\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n log.info(\"Pill intersect\", node, { points });\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(hourglass, \"hourglass\");\n\n// src/rendering-util/rendering-elements/shapes/icon.ts\nimport rough21 from \"roughjs\";\nasync function icon(parent, node, { config: { themeVariables, flowchart } }) {\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const assetHeight = node.assetHeight ?? 48;\n const assetWidth = node.assetWidth ?? 48;\n const iconSize = Math.max(assetHeight, assetWidth);\n const defaultWidth = flowchart?.wrappingWidth;\n node.width = Math.max(iconSize, defaultWidth ?? 0);\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, \"icon-shape default\");\n const topLabel = node.pos === \"t\";\n const height = iconSize;\n const width = iconSize;\n const { nodeBorder } = themeVariables;\n const { stylesMap } = compileStyles(node);\n const x = -width / 2;\n const y = -height / 2;\n const labelPadding = node.label ? 8 : 0;\n const rc = rough21.svg(shapeSvg);\n const options = userNodeOverrides(node, { stroke: \"none\", fill: \"none\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const iconNode = rc.rectangle(x, y, width, height, options);\n const outerWidth = Math.max(width, bbox.width);\n const outerHeight = height + bbox.height + labelPadding;\n const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, {\n ...options,\n fill: \"transparent\",\n stroke: \"none\"\n });\n const iconShape = shapeSvg.insert(() => iconNode, \":first-child\");\n const outerShape = shapeSvg.insert(() => outerNode);\n if (node.icon) {\n const iconElem = shapeSvg.append(\"g\");\n iconElem.html(\n `
\") : textRows,\n node.labelStyle,\n true,\n true\n )\n );\n const div = descr.children[0];\n const dv = select4(descr);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n const halfPadding = (node.padding || 0) / 2;\n select4(descr).attr(\n \"transform\",\n \"translate( \" + (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) + \", \" + (titleBox.height + halfPadding + 5) + \")\"\n );\n select4(text2).attr(\n \"transform\",\n \"translate( \" + (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) + \", 0)\"\n );\n bbox = label.node().getBBox();\n label.attr(\n \"transform\",\n \"translate(\" + -bbox.width / 2 + \", \" + (-bbox.height / 2 - halfPadding + 3) + \")\"\n );\n const totalWidth = bbox.width + (node.padding || 0);\n const totalHeight = bbox.height + (node.padding || 0);\n const x = -bbox.width / 2 - halfPadding;\n const y = -bbox.height / 2 - halfPadding;\n let rect2;\n let innerLine;\n if (node.look === \"handDrawn\") {\n const rc = rough38.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const roughNode = rc.path(\n createRoundedRectPathD(x, y, totalWidth, totalHeight, node.rx || 0),\n options\n );\n const roughLine = rc.line(\n -bbox.width / 2 - halfPadding,\n -bbox.height / 2 - halfPadding + titleBox.height + halfPadding,\n bbox.width / 2 + halfPadding,\n -bbox.height / 2 - halfPadding + titleBox.height + halfPadding,\n options\n );\n innerLine = shapeSvg.insert(() => {\n log.debug(\"Rough node insert CXC\", roughNode);\n return roughLine;\n }, \":first-child\");\n rect2 = shapeSvg.insert(() => {\n log.debug(\"Rough node insert CXC\", roughNode);\n return roughNode;\n }, \":first-child\");\n } else {\n rect2 = g.insert(\"rect\", \":first-child\");\n innerLine = g.insert(\"line\");\n rect2.attr(\"class\", \"outer title-state\").attr(\"style\", nodeStyles).attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", bbox.width + (node.padding || 0)).attr(\"height\", bbox.height + (node.padding || 0));\n innerLine.attr(\"class\", \"divider\").attr(\"x1\", -bbox.width / 2 - halfPadding).attr(\"x2\", bbox.width / 2 + halfPadding).attr(\"y1\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding).attr(\"y2\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(rectWithTitle, \"rectWithTitle\");\n\n// src/rendering-util/rendering-elements/shapes/roundedRect.ts\nasync function roundedRect(parent, node) {\n const options = {\n rx: 5,\n ry: 5,\n classes: \"\",\n labelPaddingX: (node?.padding || 0) * 1,\n labelPaddingY: (node?.padding || 0) * 1\n };\n return drawRect(parent, node, options);\n}\n__name(roundedRect, \"roundedRect\");\n\n// src/rendering-util/rendering-elements/shapes/shadedProcess.ts\nimport rough39 from \"roughjs\";\nasync function shadedProcess(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const halfPadding = node?.padding ?? 0;\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const x = -bbox.width / 2 - halfPadding;\n const y = -bbox.height / 2 - halfPadding;\n const { cssStyles } = node;\n const rc = rough39.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x, y },\n { x: x + w + 8, y },\n { x: x + w + 8, y: y + h },\n { x: x - 8, y: y + h },\n { x: x - 8, y },\n { x, y },\n { x, y: y + h }\n ];\n const roughNode = rc.polygon(\n points.map((p) => [p.x, p.y]),\n options\n );\n const rect2 = shapeSvg.insert(() => roughNode, \":first-child\");\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles));\n if (nodeStyles && node.look !== \"handDrawn\") {\n rect2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n if (cssStyles && node.look !== \"handDrawn\") {\n rect2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n label.attr(\n \"transform\",\n `translate(${-w / 2 + 4 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(shadedProcess, \"shadedProcess\");\n\n// src/rendering-util/rendering-elements/shapes/slopedRect.ts\nimport rough40 from \"roughjs\";\nasync function slopedRect(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const x = -w / 2;\n const y = -h / 2;\n const { cssStyles } = node;\n const rc = rough40.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x, y },\n { x, y: y + h },\n { x: x + w, y: y + h },\n { x: x + w, y: y - h / 2 }\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n polygon.attr(\"transform\", `translate(0, ${h / 4})`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))}, ${-h / 4 + (node.padding ?? 0) - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(slopedRect, \"slopedRect\");\n\n// src/rendering-util/rendering-elements/shapes/squareRect.ts\nasync function squareRect2(parent, node) {\n const options = {\n rx: 0,\n ry: 0,\n classes: \"\",\n labelPaddingX: (node?.padding || 0) * 2,\n labelPaddingY: (node?.padding || 0) * 1\n };\n return drawRect(parent, node, options);\n}\n__name(squareRect2, \"squareRect\");\n\n// src/rendering-util/rendering-elements/shapes/stadium.ts\nimport rough41 from \"roughjs\";\nasync function stadium(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const h = bbox.height + node.padding;\n const w = bbox.width + h / 4 + node.padding;\n let rect2;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough41.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createRoundedRectPathD(-w / 2, -h / 2, w, h, h / 2);\n const roughNode = rc.path(pathData, options);\n rect2 = shapeSvg.insert(() => roughNode, \":first-child\");\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles));\n } else {\n rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", nodeStyles).attr(\"rx\", h / 2).attr(\"ry\", h / 2).attr(\"x\", -w / 2).attr(\"y\", -h / 2).attr(\"width\", w).attr(\"height\", h);\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(stadium, \"stadium\");\n\n// src/rendering-util/rendering-elements/shapes/state.ts\nasync function state(parent, node) {\n const options = {\n rx: 5,\n ry: 5,\n classes: \"flowchart-node\"\n };\n return drawRect(parent, node, options);\n}\n__name(state, \"state\");\n\n// src/rendering-util/rendering-elements/shapes/stateEnd.ts\nimport rough42 from \"roughjs\";\nfunction stateEnd(parent, node, { config: { themeVariables } }) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { cssStyles } = node;\n const { lineColor, stateBorder, nodeBorder } = themeVariables;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const rc = rough42.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const roughNode = rc.circle(0, 0, 14, {\n ...options,\n stroke: lineColor,\n strokeWidth: 2\n });\n const innerFill = stateBorder ?? nodeBorder;\n const roughInnerNode = rc.circle(0, 0, 5, {\n ...options,\n fill: innerFill,\n stroke: innerFill,\n strokeWidth: 2,\n fillStyle: \"solid\"\n });\n const circle2 = shapeSvg.insert(() => roughNode, \":first-child\");\n circle2.insert(() => roughInnerNode);\n if (cssStyles) {\n circle2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles) {\n circle2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, circle2);\n node.intersect = function(point) {\n return intersect_default.circle(node, 7, point);\n };\n return shapeSvg;\n}\n__name(stateEnd, \"stateEnd\");\n\n// src/rendering-util/rendering-elements/shapes/stateStart.ts\nimport rough43 from \"roughjs\";\nfunction stateStart(parent, node, { config: { themeVariables } }) {\n const { lineColor } = themeVariables;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n let circle2;\n if (node.look === \"handDrawn\") {\n const rc = rough43.svg(shapeSvg);\n const roughNode = rc.circle(0, 0, 14, solidStateFill(lineColor));\n circle2 = shapeSvg.insert(() => roughNode);\n circle2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n } else {\n circle2 = shapeSvg.insert(\"circle\", \":first-child\");\n circle2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n }\n updateNodeBounds(node, circle2);\n node.intersect = function(point) {\n return intersect_default.circle(node, 7, point);\n };\n return shapeSvg;\n}\n__name(stateStart, \"stateStart\");\n\n// src/rendering-util/rendering-elements/shapes/subroutine.ts\nimport rough44 from \"roughjs\";\nasync function subroutine(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const halfPadding = (node?.padding || 0) / 2;\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const x = -bbox.width / 2 - halfPadding;\n const y = -bbox.height / 2 - halfPadding;\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h },\n { x: 0, y: 0 },\n { x: -8, y: 0 },\n { x: w + 8, y: 0 },\n { x: w + 8, y: -h },\n { x: -8, y: -h },\n { x: -8, y: 0 }\n ];\n if (node.look === \"handDrawn\") {\n const rc = rough44.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const roughNode = rc.rectangle(x - 8, y, w + 16, h, options);\n const l1 = rc.line(x, y, x, y + h, options);\n const l2 = rc.line(x + w, y, x + w, y + h, options);\n shapeSvg.insert(() => l1, \":first-child\");\n shapeSvg.insert(() => l2, \":first-child\");\n const rect2 = shapeSvg.insert(() => roughNode, \":first-child\");\n const { cssStyles } = node;\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles));\n updateNodeBounds(node, rect2);\n } else {\n const el = insertPolygonShape(shapeSvg, w, h, points);\n if (nodeStyles) {\n el.attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, el);\n }\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(subroutine, \"subroutine\");\n\n// src/rendering-util/rendering-elements/shapes/taggedRect.ts\nimport rough45 from \"roughjs\";\nasync function taggedRect(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const x = -w / 2;\n const y = -h / 2;\n const tagWidth = 0.2 * h;\n const tagHeight = 0.2 * h;\n const { cssStyles } = node;\n const rc = rough45.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const rectPoints = [\n { x: x - tagWidth / 2, y },\n { x: x + w + tagWidth / 2, y },\n { x: x + w + tagWidth / 2, y: y + h },\n { x: x - tagWidth / 2, y: y + h }\n ];\n const tagPoints = [\n { x: x + w - tagWidth / 2, y: y + h },\n { x: x + w + tagWidth / 2, y: y + h },\n { x: x + w + tagWidth / 2, y: y + h - tagHeight }\n ];\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const rectPath = createPathFromPoints(rectPoints);\n const rectNode = rc.path(rectPath, options);\n const tagPath = createPathFromPoints(tagPoints);\n const tagNode = rc.path(tagPath, { ...options, fillStyle: \"solid\" });\n const taggedRect2 = shapeSvg.insert(() => tagNode, \":first-child\");\n taggedRect2.insert(() => rectNode, \":first-child\");\n taggedRect2.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n taggedRect2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n taggedRect2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, taggedRect2);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, rectPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(taggedRect, \"taggedRect\");\n\n// src/rendering-util/rendering-elements/shapes/taggedWaveEdgedRectangle.ts\nimport rough46 from \"roughjs\";\nasync function taggedWaveEdgedRectangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const waveAmplitude = h / 4;\n const tagWidth = 0.2 * w;\n const tagHeight = 0.2 * h;\n const finalH = h + waveAmplitude;\n const { cssStyles } = node;\n const rc = rough46.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2 - w / 2 * 0.1, y: finalH / 2 },\n ...generateFullSineWavePoints(\n -w / 2 - w / 2 * 0.1,\n finalH / 2,\n w / 2 + w / 2 * 0.1,\n finalH / 2,\n waveAmplitude,\n 0.8\n ),\n { x: w / 2 + w / 2 * 0.1, y: -finalH / 2 },\n { x: -w / 2 - w / 2 * 0.1, y: -finalH / 2 }\n ];\n const x = -w / 2 + w / 2 * 0.1;\n const y = -finalH / 2 - tagHeight * 0.4;\n const tagPoints = [\n { x: x + w - tagWidth, y: (y + h) * 1.4 },\n { x: x + w, y: y + h - tagHeight },\n { x: x + w, y: (y + h) * 0.9 },\n ...generateFullSineWavePoints(\n x + w,\n (y + h) * 1.3,\n x + w - tagWidth,\n (y + h) * 1.5,\n -h * 0.03,\n 0.5\n )\n ];\n const waveEdgeRectPath = createPathFromPoints(points);\n const waveEdgeRectNode = rc.path(waveEdgeRectPath, options);\n const taggedWaveEdgeRectPath = createPathFromPoints(tagPoints);\n const taggedWaveEdgeRectNode = rc.path(taggedWaveEdgeRectPath, {\n ...options,\n fillStyle: \"solid\"\n });\n const waveEdgeRect = shapeSvg.insert(() => taggedWaveEdgeRectNode, \":first-child\");\n waveEdgeRect.insert(() => waveEdgeRectNode, \":first-child\");\n waveEdgeRect.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n waveEdgeRect.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n waveEdgeRect.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n waveEdgeRect.attr(\"transform\", `translate(0,${-waveAmplitude / 2})`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - waveAmplitude / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, waveEdgeRect);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(taggedWaveEdgedRectangle, \"taggedWaveEdgedRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/text.ts\nasync function text(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const totalWidth = Math.max(bbox.width + node.padding, node?.width || 0);\n const totalHeight = Math.max(bbox.height + node.padding, node?.height || 0);\n const x = -totalWidth / 2;\n const y = -totalHeight / 2;\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"class\", \"text\").attr(\"style\", nodeStyles).attr(\"rx\", 0).attr(\"ry\", 0).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(text, \"text\");\n\n// src/rendering-util/rendering-elements/shapes/tiltedCylinder.ts\nimport rough47 from \"roughjs\";\nvar createCylinderPathD3 = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return `M${x},${y}\n a${rx},${ry} 0,0,1 ${0},${-height}\n l${width},${0}\n a${rx},${ry} 0,0,1 ${0},${height}\n M${width},${-height}\n a${rx},${ry} 0,0,0 ${0},${height}\n l${-width},${0}`;\n}, \"createCylinderPathD\");\nvar createOuterCylinderPathD3 = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return [\n `M${x},${y}`,\n `M${x + width},${y}`,\n `a${rx},${ry} 0,0,0 ${0},${-height}`,\n `l${-width},0`,\n `a${rx},${ry} 0,0,0 ${0},${height}`,\n `l${width},0`\n ].join(\" \");\n}, \"createOuterCylinderPathD\");\nvar createInnerCylinderPathD3 = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return [`M${x + width / 2},${-height / 2}`, `a${rx},${ry} 0,0,0 0,${height}`].join(\" \");\n}, \"createInnerCylinderPathD\");\nasync function tiltedCylinder(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label, halfPadding } = await labelHelper(\n parent,\n node,\n getNodeClasses(node)\n );\n const labelPadding = node.look === \"neo\" ? halfPadding * 2 : halfPadding;\n const h = bbox.height + labelPadding;\n const ry = h / 2;\n const rx = ry / (2.5 + h / 50);\n const w = bbox.width + rx + labelPadding;\n const { cssStyles } = node;\n let cylinder2;\n if (node.look === \"handDrawn\") {\n const rc = rough47.svg(shapeSvg);\n const outerPathData = createOuterCylinderPathD3(0, 0, w, h, rx, ry);\n const innerPathData = createInnerCylinderPathD3(0, 0, w, h, rx, ry);\n const outerNode = rc.path(outerPathData, userNodeOverrides(node, {}));\n const innerLine = rc.path(innerPathData, userNodeOverrides(node, { fill: \"none\" }));\n cylinder2 = shapeSvg.insert(() => innerLine, \":first-child\");\n cylinder2 = shapeSvg.insert(() => outerNode, \":first-child\");\n cylinder2.attr(\"class\", \"basic label-container\");\n if (cssStyles) {\n cylinder2.attr(\"style\", cssStyles);\n }\n } else {\n const pathData = createCylinderPathD3(0, 0, w, h, rx, ry);\n cylinder2 = shapeSvg.insert(\"path\", \":first-child\").attr(\"d\", pathData).attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles)).attr(\"style\", nodeStyles);\n cylinder2.attr(\"class\", \"basic label-container\");\n if (cssStyles) {\n cylinder2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles) {\n cylinder2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n }\n cylinder2.attr(\"label-offset-x\", rx);\n cylinder2.attr(\"transform\", `translate(${-w / 2}, ${h / 2} )`);\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) - rx - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, cylinder2);\n node.intersect = function(point) {\n const pos = intersect_default.rect(node, point);\n const y = pos.y - (node.y ?? 0);\n if (ry != 0 && (Math.abs(y) < (node.height ?? 0) / 2 || Math.abs(y) == (node.height ?? 0) / 2 && Math.abs(pos.x - (node.x ?? 0)) > (node.width ?? 0) / 2 - rx)) {\n let x = rx * rx * (1 - y * y / (ry * ry));\n if (x != 0) {\n x = Math.sqrt(x);\n }\n x = rx - x;\n if (point.x - (node.x ?? 0) > 0) {\n x = -x;\n }\n pos.x += x;\n }\n return pos;\n };\n return shapeSvg;\n}\n__name(tiltedCylinder, \"tiltedCylinder\");\n\n// src/rendering-util/rendering-elements/shapes/trapezoid.ts\nimport rough48 from \"roughjs\";\nasync function trapezoid(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -3 * h / 6, y: 0 },\n { x: w + 3 * h / 6, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h }\n ];\n let polygon;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough48.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-w / 2}, ${h / 2})`);\n if (cssStyles) {\n polygon.attr(\"style\", cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n if (nodeStyles) {\n polygon.attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(trapezoid, \"trapezoid\");\n\n// src/rendering-util/rendering-elements/shapes/trapezoidalPentagon.ts\nimport rough49 from \"roughjs\";\nasync function trapezoidalPentagon(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const minWidth = 60, minHeight = 20;\n const w = Math.max(minWidth, bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(minHeight, bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const { cssStyles } = node;\n const rc = rough49.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2 * 0.8, y: -h / 2 },\n { x: w / 2 * 0.8, y: -h / 2 },\n { x: w / 2, y: -h / 2 * 0.6 },\n { x: w / 2, y: h / 2 },\n { x: -w / 2, y: h / 2 },\n { x: -w / 2, y: -h / 2 * 0.6 }\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(trapezoidalPentagon, \"trapezoidalPentagon\");\n\n// src/rendering-util/rendering-elements/shapes/triangle.ts\nimport rough50 from \"roughjs\";\nasync function triangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const useHtmlLabels = evaluate(getConfig2().flowchart?.htmlLabels);\n const w = bbox.width + (node.padding ?? 0);\n const h = w + bbox.height;\n const tw = w + bbox.height;\n const points = [\n { x: 0, y: 0 },\n { x: tw, y: 0 },\n { x: tw / 2, y: -h }\n ];\n const { cssStyles } = node;\n const rc = rough50.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-h / 2}, ${h / 2})`);\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, polygon);\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${h / 2 - (bbox.height + (node.padding ?? 0) / (useHtmlLabels ? 2 : 1) - (bbox.y - (bbox.top ?? 0)))})`\n );\n node.intersect = function(point) {\n log.info(\"Triangle intersect\", node, points, point);\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(triangle, \"triangle\");\n\n// src/rendering-util/rendering-elements/shapes/waveEdgedRectangle.ts\nimport rough51 from \"roughjs\";\nasync function waveEdgedRectangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const waveAmplitude = h / 8;\n const finalH = h + waveAmplitude;\n const { cssStyles } = node;\n const minWidth = 70;\n const widthDif = minWidth - w;\n const extraW = widthDif > 0 ? widthDif / 2 : 0;\n const rc = rough51.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2 - extraW, y: finalH / 2 },\n ...generateFullSineWavePoints(\n -w / 2 - extraW,\n finalH / 2,\n w / 2 + extraW,\n finalH / 2,\n waveAmplitude,\n 0.8\n ),\n { x: w / 2 + extraW, y: -finalH / 2 },\n { x: -w / 2 - extraW, y: -finalH / 2 }\n ];\n const waveEdgeRectPath = createPathFromPoints(points);\n const waveEdgeRectNode = rc.path(waveEdgeRectPath, options);\n const waveEdgeRect = shapeSvg.insert(() => waveEdgeRectNode, \":first-child\");\n waveEdgeRect.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n waveEdgeRect.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n waveEdgeRect.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n waveEdgeRect.attr(\"transform\", `translate(0,${-waveAmplitude / 2})`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - waveAmplitude - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, waveEdgeRect);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(waveEdgedRectangle, \"waveEdgedRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/waveRectangle.ts\nimport rough52 from \"roughjs\";\nasync function waveRectangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const minWidth = 100;\n const minHeight = 50;\n const baseWidth = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const baseHeight = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const aspectRatio = baseWidth / baseHeight;\n let w = baseWidth;\n let h = baseHeight;\n if (w > h * aspectRatio) {\n h = w / aspectRatio;\n } else {\n w = h * aspectRatio;\n }\n w = Math.max(w, minWidth);\n h = Math.max(h, minHeight);\n const waveAmplitude = Math.min(h * 0.2, h / 4);\n const finalH = h + waveAmplitude * 2;\n const { cssStyles } = node;\n const rc = rough52.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2, y: finalH / 2 },\n ...generateFullSineWavePoints(-w / 2, finalH / 2, w / 2, finalH / 2, waveAmplitude, 1),\n { x: w / 2, y: -finalH / 2 },\n ...generateFullSineWavePoints(w / 2, -finalH / 2, -w / 2, -finalH / 2, waveAmplitude, -1)\n ];\n const waveRectPath = createPathFromPoints(points);\n const waveRectNode = rc.path(waveRectPath, options);\n const waveRect = shapeSvg.insert(() => waveRectNode, \":first-child\");\n waveRect.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n waveRect.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n waveRect.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, waveRect);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(waveRectangle, \"waveRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/windowPane.ts\nimport rough53 from \"roughjs\";\nasync function windowPane(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const rectOffset = 5;\n const x = -w / 2;\n const y = -h / 2;\n const { cssStyles } = node;\n const rc = rough53.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const outerPathPoints = [\n { x: x - rectOffset, y: y - rectOffset },\n { x: x - rectOffset, y: y + h },\n { x: x + w, y: y + h },\n { x: x + w, y: y - rectOffset }\n ];\n const path = `M${x - rectOffset},${y - rectOffset} L${x + w},${y - rectOffset} L${x + w},${y + h} L${x - rectOffset},${y + h} L${x - rectOffset},${y - rectOffset}\n M${x - rectOffset},${y} L${x + w},${y}\n M${x},${y - rectOffset} L${x},${y + h}`;\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const no = rc.path(path, options);\n const windowPane2 = shapeSvg.insert(() => no, \":first-child\");\n windowPane2.attr(\"transform\", `translate(${rectOffset / 2}, ${rectOffset / 2})`);\n windowPane2.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n windowPane2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n windowPane2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) + rectOffset / 2 - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + rectOffset / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, windowPane2);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, outerPathPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(windowPane, \"windowPane\");\n\n// src/rendering-util/rendering-elements/shapes/classBox.ts\nimport { select as select6 } from \"d3\";\nimport rough54 from \"roughjs\";\n\n// src/diagrams/class/shapeUtil.ts\nimport { select as select5 } from \"d3\";\nasync function textHelper(parent, node, config, useHtmlLabels, GAP = config.class.padding ?? 12) {\n const TEXT_PADDING = !useHtmlLabels ? 3 : 0;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId || node.id);\n let annotationGroup = null;\n let labelGroup = null;\n let membersGroup = null;\n let methodsGroup = null;\n let annotationGroupHeight = 0;\n let labelGroupHeight = 0;\n let membersGroupHeight = 0;\n annotationGroup = shapeSvg.insert(\"g\").attr(\"class\", \"annotation-group text\");\n if (node.annotations.length > 0) {\n const annotation = node.annotations[0];\n await addText(annotationGroup, { text: `\\xAB${annotation}\\xBB` }, 0);\n const annotationGroupBBox = annotationGroup.node().getBBox();\n annotationGroupHeight = annotationGroupBBox.height;\n }\n labelGroup = shapeSvg.insert(\"g\").attr(\"class\", \"label-group text\");\n await addText(labelGroup, node, 0, [\"font-weight: bolder\"]);\n const labelGroupBBox = labelGroup.node().getBBox();\n labelGroupHeight = labelGroupBBox.height;\n membersGroup = shapeSvg.insert(\"g\").attr(\"class\", \"members-group text\");\n let yOffset = 0;\n for (const member of node.members) {\n const height = await addText(membersGroup, member, yOffset, [member.parseClassifier()]);\n yOffset += height + TEXT_PADDING;\n }\n membersGroupHeight = membersGroup.node().getBBox().height;\n if (membersGroupHeight <= 0) {\n membersGroupHeight = GAP / 2;\n }\n methodsGroup = shapeSvg.insert(\"g\").attr(\"class\", \"methods-group text\");\n let methodsYOffset = 0;\n for (const method of node.methods) {\n const height = await addText(methodsGroup, method, methodsYOffset, [method.parseClassifier()]);\n methodsYOffset += height + TEXT_PADDING;\n }\n let bbox = shapeSvg.node().getBBox();\n if (annotationGroup !== null) {\n const annotationGroupBBox = annotationGroup.node().getBBox();\n annotationGroup.attr(\"transform\", `translate(${-annotationGroupBBox.width / 2})`);\n }\n labelGroup.attr(\"transform\", `translate(${-labelGroupBBox.width / 2}, ${annotationGroupHeight})`);\n bbox = shapeSvg.node().getBBox();\n membersGroup.attr(\n \"transform\",\n `translate(${0}, ${annotationGroupHeight + labelGroupHeight + GAP * 2})`\n );\n bbox = shapeSvg.node().getBBox();\n methodsGroup.attr(\n \"transform\",\n `translate(${0}, ${annotationGroupHeight + labelGroupHeight + (membersGroupHeight ? membersGroupHeight + GAP * 4 : GAP * 2)})`\n );\n bbox = shapeSvg.node().getBBox();\n return { shapeSvg, bbox };\n}\n__name(textHelper, \"textHelper\");\nasync function addText(parentGroup, node, yOffset, styles = []) {\n const textEl = parentGroup.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", styles.join(\"; \"));\n const config = getConfig();\n let useHtmlLabels = \"useHtmlLabels\" in node ? node.useHtmlLabels : evaluate(config.htmlLabels) ?? true;\n let textContent = \"\";\n if (\"text\" in node) {\n textContent = node.text;\n } else {\n textContent = node.label;\n }\n if (!useHtmlLabels && textContent.startsWith(\"\\\\\")) {\n textContent = textContent.substring(1);\n }\n if (hasKatex(textContent)) {\n useHtmlLabels = true;\n }\n const text2 = await createText(\n textEl,\n sanitizeText2(decodeEntities(textContent)),\n {\n width: calculateTextWidth(textContent, config) + 50,\n // Add room for error when splitting text into multiple lines\n classes: \"markdown-node-label\",\n useHtmlLabels\n },\n config\n );\n let bbox;\n let numberOfLines = 1;\n if (!useHtmlLabels) {\n if (styles.includes(\"font-weight: bolder\")) {\n select5(text2).selectAll(\"tspan\").attr(\"font-weight\", \"\");\n }\n numberOfLines = text2.children.length;\n const textChild = text2.children[0];\n if (text2.textContent === \"\" || text2.textContent.includes(\">\")) {\n textChild.textContent = textContent[0] + textContent.substring(1).replaceAll(\">\", \">\").replaceAll(\"<\", \"<\").trim();\n const preserveSpace = textContent[1] === \" \";\n if (preserveSpace) {\n textChild.textContent = textChild.textContent[0] + \" \" + textChild.textContent.substring(1);\n }\n }\n if (textChild.textContent === \"undefined\") {\n textChild.textContent = \"\";\n }\n bbox = text2.getBBox();\n } else {\n const div = text2.children[0];\n const dv = select5(text2);\n numberOfLines = div.innerHTML.split(\"
\").length;\n if (div.innerHTML.includes(\"\")) {\n numberOfLines += div.innerHTML.split(\"
"):e.type==="strong"?`${e.children.map(t).join("")}`:e.type==="emphasis"?`${e.children.map(t).join("")}`:e.type==="paragraph"?`} */\n\n let marker\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('attentionSequence')\n marker = code\n return sequence(code)\n }\n /** @type {State} */\n\n function sequence(code) {\n if (code === marker) {\n effects.consume(code)\n return sequence\n }\n\n const token = effects.exit('attentionSequence')\n const after = classifyCharacter(code)\n const open =\n !after || (after === 2 && before) || attentionMarkers.includes(code)\n const close =\n !before || (before === 2 && after) || attentionMarkers.includes(previous)\n token._open = Boolean(marker === 42 ? open : open && (before || !close))\n token._close = Boolean(marker === 42 ? close : close && (after || !open))\n return ok(code)\n }\n}\n/**\n * Move a point a bit.\n *\n * Note: `move` only works inside lines! It\u2019s not possible to move past other\n * chunks (replacement characters, tabs, or line endings).\n *\n * @param {Point} point\n * @param {number} offset\n * @returns {void}\n */\n\nfunction movePoint(point, offset) {\n point.column += offset\n point.offset += offset\n point._bufferIndex += offset\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n asciiAtext,\n asciiControl\n} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const autolink = {\n name: 'autolink',\n tokenize: tokenizeAutolink\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeAutolink(effects, ok, nok) {\n let size = 1\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('autolink')\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.enter('autolinkProtocol')\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n return schemeOrEmailAtext\n }\n\n return asciiAtext(code) ? emailAtext(code) : nok(code)\n }\n /** @type {State} */\n\n function schemeOrEmailAtext(code) {\n return code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)\n ? schemeInsideOrEmailAtext(code)\n : emailAtext(code)\n }\n /** @type {State} */\n\n function schemeInsideOrEmailAtext(code) {\n if (code === 58) {\n effects.consume(code)\n return urlInside\n }\n\n if (\n (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) &&\n size++ < 32\n ) {\n effects.consume(code)\n return schemeInsideOrEmailAtext\n }\n\n return emailAtext(code)\n }\n /** @type {State} */\n\n function urlInside(code) {\n if (code === 62) {\n effects.exit('autolinkProtocol')\n return end(code)\n }\n\n if (code === null || code === 32 || code === 60 || asciiControl(code)) {\n return nok(code)\n }\n\n effects.consume(code)\n return urlInside\n }\n /** @type {State} */\n\n function emailAtext(code) {\n if (code === 64) {\n effects.consume(code)\n size = 0\n return emailAtSignOrDot\n }\n\n if (asciiAtext(code)) {\n effects.consume(code)\n return emailAtext\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function emailAtSignOrDot(code) {\n return asciiAlphanumeric(code) ? emailLabel(code) : nok(code)\n }\n /** @type {State} */\n\n function emailLabel(code) {\n if (code === 46) {\n effects.consume(code)\n size = 0\n return emailAtSignOrDot\n }\n\n if (code === 62) {\n // Exit, then change the type.\n effects.exit('autolinkProtocol').type = 'autolinkEmail'\n return end(code)\n }\n\n return emailValue(code)\n }\n /** @type {State} */\n\n function emailValue(code) {\n if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n effects.consume(code)\n return code === 45 ? emailValue : emailLabel\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function end(code) {\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.exit('autolink')\n return ok\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const blankLine = {\n tokenize: tokenizeBlankLine,\n partial: true\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeBlankLine(effects, ok, nok) {\n return factorySpace(effects, afterWhitespace, 'linePrefix')\n /** @type {State} */\n\n function afterWhitespace(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownSpace} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const blockQuote = {\n name: 'blockQuote',\n tokenize: tokenizeBlockQuoteStart,\n continuation: {\n tokenize: tokenizeBlockQuoteContinuation\n },\n exit\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeBlockQuoteStart(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n if (code === 62) {\n const state = self.containerState\n\n if (!state.open) {\n effects.enter('blockQuote', {\n _container: true\n })\n state.open = true\n }\n\n effects.enter('blockQuotePrefix')\n effects.enter('blockQuoteMarker')\n effects.consume(code)\n effects.exit('blockQuoteMarker')\n return after\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function after(code) {\n if (markdownSpace(code)) {\n effects.enter('blockQuotePrefixWhitespace')\n effects.consume(code)\n effects.exit('blockQuotePrefixWhitespace')\n effects.exit('blockQuotePrefix')\n return ok\n }\n\n effects.exit('blockQuotePrefix')\n return ok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeBlockQuoteContinuation(effects, ok, nok) {\n return factorySpace(\n effects,\n effects.attempt(blockQuote, ok, nok),\n 'linePrefix',\n this.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4\n )\n}\n/** @type {Exiter} */\n\nfunction exit(effects) {\n effects.exit('blockQuote')\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {asciiPunctuation} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const characterEscape = {\n name: 'characterEscape',\n tokenize: tokenizeCharacterEscape\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('characterEscape')\n effects.enter('escapeMarker')\n effects.consume(code)\n effects.exit('escapeMarker')\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (asciiPunctuation(code)) {\n effects.enter('characterEscapeValue')\n effects.consume(code)\n effects.exit('characterEscapeValue')\n effects.exit('characterEscape')\n return ok\n }\n\n return nok(code)\n }\n}\n", "///
} */\n\n let marker\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('codeFenced')\n effects.enter('codeFencedFence')\n effects.enter('codeFencedFenceSequence')\n marker = code\n return sequenceOpen(code)\n }\n /** @type {State} */\n\n function sequenceOpen(code) {\n if (code === marker) {\n effects.consume(code)\n sizeOpen++\n return sequenceOpen\n }\n\n effects.exit('codeFencedFenceSequence')\n return sizeOpen < 3\n ? nok(code)\n : factorySpace(effects, infoOpen, 'whitespace')(code)\n }\n /** @type {State} */\n\n function infoOpen(code) {\n if (code === null || markdownLineEnding(code)) {\n return openAfter(code)\n }\n\n effects.enter('codeFencedFenceInfo')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return info(code)\n }\n /** @type {State} */\n\n function info(code) {\n if (code === null || markdownLineEndingOrSpace(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceInfo')\n return factorySpace(effects, infoAfter, 'whitespace')(code)\n }\n\n if (code === 96 && code === marker) return nok(code)\n effects.consume(code)\n return info\n }\n /** @type {State} */\n\n function infoAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n return openAfter(code)\n }\n\n effects.enter('codeFencedFenceMeta')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return meta(code)\n }\n /** @type {State} */\n\n function meta(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceMeta')\n return openAfter(code)\n }\n\n if (code === 96 && code === marker) return nok(code)\n effects.consume(code)\n return meta\n }\n /** @type {State} */\n\n function openAfter(code) {\n effects.exit('codeFencedFence')\n return self.interrupt ? ok(code) : contentStart(code)\n }\n /** @type {State} */\n\n function contentStart(code) {\n if (code === null) {\n return after(code)\n }\n\n if (markdownLineEnding(code)) {\n return effects.attempt(\n nonLazyLine,\n effects.attempt(\n closingFenceConstruct,\n after,\n initialPrefix\n ? factorySpace(\n effects,\n contentStart,\n 'linePrefix',\n initialPrefix + 1\n )\n : contentStart\n ),\n after\n )(code)\n }\n\n effects.enter('codeFlowValue')\n return contentContinue(code)\n }\n /** @type {State} */\n\n function contentContinue(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue')\n return contentStart(code)\n }\n\n effects.consume(code)\n return contentContinue\n }\n /** @type {State} */\n\n function after(code) {\n effects.exit('codeFenced')\n return ok(code)\n }\n /** @type {Tokenizer} */\n\n function tokenizeNonLazyLine(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return lineStart\n }\n /** @type {State} */\n\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n }\n /** @type {Tokenizer} */\n\n function tokenizeClosingFence(effects, ok, nok) {\n let size = 0\n return factorySpace(\n effects,\n closingSequenceStart,\n 'linePrefix',\n this.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )\n /** @type {State} */\n\n function closingSequenceStart(code) {\n effects.enter('codeFencedFence')\n effects.enter('codeFencedFenceSequence')\n return closingSequence(code)\n }\n /** @type {State} */\n\n function closingSequence(code) {\n if (code === marker) {\n effects.consume(code)\n size++\n return closingSequence\n }\n\n if (size < sizeOpen) return nok(code)\n effects.exit('codeFencedFenceSequence')\n return factorySpace(effects, closingSequenceEnd, 'whitespace')(code)\n }\n /** @type {State} */\n\n function closingSequenceEnd(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFencedFence')\n return ok(code)\n }\n\n return nok(code)\n }\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const codeIndented = {\n name: 'codeIndented',\n tokenize: tokenizeCodeIndented\n}\n/** @type {Construct} */\n\nconst indentedContent = {\n tokenize: tokenizeIndentedContent,\n partial: true\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCodeIndented(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('codeIndented')\n return factorySpace(effects, afterStartPrefix, 'linePrefix', 4 + 1)(code)\n }\n /** @type {State} */\n\n function afterStartPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return tail &&\n tail[1].type === 'linePrefix' &&\n tail[2].sliceSerialize(tail[1], true).length >= 4\n ? afterPrefix(code)\n : nok(code)\n }\n /** @type {State} */\n\n function afterPrefix(code) {\n if (code === null) {\n return after(code)\n }\n\n if (markdownLineEnding(code)) {\n return effects.attempt(indentedContent, afterPrefix, after)(code)\n }\n\n effects.enter('codeFlowValue')\n return content(code)\n }\n /** @type {State} */\n\n function content(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue')\n return afterPrefix(code)\n }\n\n effects.consume(code)\n return content\n }\n /** @type {State} */\n\n function after(code) {\n effects.exit('codeIndented')\n return ok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeIndentedContent(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n // If this is a lazy line, it can\u2019t be code.\n if (self.parser.lazy[self.now().line]) {\n return nok(code)\n }\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return start\n }\n\n return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1)(code)\n }\n /** @type {State} */\n\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return tail &&\n tail[1].type === 'linePrefix' &&\n tail[2].sliceSerialize(tail[1], true).length >= 4\n ? ok(code)\n : markdownLineEnding(code)\n ? start(code)\n : nok(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const codeText = {\n name: 'codeText',\n tokenize: tokenizeCodeText,\n resolve: resolveCodeText,\n previous\n}\n/** @type {Resolver} */\n\nfunction resolveCodeText(events) {\n let tailExitIndex = events.length - 4\n let headEnterIndex = 3\n /** @type {number} */\n\n let index\n /** @type {number|undefined} */\n\n let enter // If we start and end with an EOL or a space.\n\n if (\n (events[headEnterIndex][1].type === 'lineEnding' ||\n events[headEnterIndex][1].type === 'space') &&\n (events[tailExitIndex][1].type === 'lineEnding' ||\n events[tailExitIndex][1].type === 'space')\n ) {\n index = headEnterIndex // And we have data.\n\n while (++index < tailExitIndex) {\n if (events[index][1].type === 'codeTextData') {\n // Then we have padding.\n events[headEnterIndex][1].type = 'codeTextPadding'\n events[tailExitIndex][1].type = 'codeTextPadding'\n headEnterIndex += 2\n tailExitIndex -= 2\n break\n }\n }\n } // Merge adjacent spaces and data.\n\n index = headEnterIndex - 1\n tailExitIndex++\n\n while (++index <= tailExitIndex) {\n if (enter === undefined) {\n if (index !== tailExitIndex && events[index][1].type !== 'lineEnding') {\n enter = index\n }\n } else if (\n index === tailExitIndex ||\n events[index][1].type === 'lineEnding'\n ) {\n events[enter][1].type = 'codeTextData'\n\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end\n events.splice(enter + 2, index - enter - 2)\n tailExitIndex -= index - enter - 2\n index = enter + 2\n }\n\n enter = undefined\n }\n }\n\n return events\n}\n/** @type {Previous} */\n\nfunction previous(code) {\n // If there is a previous code, there will always be a tail.\n return (\n code !== 96 ||\n this.events[this.events.length - 1][1].type === 'characterEscape'\n )\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCodeText(effects, ok, nok) {\n const self = this\n let sizeOpen = 0\n /** @type {number} */\n\n let size\n /** @type {Token} */\n\n let token\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('codeText')\n effects.enter('codeTextSequence')\n return openingSequence(code)\n }\n /** @type {State} */\n\n function openingSequence(code) {\n if (code === 96) {\n effects.consume(code)\n sizeOpen++\n return openingSequence\n }\n\n effects.exit('codeTextSequence')\n return gap(code)\n }\n /** @type {State} */\n\n function gap(code) {\n // EOF.\n if (code === null) {\n return nok(code)\n } // Closing fence?\n // Could also be data.\n\n if (code === 96) {\n token = effects.enter('codeTextSequence')\n size = 0\n return closingSequence(code)\n } // Tabs don\u2019t work, and virtual spaces don\u2019t make sense.\n\n if (code === 32) {\n effects.enter('space')\n effects.consume(code)\n effects.exit('space')\n return gap\n }\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return gap\n } // Data.\n\n effects.enter('codeTextData')\n return data(code)\n } // In code.\n\n /** @type {State} */\n\n function data(code) {\n if (\n code === null ||\n code === 32 ||\n code === 96 ||\n markdownLineEnding(code)\n ) {\n effects.exit('codeTextData')\n return gap(code)\n }\n\n effects.consume(code)\n return data\n } // Closing fence.\n\n /** @type {State} */\n\n function closingSequence(code) {\n // More.\n if (code === 96) {\n effects.consume(code)\n size++\n return closingSequence\n } // Done!\n\n if (size === sizeOpen) {\n effects.exit('codeTextSequence')\n effects.exit('codeText')\n return ok(code)\n } // More or less accents: mark as data.\n\n token.type = 'codeTextData'\n return data(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Event} Event\n */\nimport {splice} from 'micromark-util-chunked'\n\n/**\n * Tokenize subcontent.\n *\n * @param {Event[]} events\n * @returns {boolean}\n */\nexport function subtokenize(events) {\n /** @type {Record
} */\n let marker\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter(type)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n marker = code === 40 ? 41 : code\n return atFirstTitleBreak\n }\n /** @type {State} */\n\n function atFirstTitleBreak(code) {\n if (code === marker) {\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.exit(type)\n return ok\n }\n\n effects.enter(stringType)\n return atTitleBreak(code)\n }\n /** @type {State} */\n\n function atTitleBreak(code) {\n if (code === marker) {\n effects.exit(stringType)\n return atFirstTitleBreak(marker)\n }\n\n if (code === null) {\n return nok(code)\n } // Note: blank lines can\u2019t exist in content.\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, atTitleBreak, 'linePrefix')\n }\n\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return title(code)\n }\n /** @type {State} */\n\n function title(code) {\n if (code === marker || code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n return atTitleBreak(code)\n }\n\n effects.consume(code)\n return code === 92 ? titleEscape : title\n }\n /** @type {State} */\n\n function titleEscape(code) {\n if (code === marker || code === 92) {\n effects.consume(code)\n return title\n }\n\n return title(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n\n/**\n * @param {Effects} effects\n * @param {State} ok\n */\nexport function factoryWhitespace(effects, ok) {\n /** @type {boolean} */\n let seen\n return start\n /** @type {State} */\n\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n seen = true\n return start\n }\n\n if (markdownSpace(code)) {\n return factorySpace(\n effects,\n start,\n seen ? 'linePrefix' : 'lineSuffix'\n )(code)\n }\n\n return ok(code)\n }\n}\n", "/**\n * Normalize an identifier (such as used in definitions).\n *\n * @param {string} value\n * @returns {string}\n */\nexport function normalizeIdentifier(value) {\n return (\n value // Collapse Markdown whitespace.\n .replace(/[\\t\\n\\r ]+/g, ' ') // Trim.\n .replace(/^ | $/g, '') // Some characters are considered \u201Cuppercase\u201D, but if their lowercase\n // counterpart is uppercased will result in a different uppercase\n // character.\n // Hence, to get that form, we perform both lower- and uppercase.\n // Upper case makes sure keys will not interact with default prototypal\n // methods: no method is uppercase.\n .toLowerCase()\n .toUpperCase()\n )\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factoryDestination} from 'micromark-factory-destination'\nimport {factoryLabel} from 'micromark-factory-label'\nimport {factorySpace} from 'micromark-factory-space'\nimport {factoryTitle} from 'micromark-factory-title'\nimport {factoryWhitespace} from 'micromark-factory-whitespace'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {\n markdownLineEnding,\n markdownLineEndingOrSpace\n} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const definition = {\n name: 'definition',\n tokenize: tokenizeDefinition\n}\n/** @type {Construct} */\n\nconst titleConstruct = {\n tokenize: tokenizeTitle,\n partial: true\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeDefinition(effects, ok, nok) {\n const self = this\n /** @type {string} */\n\n let identifier\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('definition')\n return factoryLabel.call(\n self,\n effects,\n labelAfter,\n nok,\n 'definitionLabel',\n 'definitionLabelMarker',\n 'definitionLabelString'\n )(code)\n }\n /** @type {State} */\n\n function labelAfter(code) {\n identifier = normalizeIdentifier(\n self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n )\n\n if (code === 58) {\n effects.enter('definitionMarker')\n effects.consume(code)\n effects.exit('definitionMarker') // Note: blank lines can\u2019t exist in content.\n\n return factoryWhitespace(\n effects,\n factoryDestination(\n effects,\n effects.attempt(\n titleConstruct,\n factorySpace(effects, after, 'whitespace'),\n factorySpace(effects, after, 'whitespace')\n ),\n nok,\n 'definitionDestination',\n 'definitionDestinationLiteral',\n 'definitionDestinationLiteralMarker',\n 'definitionDestinationRaw',\n 'definitionDestinationString'\n )\n )\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function after(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('definition')\n\n if (!self.parser.defined.includes(identifier)) {\n self.parser.defined.push(identifier)\n }\n\n return ok(code)\n }\n\n return nok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeTitle(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, before)(code)\n : nok(code)\n }\n /** @type {State} */\n\n function before(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(\n effects,\n factorySpace(effects, after, 'whitespace'),\n nok,\n 'definitionTitle',\n 'definitionTitleMarker',\n 'definitionTitleString'\n )(code)\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function after(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const hardBreakEscape = {\n name: 'hardBreakEscape',\n tokenize: tokenizeHardBreakEscape\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('hardBreakEscape')\n effects.enter('escapeMarker')\n effects.consume(code)\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (markdownLineEnding(code)) {\n effects.exit('escapeMarker')\n effects.exit('hardBreakEscape')\n return ok(code)\n }\n\n return nok(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\nimport {splice} from 'micromark-util-chunked'\n\n/** @type {Construct} */\nexport const headingAtx = {\n name: 'headingAtx',\n tokenize: tokenizeHeadingAtx,\n resolve: resolveHeadingAtx\n}\n/** @type {Resolver} */\n\nfunction resolveHeadingAtx(events, context) {\n let contentEnd = events.length - 2\n let contentStart = 3\n /** @type {Token} */\n\n let content\n /** @type {Token} */\n\n let text // Prefix whitespace, part of the opening.\n\n if (events[contentStart][1].type === 'whitespace') {\n contentStart += 2\n } // Suffix whitespace, part of the closing.\n\n if (\n contentEnd - 2 > contentStart &&\n events[contentEnd][1].type === 'whitespace'\n ) {\n contentEnd -= 2\n }\n\n if (\n events[contentEnd][1].type === 'atxHeadingSequence' &&\n (contentStart === contentEnd - 1 ||\n (contentEnd - 4 > contentStart &&\n events[contentEnd - 2][1].type === 'whitespace'))\n ) {\n contentEnd -= contentStart + 1 === contentEnd ? 2 : 4\n }\n\n if (contentEnd > contentStart) {\n content = {\n type: 'atxHeadingText',\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end\n }\n text = {\n type: 'chunkText',\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end,\n // @ts-expect-error Constants are fine to assign.\n contentType: 'text'\n }\n splice(events, contentStart, contentEnd - contentStart + 1, [\n ['enter', content, context],\n ['enter', text, context],\n ['exit', text, context],\n ['exit', content, context]\n ])\n }\n\n return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeHeadingAtx(effects, ok, nok) {\n const self = this\n let size = 0\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('atxHeading')\n effects.enter('atxHeadingSequence')\n return fenceOpenInside(code)\n }\n /** @type {State} */\n\n function fenceOpenInside(code) {\n if (code === 35 && size++ < 6) {\n effects.consume(code)\n return fenceOpenInside\n }\n\n if (code === null || markdownLineEndingOrSpace(code)) {\n effects.exit('atxHeadingSequence')\n return self.interrupt ? ok(code) : headingBreak(code)\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function headingBreak(code) {\n if (code === 35) {\n effects.enter('atxHeadingSequence')\n return sequence(code)\n }\n\n if (code === null || markdownLineEnding(code)) {\n effects.exit('atxHeading')\n return ok(code)\n }\n\n if (markdownSpace(code)) {\n return factorySpace(effects, headingBreak, 'whitespace')(code)\n }\n\n effects.enter('atxHeadingText')\n return data(code)\n }\n /** @type {State} */\n\n function sequence(code) {\n if (code === 35) {\n effects.consume(code)\n return sequence\n }\n\n effects.exit('atxHeadingSequence')\n return headingBreak(code)\n }\n /** @type {State} */\n\n function data(code) {\n if (code === null || code === 35 || markdownLineEndingOrSpace(code)) {\n effects.exit('atxHeadingText')\n return headingBreak(code)\n }\n\n effects.consume(code)\n return data\n }\n}\n", "/**\n * List of lowercase HTML tag names which when parsing HTML (flow), result\n * in more relaxed rules (condition 6): because they are known blocks, the\n * HTML-like syntax doesn\u2019t have to be strictly parsed.\n * For tag names not in this list, a more strict algorithm (condition 7) is used\n * to detect whether the HTML-like syntax is seen as HTML (flow) or not.\n *\n * This is copied from:\n *
|undefined} */\n\n let marker\n /** @type {string} */\n\n let buffer\n /** @type {number} */\n\n let index\n /** @type {State} */\n\n let returnState\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('htmlText')\n effects.enter('htmlTextData')\n effects.consume(code)\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (code === 33) {\n effects.consume(code)\n return declarationOpen\n }\n\n if (code === 47) {\n effects.consume(code)\n return tagCloseStart\n }\n\n if (code === 63) {\n effects.consume(code)\n return instruction\n }\n\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagOpen\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code)\n return commentOpen\n }\n\n if (code === 91) {\n effects.consume(code)\n buffer = 'CDATA['\n index = 0\n return cdataOpen\n }\n\n if (asciiAlpha(code)) {\n effects.consume(code)\n return declaration\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function commentOpen(code) {\n if (code === 45) {\n effects.consume(code)\n return commentStart\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function commentStart(code) {\n if (code === null || code === 62) {\n return nok(code)\n }\n\n if (code === 45) {\n effects.consume(code)\n return commentStartDash\n }\n\n return comment(code)\n }\n /** @type {State} */\n\n function commentStartDash(code) {\n if (code === null || code === 62) {\n return nok(code)\n }\n\n return comment(code)\n }\n /** @type {State} */\n\n function comment(code) {\n if (code === null) {\n return nok(code)\n }\n\n if (code === 45) {\n effects.consume(code)\n return commentClose\n }\n\n if (markdownLineEnding(code)) {\n returnState = comment\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return comment\n }\n /** @type {State} */\n\n function commentClose(code) {\n if (code === 45) {\n effects.consume(code)\n return end\n }\n\n return comment(code)\n }\n /** @type {State} */\n\n function cdataOpen(code) {\n if (code === buffer.charCodeAt(index++)) {\n effects.consume(code)\n return index === buffer.length ? cdata : cdataOpen\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function cdata(code) {\n if (code === null) {\n return nok(code)\n }\n\n if (code === 93) {\n effects.consume(code)\n return cdataClose\n }\n\n if (markdownLineEnding(code)) {\n returnState = cdata\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return cdata\n }\n /** @type {State} */\n\n function cdataClose(code) {\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n\n return cdata(code)\n }\n /** @type {State} */\n\n function cdataEnd(code) {\n if (code === 62) {\n return end(code)\n }\n\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n\n return cdata(code)\n }\n /** @type {State} */\n\n function declaration(code) {\n if (code === null || code === 62) {\n return end(code)\n }\n\n if (markdownLineEnding(code)) {\n returnState = declaration\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return declaration\n }\n /** @type {State} */\n\n function instruction(code) {\n if (code === null) {\n return nok(code)\n }\n\n if (code === 63) {\n effects.consume(code)\n return instructionClose\n }\n\n if (markdownLineEnding(code)) {\n returnState = instruction\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return instruction\n }\n /** @type {State} */\n\n function instructionClose(code) {\n return code === 62 ? end(code) : instruction(code)\n }\n /** @type {State} */\n\n function tagCloseStart(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagClose\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function tagClose(code) {\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagClose\n }\n\n return tagCloseBetween(code)\n }\n /** @type {State} */\n\n function tagCloseBetween(code) {\n if (markdownLineEnding(code)) {\n returnState = tagCloseBetween\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagCloseBetween\n }\n\n return end(code)\n }\n /** @type {State} */\n\n function tagOpen(code) {\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagOpen\n }\n\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function tagOpenBetween(code) {\n if (code === 47) {\n effects.consume(code)\n return end\n }\n\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenBetween\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenBetween\n }\n\n return end(code)\n }\n /** @type {State} */\n\n function tagOpenAttributeName(code) {\n if (\n code === 45 ||\n code === 46 ||\n code === 58 ||\n code === 95 ||\n asciiAlphanumeric(code)\n ) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n\n return tagOpenAttributeNameAfter(code)\n }\n /** @type {State} */\n\n function tagOpenAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeNameAfter\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeNameAfter\n }\n\n return tagOpenBetween(code)\n }\n /** @type {State} */\n\n function tagOpenAttributeValueBefore(code) {\n if (\n code === null ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96\n ) {\n return nok(code)\n }\n\n if (code === 34 || code === 39) {\n effects.consume(code)\n marker = code\n return tagOpenAttributeValueQuoted\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueBefore\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n\n effects.consume(code)\n marker = undefined\n return tagOpenAttributeValueUnquoted\n }\n /** @type {State} */\n\n function tagOpenAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code)\n return tagOpenAttributeValueQuotedAfter\n }\n\n if (code === null) {\n return nok(code)\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueQuoted\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return tagOpenAttributeValueQuoted\n }\n /** @type {State} */\n\n function tagOpenAttributeValueQuotedAfter(code) {\n if (code === 62 || code === 47 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function tagOpenAttributeValueUnquoted(code) {\n if (\n code === null ||\n code === 34 ||\n code === 39 ||\n code === 60 ||\n code === 61 ||\n code === 96\n ) {\n return nok(code)\n }\n\n if (code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n\n effects.consume(code)\n return tagOpenAttributeValueUnquoted\n } // We can\u2019t have blank lines in content, so no need to worry about empty\n // tokens.\n\n /** @type {State} */\n\n function atLineEnding(code) {\n effects.exit('htmlTextData')\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(\n effects,\n afterPrefix,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )\n }\n /** @type {State} */\n\n function afterPrefix(code) {\n effects.enter('htmlTextData')\n return returnState(code)\n }\n /** @type {State} */\n\n function end(code) {\n if (code === 62) {\n effects.consume(code)\n effects.exit('htmlTextData')\n effects.exit('htmlText')\n return ok\n }\n\n return nok(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factoryDestination} from 'micromark-factory-destination'\nimport {factoryLabel} from 'micromark-factory-label'\nimport {factoryTitle} from 'micromark-factory-title'\nimport {factoryWhitespace} from 'micromark-factory-whitespace'\nimport {markdownLineEndingOrSpace} from 'micromark-util-character'\nimport {push, splice} from 'micromark-util-chunked'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {resolveAll} from 'micromark-util-resolve-all'\n\n/** @type {Construct} */\nexport const labelEnd = {\n name: 'labelEnd',\n tokenize: tokenizeLabelEnd,\n resolveTo: resolveToLabelEnd,\n resolveAll: resolveAllLabelEnd\n}\n/** @type {Construct} */\n\nconst resourceConstruct = {\n tokenize: tokenizeResource\n}\n/** @type {Construct} */\n\nconst fullReferenceConstruct = {\n tokenize: tokenizeFullReference\n}\n/** @type {Construct} */\n\nconst collapsedReferenceConstruct = {\n tokenize: tokenizeCollapsedReference\n}\n/** @type {Resolver} */\n\nfunction resolveAllLabelEnd(events) {\n let index = -1\n /** @type {Token} */\n\n let token\n\n while (++index < events.length) {\n token = events[index][1]\n\n if (\n token.type === 'labelImage' ||\n token.type === 'labelLink' ||\n token.type === 'labelEnd'\n ) {\n // Remove the marker.\n events.splice(index + 1, token.type === 'labelImage' ? 4 : 2)\n token.type = 'data'\n index++\n }\n }\n\n return events\n}\n/** @type {Resolver} */\n\nfunction resolveToLabelEnd(events, context) {\n let index = events.length\n let offset = 0\n /** @type {Token} */\n\n let token\n /** @type {number|undefined} */\n\n let open\n /** @type {number|undefined} */\n\n let close\n /** @type {Event[]} */\n\n let media // Find an opening.\n\n while (index--) {\n token = events[index][1]\n\n if (open) {\n // If we see another link, or inactive link label, we\u2019ve been here before.\n if (\n token.type === 'link' ||\n (token.type === 'labelLink' && token._inactive)\n ) {\n break\n } // Mark other link openings as inactive, as we can\u2019t have links in\n // links.\n\n if (events[index][0] === 'enter' && token.type === 'labelLink') {\n token._inactive = true\n }\n } else if (close) {\n if (\n events[index][0] === 'enter' &&\n (token.type === 'labelImage' || token.type === 'labelLink') &&\n !token._balanced\n ) {\n open = index\n\n if (token.type !== 'labelLink') {\n offset = 2\n break\n }\n }\n } else if (token.type === 'labelEnd') {\n close = index\n }\n }\n\n const group = {\n type: events[open][1].type === 'labelLink' ? 'link' : 'image',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n }\n const label = {\n type: 'label',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[close][1].end)\n }\n const text = {\n type: 'labelText',\n start: Object.assign({}, events[open + offset + 2][1].end),\n end: Object.assign({}, events[close - 2][1].start)\n }\n media = [\n ['enter', group, context],\n ['enter', label, context]\n ] // Opening marker.\n\n media = push(media, events.slice(open + 1, open + offset + 3)) // Text open.\n\n media = push(media, [['enter', text, context]]) // Between.\n\n media = push(\n media,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + offset + 4, close - 3),\n context\n )\n ) // Text close, marker close, label close.\n\n media = push(media, [\n ['exit', text, context],\n events[close - 2],\n events[close - 1],\n ['exit', label, context]\n ]) // Reference, resource, or so.\n\n media = push(media, events.slice(close + 1)) // Media close.\n\n media = push(media, [['exit', group, context]])\n splice(events, open, events.length, media)\n return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeLabelEnd(effects, ok, nok) {\n const self = this\n let index = self.events.length\n /** @type {Token} */\n\n let labelStart\n /** @type {boolean} */\n\n let defined // Find an opening.\n\n while (index--) {\n if (\n (self.events[index][1].type === 'labelImage' ||\n self.events[index][1].type === 'labelLink') &&\n !self.events[index][1]._balanced\n ) {\n labelStart = self.events[index][1]\n break\n }\n }\n\n return start\n /** @type {State} */\n\n function start(code) {\n if (!labelStart) {\n return nok(code)\n } // It\u2019s a balanced bracket, but contains a link.\n\n if (labelStart._inactive) return balanced(code)\n defined = self.parser.defined.includes(\n normalizeIdentifier(\n self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })\n )\n )\n effects.enter('labelEnd')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelEnd')\n return afterLabelEnd\n }\n /** @type {State} */\n\n function afterLabelEnd(code) {\n // Resource: `[asd](fgh)`.\n if (code === 40) {\n return effects.attempt(\n resourceConstruct,\n ok,\n defined ? ok : balanced\n )(code)\n } // Collapsed (`[asd][]`) or full (`[asd][fgh]`) reference?\n\n if (code === 91) {\n return effects.attempt(\n fullReferenceConstruct,\n ok,\n defined\n ? effects.attempt(collapsedReferenceConstruct, ok, balanced)\n : balanced\n )(code)\n } // Shortcut reference: `[asd]`?\n\n return defined ? ok(code) : balanced(code)\n }\n /** @type {State} */\n\n function balanced(code) {\n labelStart._balanced = true\n return nok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeResource(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('resource')\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n return factoryWhitespace(effects, open)\n }\n /** @type {State} */\n\n function open(code) {\n if (code === 41) {\n return end(code)\n }\n\n return factoryDestination(\n effects,\n destinationAfter,\n nok,\n 'resourceDestination',\n 'resourceDestinationLiteral',\n 'resourceDestinationLiteralMarker',\n 'resourceDestinationRaw',\n 'resourceDestinationString',\n 32\n )(code)\n }\n /** @type {State} */\n\n function destinationAfter(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, between)(code)\n : end(code)\n }\n /** @type {State} */\n\n function between(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(\n effects,\n factoryWhitespace(effects, end),\n nok,\n 'resourceTitle',\n 'resourceTitleMarker',\n 'resourceTitleString'\n )(code)\n }\n\n return end(code)\n }\n /** @type {State} */\n\n function end(code) {\n if (code === 41) {\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n effects.exit('resource')\n return ok\n }\n\n return nok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeFullReference(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n return factoryLabel.call(\n self,\n effects,\n afterLabel,\n nok,\n 'reference',\n 'referenceMarker',\n 'referenceString'\n )(code)\n }\n /** @type {State} */\n\n function afterLabel(code) {\n return self.parser.defined.includes(\n normalizeIdentifier(\n self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n )\n )\n ? ok(code)\n : nok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCollapsedReference(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('reference')\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (code === 93) {\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n effects.exit('reference')\n return ok\n }\n\n return nok(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {labelEnd} from './label-end.js'\n/** @type {Construct} */\n\nexport const labelStartImage = {\n name: 'labelStartImage',\n tokenize: tokenizeLabelStartImage,\n resolveAll: labelEnd.resolveAll\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('labelImage')\n effects.enter('labelImageMarker')\n effects.consume(code)\n effects.exit('labelImageMarker')\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (code === 91) {\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelImage')\n return after\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function after(code) {\n /* To do: remove in the future once we\u2019ve switched from\n * `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n * which doesn\u2019t need this */\n\n /* Hidden footnotes hook */\n\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {labelEnd} from './label-end.js'\n/** @type {Construct} */\n\nexport const labelStartLink = {\n name: 'labelStartLink',\n tokenize: tokenizeLabelStartLink,\n resolveAll: labelEnd.resolveAll\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('labelLink')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelLink')\n return after\n }\n /** @type {State} */\n\n function after(code) {\n /* To do: remove in the future once we\u2019ve switched from\n * `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n * which doesn\u2019t need this */\n\n /* Hidden footnotes hook. */\n\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const lineEnding = {\n name: 'lineEnding',\n tokenize: tokenizeLineEnding\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeLineEnding(effects, ok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, ok, 'linePrefix')\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const thematicBreak = {\n name: 'thematicBreak',\n tokenize: tokenizeThematicBreak\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeThematicBreak(effects, ok, nok) {\n let size = 0\n /** @type {NonNullable
} */\n\n let marker\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('thematicBreak')\n marker = code\n return atBreak(code)\n }\n /** @type {State} */\n\n function atBreak(code) {\n if (code === marker) {\n effects.enter('thematicBreakSequence')\n return sequence(code)\n }\n\n if (markdownSpace(code)) {\n return factorySpace(effects, atBreak, 'whitespace')(code)\n }\n\n if (size < 3 || (code !== null && !markdownLineEnding(code))) {\n return nok(code)\n }\n\n effects.exit('thematicBreak')\n return ok(code)\n }\n /** @type {State} */\n\n function sequence(code) {\n if (code === marker) {\n effects.consume(code)\n size++\n return sequence\n }\n\n effects.exit('thematicBreakSequence')\n return atBreak(code)\n }\n}\n", "/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\n\n/**\n * @typedef {Record