pmx-canvas 0.11.0 → 0.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (300) hide show
  1. package/.github/extensions/pmx-canvas/extension.mjs +4 -1
  2. package/.github/extensions/pmx-canvas/runtime.json +1 -1
  3. package/.github/extensions/pmx-canvas/tools.json +440 -18
  4. package/CHANGELOG.md +51 -0
  5. package/dist/amp-plugin/pmx-canvas/LICENSE +21 -0
  6. package/dist/amp-plugin/pmx-canvas/THIRD_PARTY_LICENSES.txt +331 -0
  7. package/dist/amp-plugin/pmx-canvas/index.js +5445 -0
  8. package/dist/amp-plugin/pmx-canvas/runtime.json +3 -0
  9. package/dist/amp-plugin/pmx-canvas/shared-runtime.mjs +194 -0
  10. package/dist/amp-plugin/pmx-canvas/skills/pmx-canvas/SKILL.md +267 -0
  11. package/dist/amp-plugin/pmx-canvas/skills/pmx-canvas/evals/evals.json +1168 -0
  12. package/dist/amp-plugin/pmx-canvas/skills/pmx-canvas/evals/fixtures/code-exploration/src/auth/jwt.ts +17 -0
  13. package/dist/amp-plugin/pmx-canvas/skills/pmx-canvas/evals/fixtures/code-exploration/src/auth/login.ts +12 -0
  14. package/dist/amp-plugin/pmx-canvas/skills/pmx-canvas/evals/fixtures/code-exploration/src/auth/middleware.ts +13 -0
  15. package/dist/amp-plugin/pmx-canvas/skills/pmx-canvas/evals/fixtures/code-exploration/src/routes/auth.ts +13 -0
  16. package/dist/amp-plugin/pmx-canvas/skills/pmx-canvas/evals/fixtures/investigation-board/src/handlers/users.ts +27 -0
  17. package/dist/amp-plugin/pmx-canvas/skills/pmx-canvas/mcp.json +36 -0
  18. package/dist/amp-plugin/pmx-canvas/skills/pmx-canvas/references/ax-html-control-surface.md +101 -0
  19. package/dist/amp-plugin/pmx-canvas/skills/pmx-canvas/references/codex-app-adapter.md +151 -0
  20. package/dist/amp-plugin/pmx-canvas/skills/pmx-canvas/references/excalidraw-diagram-authoring.md +150 -0
  21. package/dist/amp-plugin/pmx-canvas/skills/pmx-canvas/references/full-reference.md +1839 -0
  22. package/dist/amp-plugin/pmx-canvas/skills/pmx-canvas/references/github-copilot-app-adapter.md +223 -0
  23. package/dist/amp-plugin/pmx-canvas/skills/pmx-canvas/references/html-primitives.md +139 -0
  24. package/dist/amp-plugin/pmx-canvas/skills/pmx-canvas/references/importing-context.md +132 -0
  25. package/dist/amp-plugin/pmx-canvas/skills/pmx-canvas/references/installing-pmx-canvas.md +301 -0
  26. package/dist/amp-plugin/pmx-canvas/skills/pmx-canvas/references/tours-and-recording.md +117 -0
  27. package/dist/amp-plugin/pmx-canvas/skills/pmx-canvas/references/workbench-workflows.md +908 -0
  28. package/dist/amp-plugin/pmx-canvas/skills/pmx-canvas-orchestration/SKILL.md +141 -0
  29. package/dist/amp-plugin/pmx-canvas/skills/pmx-canvas-testing/SKILL.md +266 -0
  30. package/dist/amp-plugin/pmx-canvas/start-mcp.mjs +14857 -0
  31. package/dist/amp-plugin/pmx-canvas/tools.json +10963 -0
  32. package/dist/canvas/chunks/{abnfDiagram-N423BO3Z-p8dtp6va.js → abnfDiagram-N423BO3Z-cwtsds5d.js} +1 -1
  33. package/dist/canvas/chunks/architecture-TIHT7OUA-x63cwejs.js +1 -0
  34. package/dist/canvas/chunks/{architectureDiagram-T3A2C74G-5jhmxrzf.js → architectureDiagram-T3A2C74G-b4xc9tpz.js} +3 -3
  35. package/dist/canvas/chunks/{blockDiagram-VBNYF7ZC-pw1fa9yb.js → blockDiagram-VBNYF7ZC-ahp3yxxs.js} +7 -7
  36. package/dist/canvas/chunks/{c4Diagram-5PPSVZJV-x07nq0tt.js → c4Diagram-5PPSVZJV-nappnay7.js} +4 -4
  37. package/dist/canvas/chunks/classDiagram-JCYQIIEL-k1j2xc1t.js +1 -0
  38. package/dist/canvas/chunks/classDiagram-v2-OCEON4UE-33x08xf2.js +1 -0
  39. package/dist/canvas/chunks/{cose-bilkent-JH36ORCC-nm39npq0.js → cose-bilkent-JH36ORCC-a428syda.js} +1 -1
  40. package/dist/canvas/chunks/cynefin-VYW2F7L2-8v6jxfz8.js +1 -0
  41. package/dist/canvas/chunks/{cynefinDiagram-MW4NZA55-vdxrwahz.js → cynefinDiagram-MW4NZA55-nspsqebj.js} +1 -1
  42. package/dist/canvas/chunks/{dagre-VZM6K2ZE-bqdm7wpd.js → dagre-VZM6K2ZE-8y6177fh.js} +2 -2
  43. package/dist/canvas/chunks/{diagram-7IWD3JNH-gs5gpr93.js → diagram-7IWD3JNH-vym028wn.js} +4 -4
  44. package/dist/canvas/chunks/{diagram-B4RE2ZJO-cgwjg47s.js → diagram-B4RE2ZJO-jddqb8sy.js} +1 -1
  45. package/dist/canvas/chunks/{diagram-LBJQPF4R-w3vahpav.js → diagram-LBJQPF4R-bjwbpkrn.js} +1 -1
  46. package/dist/canvas/chunks/{diagram-Q27KOJAE-42837z6h.js → diagram-Q27KOJAE-j6ph6hcx.js} +2 -2
  47. package/dist/canvas/chunks/{diagram-UB23O5K3-4fz83q59.js → diagram-UB23O5K3-p09w8jej.js} +1 -1
  48. package/dist/canvas/chunks/{ebnfDiagram-BXEA7PRR-zphtgegj.js → ebnfDiagram-BXEA7PRR-j975ycq5.js} +1 -1
  49. package/dist/canvas/chunks/{erDiagram-JOGREHBK-zvbbdxp4.js → erDiagram-JOGREHBK-sxp6hjn8.js} +5 -5
  50. package/dist/canvas/chunks/eventmodeling-45OFAUF4-xzfgn6xg.js +1 -0
  51. package/dist/canvas/chunks/flowDiagram-UKHOOZJN-2nsmkskb.js +1 -0
  52. package/dist/canvas/chunks/{ganttDiagram-PKOTCBZU-282jzycm.js → ganttDiagram-PKOTCBZU-4tv230y2.js} +2 -2
  53. package/dist/canvas/chunks/gitGraph-TEB2WS4Q-macbhand.js +1 -0
  54. package/dist/canvas/chunks/{gitGraphDiagram-DS77QQ5N-vqqy6p1b.js → gitGraphDiagram-DS77QQ5N-mqgmnw9g.js} +1 -1
  55. package/dist/canvas/chunks/{index-wgv7en21.js → index-037z5dz2.js} +2 -2
  56. package/dist/canvas/chunks/{index-w2mra17t.js → index-081n3har.js} +1 -1
  57. package/dist/canvas/chunks/{index-353m7b0p.js → index-5n03dmb9.js} +1 -1
  58. package/dist/canvas/chunks/{index-yw8h9vha.js → index-60pgzdqe.js} +1 -1
  59. package/dist/canvas/chunks/index-8g1vb57n.js +2 -0
  60. package/dist/canvas/chunks/{index-vv56h019.js → index-8rjes9r6.js} +1 -1
  61. package/dist/canvas/chunks/{index-nprm96xp.js → index-9022d1n9.js} +1 -1
  62. package/dist/canvas/chunks/{index-194m3hc3.js → index-9b02042t.js} +1 -1
  63. package/dist/canvas/chunks/{index-0rk4gp1g.js → index-ap4q4vez.js} +1 -1
  64. package/dist/canvas/chunks/{index-rh7nv68n.js → index-dyp2nhd3.js} +1 -1
  65. package/dist/canvas/chunks/index-frvta4tm.js +2 -0
  66. package/dist/canvas/chunks/{index-s4j678gj.js → index-h9ycj8n2.js} +1 -1
  67. package/dist/canvas/chunks/{index-fjtdggjn.js → index-mergmj97.js} +2 -2
  68. package/dist/canvas/chunks/index-nwsya6dj.js +301 -0
  69. package/dist/canvas/chunks/{index-3cy1bzwh.js → index-nz8qbd1p.js} +1 -1
  70. package/dist/canvas/chunks/{index-d3b3gqe9.js → index-qhfrazv3.js} +1 -1
  71. package/dist/canvas/chunks/{index-6qmsnxwy.js → index-v119nznk.js} +4 -4
  72. package/dist/canvas/chunks/{index-r2fyc9w1.js → index-vpt37m3d.js} +6 -6
  73. package/dist/canvas/chunks/{index-qj8fxwsf.js → index-y9ma6azy.js} +1 -1
  74. package/dist/canvas/chunks/{index-tb1wf525.js → index-zx0j3a2z.js} +26 -26
  75. package/dist/canvas/chunks/info-DKCQHKI2-a0ykzs9z.js +1 -0
  76. package/dist/canvas/chunks/{infoDiagram-6WML65LV-v1yvggqj.js → infoDiagram-6WML65LV-qv97qq6a.js} +2 -2
  77. package/dist/canvas/chunks/ishikawaDiagram-WSZJBQD7-p9306gh0.js +70 -0
  78. package/dist/canvas/chunks/{journeyDiagram-NVQOT4AX-zjcffveh.js → journeyDiagram-NVQOT4AX-sv67zats.js} +5 -5
  79. package/dist/canvas/chunks/{kanban-definition-27J2QSJJ-dakqtfp1.js → kanban-definition-27J2QSJJ-k2pfam6p.js} +1 -1
  80. package/dist/canvas/chunks/{mermaid.core-j2geswrd.js → mermaid.core-83r0fdce.js} +4 -4
  81. package/dist/canvas/chunks/{mindmap-definition-FAOFIHXS-142xhr3k.js → mindmap-definition-FAOFIHXS-vg2newm1.js} +1 -1
  82. package/dist/canvas/chunks/packet-7NZHBO7P-tqnabcdv.js +1 -0
  83. package/dist/canvas/chunks/{pegDiagram-VL7TDLO6-5wvk7vsd.js → pegDiagram-VL7TDLO6-k2h7zc5n.js} +1 -1
  84. package/dist/canvas/chunks/pie-RZYD4A2V-wke6gyhe.js +1 -0
  85. package/dist/canvas/chunks/{pieDiagram-7S7Q4E2Y-ztdhwycc.js → pieDiagram-7S7Q4E2Y-hg169p1v.js} +2 -2
  86. package/dist/canvas/chunks/{quadrantDiagram-CIZ2JOQS-c5p9gmg6.js → quadrantDiagram-CIZ2JOQS-bxtvsq0b.js} +5 -5
  87. package/dist/canvas/chunks/radar-I7S5WNFK-w7ka0drw.js +1 -0
  88. package/dist/canvas/chunks/railroad-3IZDKUUU-y3vg318x.js +1 -0
  89. package/dist/canvas/chunks/railroad-abnf-AHOZXSZD-6hqvcz3c.js +1 -0
  90. package/dist/canvas/chunks/railroad-ebnf-EBAXGLYW-vcae260m.js +1 -0
  91. package/dist/canvas/chunks/railroad-peg-LSFZ7HO6-0dbyme23.js +1 -0
  92. package/dist/canvas/chunks/{railroadDiagram-AXF67PYL-xkmqkjwf.js → railroadDiagram-AXF67PYL-njyhcp4p.js} +1 -1
  93. package/dist/canvas/chunks/{requirementDiagram-LRYGKXZP-9wm2dyaw.js → requirementDiagram-LRYGKXZP-2z6v09gm.js} +4 -4
  94. package/dist/canvas/chunks/{sankeyDiagram-W5VNT64P-2w19etgb.js → sankeyDiagram-W5VNT64P-15mzam0e.js} +1 -1
  95. package/dist/canvas/chunks/{sequenceDiagram-SI44F4Z6-0jn0vwmz.js → sequenceDiagram-SI44F4Z6-rbshyd2c.js} +12 -12
  96. package/dist/canvas/chunks/{sizeCapture-X5ZJPWSS-x75epwdq.js → sizeCapture-X5ZJPWSS-sg26xwts.js} +1 -1
  97. package/dist/canvas/chunks/{stateDiagram-OKZ733FA-schjpy6d.js → stateDiagram-OKZ733FA-6eahp98e.js} +1 -1
  98. package/dist/canvas/chunks/stateDiagram-v2-UEYNNEHI-tty0ggn5.js +1 -0
  99. package/dist/canvas/chunks/{swimlanes-SLNWSIFB-gkw4xce3.js → swimlanes-SLNWSIFB-ze5db10t.js} +1 -1
  100. package/dist/canvas/chunks/swimlanesDiagram-ULZ7WXOC-thze75gq.js +8 -0
  101. package/dist/canvas/chunks/{timeline-definition-Z64GVDOM-x7nkcy01.js → timeline-definition-Z64GVDOM-vnp7jyy8.js} +3 -3
  102. package/dist/canvas/chunks/treeView-QDETBFTQ-6ysffnm6.js +1 -0
  103. package/dist/canvas/chunks/treemap-6X3UGDF4-m3h9p066.js +1 -0
  104. package/dist/canvas/chunks/vennDiagram-T6HMQDX7-0qrnb7mj.js +34 -0
  105. package/dist/canvas/chunks/wardley-OPB4EBWU-dp37drwx.js +1 -0
  106. package/dist/canvas/chunks/{wardleyDiagram-T6FBY63Y-t1j52t9r.js → wardleyDiagram-T6FBY63Y-8nxg8wqt.js} +4 -4
  107. package/dist/canvas/chunks/{xychartDiagram-ELKLHX3M-38t16pme.js → xychartDiagram-ELKLHX3M-nj921e7s.js} +5 -5
  108. package/dist/canvas/global.css +94 -1
  109. package/dist/canvas/index.js +154 -145
  110. package/dist/canvas/mcp-app.html +600 -498
  111. package/dist/json-render/index.css +1 -1
  112. package/dist/types/client/canvas/BoardMoveDialog.d.ts +2 -0
  113. package/dist/types/client/canvas/EdgeEditor.d.ts +19 -0
  114. package/dist/types/client/canvas/GroupNavigation.d.ts +2 -0
  115. package/dist/types/client/canvas/TextPrompt.d.ts +4 -0
  116. package/dist/types/client/nodes/PromptNode.d.ts +1 -0
  117. package/dist/types/client/nodes/ViewerFrame.d.ts +1 -1
  118. package/dist/types/client/nodes/WorkCard.d.ts +7 -0
  119. package/dist/types/client/nodes/use-ax-surface-bridge.d.ts +1 -0
  120. package/dist/types/client/state/canvas-store.d.ts +15 -0
  121. package/dist/types/client/state/human-store.d.ts +2 -0
  122. package/dist/types/client/state/intent-bridge.d.ts +4 -2
  123. package/dist/types/client/state/relation-store.d.ts +11 -0
  124. package/dist/types/client/types.d.ts +1 -1
  125. package/dist/types/json-render/catalog.d.ts +2 -2
  126. package/dist/types/server/agent-presence.d.ts +1 -0
  127. package/dist/types/server/ax-interaction.d.ts +1 -0
  128. package/dist/types/server/ax-state-manager.d.ts +10 -2
  129. package/dist/types/server/board-local.d.ts +4 -0
  130. package/dist/types/server/board-move.d.ts +38 -0
  131. package/dist/types/server/canvas-db.d.ts +12 -2
  132. package/dist/types/server/canvas-operations.d.ts +5 -6
  133. package/dist/types/server/canvas-provenance.d.ts +1 -1
  134. package/dist/types/server/canvas-serialization.d.ts +1 -0
  135. package/dist/types/server/canvas-state.d.ts +84 -20
  136. package/dist/types/server/card-relocation.d.ts +6 -0
  137. package/dist/types/server/context-reads.d.ts +3 -1
  138. package/dist/types/server/human-presence.d.ts +1 -1
  139. package/dist/types/server/index.d.ts +16 -5
  140. package/dist/types/server/intent-registry.d.ts +8 -4
  141. package/dist/types/server/knowledge-lifecycle.d.ts +4 -2
  142. package/dist/types/server/mutation-history.d.ts +7 -5
  143. package/dist/types/server/operations/registry.d.ts +2 -0
  144. package/dist/types/server/trace-manager.d.ts +1 -0
  145. package/dist/types/shared/ax-kinds.d.ts +6 -0
  146. package/dist/types/shared/ax-surface-protocol.d.ts +8 -0
  147. package/dist/types/shared/human-presence.d.ts +1 -0
  148. package/dist/types/shared/lifecycle-status.d.ts +2 -0
  149. package/docs/RELEASE.md +21 -14
  150. package/docs/agent-plugin.md +22 -2
  151. package/docs/amp-plugin.md +270 -0
  152. package/docs/cli.md +42 -3
  153. package/docs/design/GuestName.dc.html +50 -0
  154. package/docs/design/PluginLogo.svg +7 -0
  155. package/docs/design/WorkCards.dc.html +39 -0
  156. package/docs/design/canvas.json +16 -0
  157. package/docs/design/plugin-logo.png +0 -0
  158. package/docs/design.md +111 -8
  159. package/docs/evals/agents-md-sections.md +38 -0
  160. package/docs/http-api.md +128 -10
  161. package/docs/mcp.md +61 -9
  162. package/docs/node-types.md +71 -1
  163. package/docs/plans/plan-009-tech-debt-backlog.md +1 -1
  164. package/docs/plans/plan-019-post-0.9-roadmap.md +44 -20
  165. package/docs/plans/plan-020-wave-5-work-planning.md +553 -0
  166. package/docs/product-vision-2026-09.md +33 -17
  167. package/docs/sdk.md +18 -0
  168. package/package.json +6 -3
  169. package/plugins/pmx-canvas/assets/preview.png +0 -0
  170. package/plugins/pmx-canvas/com.github.copilot/extensions/pmx-canvas/extension.mjs +4 -1
  171. package/plugins/pmx-canvas/com.github.copilot/extensions/pmx-canvas/runtime.json +1 -1
  172. package/plugins/pmx-canvas/plugin.json +2 -2
  173. package/plugins/pmx-canvas/runtime.json +1 -1
  174. package/plugins/pmx-canvas/tools.json +440 -18
  175. package/skills/data-analysis/SKILL.md +13 -26
  176. package/skills/frontend-design/LICENSE.txt +177 -0
  177. package/skills/frontend-design/SKILL.md +3 -0
  178. package/skills/pmx-canvas/SKILL.md +248 -842
  179. package/skills/pmx-canvas/evals/evals.json +110 -5
  180. package/skills/pmx-canvas/references/full-reference.md +142 -28
  181. package/skills/pmx-canvas/references/html-primitives.md +7 -0
  182. package/skills/pmx-canvas/references/installing-pmx-canvas.md +61 -11
  183. package/skills/pmx-canvas/references/tours-and-recording.md +39 -6
  184. package/skills/pmx-canvas/references/workbench-workflows.md +908 -0
  185. package/skills/pmx-canvas-testing/SKILL.md +7 -5
  186. package/skills/published-consumer-e2e/SKILL.md +25 -8
  187. package/skills/published-consumer-e2e/scripts/run-published-consumer-e2e.sh +51 -75
  188. package/skills/web-artifacts-builder/LICENSE.txt +202 -0
  189. package/skills/web-artifacts-builder/SKILL.md +6 -0
  190. package/skills/web-artifacts-builder/scripts/bundle-artifact.sh +2 -2
  191. package/skills/web-artifacts-builder/scripts/init-artifact.sh +8 -8
  192. package/src/cli/commands/apps.ts +1 -0
  193. package/src/cli/commands/boards.ts +30 -0
  194. package/src/client/App.tsx +20 -4
  195. package/src/client/canvas/AttentionHistory.tsx +10 -2
  196. package/src/client/canvas/BoardMoveDialog.tsx +225 -0
  197. package/src/client/canvas/CanvasNode.tsx +45 -2
  198. package/src/client/canvas/CanvasViewport.tsx +38 -9
  199. package/src/client/canvas/ContextMenu.tsx +34 -12
  200. package/src/client/canvas/EdgeEditor.tsx +149 -0
  201. package/src/client/canvas/EdgeLayer.tsx +87 -16
  202. package/src/client/canvas/ExpandedNodeOverlay.tsx +4 -0
  203. package/src/client/canvas/GroupNavigation.tsx +85 -0
  204. package/src/client/canvas/RelationsPanel.tsx +9 -0
  205. package/src/client/canvas/SelectionBar.tsx +21 -0
  206. package/src/client/canvas/SessionPanel.tsx +35 -1
  207. package/src/client/canvas/TextPrompt.tsx +18 -1
  208. package/src/client/canvas/TopBar.tsx +30 -0
  209. package/src/client/canvas/canvas-area.ts +1 -1
  210. package/src/client/nodes/ExtAppFrame.tsx +26 -10
  211. package/src/client/nodes/MarkdownNode.tsx +6 -7
  212. package/src/client/nodes/PromptNode.tsx +32 -3
  213. package/src/client/nodes/StatusNode.tsx +12 -0
  214. package/src/client/nodes/StatusSummary.tsx +11 -0
  215. package/src/client/nodes/ViewerFrame.tsx +21 -10
  216. package/src/client/nodes/WorkCard.tsx +175 -0
  217. package/src/client/nodes/use-ax-surface-bridge.ts +18 -14
  218. package/src/client/state/attention-bridge.ts +5 -0
  219. package/src/client/state/attention-store.ts +1 -0
  220. package/src/client/state/canvas-store.ts +185 -15
  221. package/src/client/state/human-store.ts +22 -2
  222. package/src/client/state/intent-bridge.ts +19 -5
  223. package/src/client/state/relation-store.ts +127 -1
  224. package/src/client/theme/global.css +94 -1
  225. package/src/client/types.ts +1 -0
  226. package/src/mcp/server.ts +13 -3
  227. package/src/server/agent-presence.ts +43 -23
  228. package/src/server/ax-flow-loop.ts +6 -0
  229. package/src/server/ax-gate-ttl.ts +8 -1
  230. package/src/server/ax-interaction.ts +16 -10
  231. package/src/server/ax-state-manager.ts +17 -4
  232. package/src/server/ax-wait.ts +20 -6
  233. package/src/server/board-export.ts +19 -6
  234. package/src/server/board-local.ts +20 -0
  235. package/src/server/board-move.ts +297 -0
  236. package/src/server/canvas-db.ts +262 -160
  237. package/src/server/canvas-operations.ts +139 -109
  238. package/src/server/canvas-schema.ts +21 -0
  239. package/src/server/canvas-serialization.ts +2 -0
  240. package/src/server/canvas-state.ts +792 -159
  241. package/src/server/card-relocation.ts +53 -0
  242. package/src/server/code-graph.ts +4 -3
  243. package/src/server/context-reads.ts +83 -55
  244. package/src/server/demo-state.json +35 -15
  245. package/src/server/file-watcher.ts +30 -10
  246. package/src/server/human-presence.ts +18 -5
  247. package/src/server/index.ts +35 -15
  248. package/src/server/intent-registry.ts +43 -5
  249. package/src/server/knowledge-lifecycle.ts +32 -9
  250. package/src/server/lifecycle-status.ts +29 -1
  251. package/src/server/mcp-app-runtime.ts +26 -7
  252. package/src/server/mutation-history.ts +37 -8
  253. package/src/server/operations/composites.ts +6 -3
  254. package/src/server/operations/mcp-contracts.ts +15 -0
  255. package/src/server/operations/mcp.ts +36 -9
  256. package/src/server/operations/ops/annotation.ts +22 -1
  257. package/src/server/operations/ops/ax-await.ts +1 -0
  258. package/src/server/operations/ops/ax-timeline.ts +28 -2
  259. package/src/server/operations/ops/batch.ts +25 -11
  260. package/src/server/operations/ops/boards.ts +44 -3
  261. package/src/server/operations/ops/nodes.ts +70 -0
  262. package/src/server/operations/ops/query.ts +32 -3
  263. package/src/server/operations/ops/snapshots.ts +1 -0
  264. package/src/server/operations/registry.ts +49 -4
  265. package/src/server/server.ts +62 -16
  266. package/src/server/tour-control.ts +37 -12
  267. package/src/server/trace-manager.ts +4 -0
  268. package/src/server/web-artifacts/scripts/bundle-artifact.sh +2 -2
  269. package/src/server/web-artifacts/scripts/init-artifact.sh +8 -8
  270. package/src/shared/agent-context.ts +7 -1
  271. package/src/shared/auto-arrange.ts +5 -4
  272. package/src/shared/ax-kinds.ts +13 -0
  273. package/src/shared/ax-surface-protocol.ts +22 -0
  274. package/src/shared/human-presence.ts +1 -0
  275. package/src/shared/lifecycle-status.ts +2 -0
  276. package/dist/canvas/chunks/architecture-TIHT7OUA-9tffvpsv.js +0 -1
  277. package/dist/canvas/chunks/classDiagram-JCYQIIEL-nc6g5x1r.js +0 -1
  278. package/dist/canvas/chunks/classDiagram-v2-OCEON4UE-0qnbpwvh.js +0 -1
  279. package/dist/canvas/chunks/cynefin-VYW2F7L2-ys8p46ts.js +0 -1
  280. package/dist/canvas/chunks/eventmodeling-45OFAUF4-v9q6dn4c.js +0 -1
  281. package/dist/canvas/chunks/flowDiagram-UKHOOZJN-yrr5z8tc.js +0 -1
  282. package/dist/canvas/chunks/gitGraph-TEB2WS4Q-kdwb8m0a.js +0 -1
  283. package/dist/canvas/chunks/index-1r72hdzb.js +0 -301
  284. package/dist/canvas/chunks/index-g3pwnqeb.js +0 -2
  285. package/dist/canvas/chunks/index-rft2hcz5.js +0 -2
  286. package/dist/canvas/chunks/info-DKCQHKI2-wpzs6sz3.js +0 -1
  287. package/dist/canvas/chunks/ishikawaDiagram-WSZJBQD7-5hnq1a9p.js +0 -70
  288. package/dist/canvas/chunks/packet-7NZHBO7P-xn439f0s.js +0 -1
  289. package/dist/canvas/chunks/pie-RZYD4A2V-0kf16rwh.js +0 -1
  290. package/dist/canvas/chunks/radar-I7S5WNFK-0g2pz36t.js +0 -1
  291. package/dist/canvas/chunks/railroad-3IZDKUUU-fcaran6j.js +0 -1
  292. package/dist/canvas/chunks/railroad-abnf-AHOZXSZD-wgdya41q.js +0 -1
  293. package/dist/canvas/chunks/railroad-ebnf-EBAXGLYW-gy07a4ka.js +0 -1
  294. package/dist/canvas/chunks/railroad-peg-LSFZ7HO6-ewk6wtkh.js +0 -1
  295. package/dist/canvas/chunks/stateDiagram-v2-UEYNNEHI-k8sfp2e7.js +0 -1
  296. package/dist/canvas/chunks/swimlanesDiagram-ULZ7WXOC-nqysw67j.js +0 -8
  297. package/dist/canvas/chunks/treeView-QDETBFTQ-cesw6gp0.js +0 -1
  298. package/dist/canvas/chunks/treemap-6X3UGDF4-zdv4knp9.js +0 -1
  299. package/dist/canvas/chunks/vennDiagram-T6HMQDX7-x8dqn9yf.js +0 -34
  300. package/dist/canvas/chunks/wardley-OPB4EBWU-44pdddez.js +0 -1
@@ -1 +1 @@
1
- import{e,t,u,r,h,Ne,ct,sn,Qe,on,yt,Q,kr,X,ln,Ft,Xt,Kt}from"./index-1r72hdzb.js";import{L}from"./index-fjtdggjn.js";import{T}from"./index-6qmsnxwy.js";import{Dr}from"./index-0rk4gp1g.js";import"./index-d3b3gqe9.js";async function Jo(n,o){let s=new L({multigraph:!0,compound:!0}),i=[...o.edges],c=r(),a=n.insert("g").attr("class","root"),l=a.insert("g").attr("class","clusters"),m=a.insert("g").attr("class","edges edgePath"),f=a.insert("g").attr("class","edgeLabels"),g=a.insert("g").attr("class","nodes"),y=new Map,I=n.node()!=null;await Promise.all(o.nodes.map(async(E)=>{if(E.isGroup)s.setNode(E.id,{...E});else{if(I){let b=await Qe(g,E,{config:c,dir:E.dir}),x=b.node()?.getBBox()??{width:0,height:0};y.set(E.id,b),E.width=x.width,E.height=x.height}s.setNode(E.id,{...E})}}));for(let E of i)if(s.setEdge(E.start,E.end,{...E},E.id),!o.edges.some((x)=>x.id===E.id))o.edges.push(E);if(globalThis.mermaidCaptureSizes){let{captureNodeSizes:E}=await (T("x75epwdq"),import("./sizeCapture-X5ZJPWSS-x75epwdq.js"));E(n,o)}return{graph:s,groups:{clusters:l,edgePaths:m,edgeLabels:f,nodes:g,rootGroups:a},nodeElements:y}}e(Jo,"createGraphWithElements");var Vo=5,nn=0.00001,rn=0.000001;function hn(n){let o=[];for(let s=0;s<n.length-1;s++)o.push({a:n[s],b:n[s+1]});return o}e(hn,"buildSegmentList");function Zo(n,o,s,i){let c=o.x-n.x,a=o.y-n.y,l=i.x-s.x,m=i.y-s.y,f=c*m-a*l;if(f===0)return null;let g=s.x-n.x,y=s.y-n.y,I=(g*m-y*l)/f,E=(g*a-y*c)/f;if(I<=rn||I>=1-rn||E<=rn||E>=1-rn)return null;return{point:{x:n.x+I*c,y:n.y+I*a},tA:I,tB:E}}e(Zo,"segmentIntersection");function Xn(n){return Math.abs(n.b.x-n.a.x)>=Math.abs(n.b.y-n.a.y)}e(Xn,"isHorizontalSeg");function Qo(n){let o=[];for(let s=0;s<n.length;s++){let i=n[s],c=hn(i.points);for(let a=s+1;a<n.length;a++){let l=n[a],m=hn(l.points);for(let[f,g]of c.entries())for(let[y,I]of m.entries()){let E=Zo(g.a,g.b,I.a,I.b);if(!E)continue;let b=Xn(g),x=Xn(I);if(b!==x?b:!1)o.push({jumpEdgeId:i.id,otherEdgeId:l.id,segIndex:f,t:E.tA,point:E.point});else o.push({jumpEdgeId:l.id,otherEdgeId:i.id,segIndex:y,t:E.tB,point:E.point})}}}return o}e(Qo,"findEdgeIntersections");function be(n){let o=Math.round(n*1000)/1000;return Number.isInteger(o)?`${o}`:`${o}`}e(be,"fmt");function $e(n){return`${be(n.x)},${be(n.y)}`}e($e,"pointToString");function ts(n){let o=n.b.x-n.a.x,s=n.b.y-n.a.y;if(Math.abs(o)>=Math.abs(s))return o>=0?1:0;return s>=0?1:0}e(ts,"getArcSweepFlag");var zr=0.001;function es(n,o){if(n.length<2)return n.map((a)=>({...a}));let s=n.map((a)=>({...a})),i=o.arrowTypeStart&&Q[o.arrowTypeStart];if(i){let a=n[0],l=n[1],m=Math.atan2(l.y-a.y,l.x-a.x);s[0].x=a.x+i*Math.cos(m),s[0].y=a.y+i*Math.sin(m)}let c=o.arrowTypeEnd&&Q[o.arrowTypeEnd];if(c){let a=n.length,l=n[a-2],m=n[a-1],f=Math.atan2(m.y-l.y,m.x-l.x);s[a-1].x=m.x-c*Math.cos(f),s[a-1].y=m.y-c*Math.sin(f)}return s}e(es,"applyMarkerOffsets");function ns(n,o,s,i,c){let a=n.point.x,l=n.point.y,m={x:a-o*n.r,y:l-s*n.r},f={x:a+o*n.r,y:l+s*n.r},g=[`L${$e(m)}`];if(c==="arc")g.push(`A${be(n.r)},${be(n.r)} 0 0 ${i} ${$e(f)}`);else g.push(`M${$e(f)}`);return g}e(ns,"emitJump");function Yn(n,o,s,i){let c=o.x-n.x,a=o.y-n.y,l=s.x-o.x,m=s.y-o.y,f=Math.hypot(c,a),g=Math.hypot(l,m);if(f<nn||g<nn)return null;let y=c/f,I=a/f,E=l/g,b=m/g,x=y*E+I*b,d=Math.max(-1,Math.min(1,x)),M=Math.acos(d);if(M<nn||Math.abs(Math.PI-M)<nn)return null;let A=Math.min(i/Math.sin(M/2),f/2,g/2);return{startX:o.x-y*A,startY:o.y-I*A,endX:o.x+E*A,endY:o.y+b*A,ctrlX:o.x,ctrlY:o.y,cutLen:A}}e(Yn,"computeRoundedCorner");function os(n,o,s){let i=n.points;if(i.length<2)return"";let c=es(i,n),a=n.curve==="rounded",l=hn(c),m=new Map;for(let g of o){let y=l[g.segIndex];if(!y)continue;let I=Math.hypot(y.b.x-y.a.x,y.b.y-y.a.y),E=m.get(g.segIndex)??[];E.push({t:g.t,point:g.point,d:g.t*I,r:s.jumpRadius}),m.set(g.segIndex,E)}let f=[`M${$e(c[0])}`];for(let g=0;g<l.length;g++){let y=l[g],I=Math.hypot(y.b.x-y.a.x,y.b.y-y.a.y),E=I===0?0:(y.b.x-y.a.x)/I,b=I===0?0:(y.b.y-y.a.y)/I,x=ts(y),d=0;if(a&&g>0){let N=Yn(c[g-1],c[g],c[g+1]??c[g],Vo);if(N)d=N.cutLen}let M=I,A=null;if(a&&g<l.length-1){if(A=Yn(c[g],c[g+1],c[g+2]??c[g+1],Vo),A)M=I-A.cutLen}let v=[...m.get(g)??[]].sort((N,k)=>N.t-k.t);for(let N of v)N.r=Math.min(N.r,N.d-d,M-N.d);for(let N=0;N<v.length-1;N++){let k=v[N+1].d-v[N].d;if(v[N].r+v[N+1].r>k){let w=k/2;v[N].r=Math.min(v[N].r,w),v[N+1].r=Math.min(v[N+1].r,w)}}for(let N of v){if(N.r<zr)continue;f.push(...ns(N,E,b,x,s.jumpStyle))}if(a&&A)f.push(`L${be(A.startX)},${be(A.startY)}`),f.push(`Q${be(A.ctrlX)},${be(A.ctrlY)} ${be(A.endX)},${be(A.endY)}`);else f.push(`L${$e(y.b)}`)}return f.join(" ")}e(os,"rewriteEdgePath");function ss(n){return/^[\d\s+,.LMelm-]*$/.test(n)}e(ss,"isStraightPath");function rs(n){if(!n)return!0;return n==="linear"||n==="rounded"||n==="step"||n==="stepBefore"||n==="stepAfter"}e(rs,"curveSupportsLineHops");function is(n){if(!n)return null;try{let o=typeof atob==="function"?atob(n):Buffer.from(n,"base64").toString(),s=JSON.parse(o);if(!Array.isArray(s))return null;let i=[];for(let c of s)if(c&&typeof c.x==="number"&&typeof c.y==="number")i.push({x:c.x,y:c.y});return i.length>=2?i:null}catch{return null}}e(is,"decodeDataPoints");function cs(n,o,s){if(!s.enabled)return;let i=n.node();if(!i)return;let c=new Map;for(let g of o)c.set(g.id,g);let a=[],l=new Map;for(let g of o){let y=typeof CSS<"u"&&CSS.escape?CSS.escape(g.id):g.id,I=i.querySelector(`path[data-id="${y}"]`);if(!I)continue;l.set(g.id,I);let b=is(I.getAttribute("data-points"))??g.points;a.push({...g,points:b})}let m=Qo(a);if(m.length===0)return;let f=new Map;for(let g of m){let y=f.get(g.jumpEdgeId)??[];y.push(g),f.set(g.jumpEdgeId,y)}for(let g of a){let y=f.get(g.id);if(!y||y.length===0)continue;let E=c.get(g.id)?.curve;if(E!==void 0&&!rs(E))continue;let b=l.get(g.id);if(!b)continue;if(E===void 0){let N=b.getAttribute("d")??"";if(!ss(N))continue}let x=b.getAttribute("style")??"",d=/stroke-dasharray\s*:\s*0\s+([\d.]+)\s+[\d.]+\s+([\d.]+)/.exec(x),M=d?Number.parseFloat(d[1]):null,A=d?Number.parseFloat(d[2]):null,v=os(g,y,s);if(b.setAttribute("d",v),M!==null&&A!==null&&typeof b.getTotalLength==="function"){let N=b.getTotalLength(),k=Math.max(0,N-M-A),w=`0 ${M} ${k} ${A}`,C=x.replace(/stroke-dasharray\s*:[^;]*;?/g,`stroke-dasharray: ${w};`).replace(/;\s*;+/g,";");b.setAttribute("style",C)}}}e(cs,"applyLineJumpsToSvg");async function as(n,o){for(let c of n.nodes)if(c.isGroup)await ct(o.clusters,c);else yt(c);let s=new Map;for(let c of n.nodes)if(c?.id)s.set(c.id,c);for(let c of n.edges){let a=c.start?s.get(c.start)??{}:{},l=c.end?s.get(c.end)??{}:{},m=Xt(o.edgePaths,{...c},{},n.type,a,l,n.diagramId);if(c.label)await Ft(o.rootGroups,c);if(c.label)ls(c,m)}let i=n.config?.swimlane?.lineHops;if(i!==!1){let c=i==="gap"?"gap":"arc",a=n.edges.filter((l)=>Array.isArray(l.points)&&l.points.length>=2).map((l)=>({id:l.id,points:l.points,curve:l.curve,arrowTypeStart:l.arrowTypeStart,arrowTypeEnd:l.arrowTypeEnd}));cs(o.edgePaths,a,{enabled:!0,jumpRadius:6,jumpStyle:c})}}e(as,"adjustLayout");function ls(n,o){let s=o?.updatedPath??o?.originalPath,i=u(),{subGraphTitleTotalMargin:c}=Ne({flowchart:i.flowchart??{}});if(n.label){let a=kr.get(n.id),{x:l,y:m}=n;if(s){let f=h.calcLabelPosition(s);if(t.debug("Moving label "+n.label+" from (",l,",",m,") to (",f.x,",",f.y,") abc88"),o)l=f.x,m=f.y}a.attr("transform",`translate(${l}, ${m+c/2})`)}if(n?.startLabelLeft){let a=X.get(n.id).startLeft,l=n?.x,m=n?.y;if(s){let f=h.calcTerminalLabelPosition(n.arrowTypeStart?10:0,"start_left",s);l=f.x,m=f.y}a.attr("transform",`translate(${l}, ${m})`)}if(n.startLabelRight){let a=X.get(n.id).startRight,{x:l,y:m}=n;if(s){let f=h.calcTerminalLabelPosition(n.arrowTypeStart?10:0,"start_right",s);l=f.x,m=f.y}a.attr("transform",`translate(${l}, ${m})`)}if(n.endLabelLeft){let a=X.get(n.id).endLeft,{x:l,y:m}=n;if(s){let f=h.calcTerminalLabelPosition(n.arrowTypeEnd?10:0,"end_left",s);l=f.x,m=f.y}a.attr("transform",`translate(${l}, ${m})`)}if(n.endLabelRight){let a=X.get(n.id).endRight,{x:l,y:m}=n;if(s){let f=h.calcTerminalLabelPosition(n.arrowTypeEnd?10:0,"end_right",s);l=f.x,m=f.y}a.attr("transform",`translate(${l}, ${m})`)}}e(ls,"positionEdgeLabel");var kn="__swimlane_default__",Vr=21,jo=20;function Gn(n){return Math.max(n.padding??jo,jo)}e(Gn,"topLaneHorizontalPadding");function fs(n){let{x:o,y:s,width:i,height:c}=n,a=n.swimlaneContentTop;if(typeof o!=="number"||typeof s!=="number"||typeof i!=="number"||typeof c!=="number"||typeof a!=="number"||!Number.isFinite(o)||!Number.isFinite(s)||!Number.isFinite(i)||!Number.isFinite(c)||!Number.isFinite(a)||i<=0||c<=0){delete n.groupTitleRect;return}let l=s-c/2,m=Math.min(a,s+c/2),f=Math.min(Vr,Math.max(0,m-l)),g=l+f;if(g<=l){delete n.groupTitleRect;return}n.groupTitleRect={left:o-i/2,right:o+i/2,top:l,bottom:g}}e(fs,"assignTopLaneTitleRect");function ds(n){let o=n.direction,s=n.nodes??=[];for(let a of n.nodes??[])if(a.isGroup&&!a.parentId){if(a.shape="swimlane",o)a.direction=o}let i=s.filter((a)=>!a.isGroup&&!a.parentId);if(i.length===0)return;let c=s.find((a)=>a.id===kn);if(!c)c={id:kn,label:"",isGroup:!0,shape:"swimlane",padding:20,...o?{direction:o}:{}},s.push(c);else if(c.isGroup){if(c.shape="swimlane",o)c.direction=o}for(let a of i)a.parentId=kn}e(ds,"prepareLayoutForSwimlanes");function us(n){let o=new Map;for(let f of n.nodes??[])o.set(f.id,f);let s=[];for(let f of n.edges??[]){let g=typeof f.start==="string"?f.start:void 0,y=typeof f.end==="string"?f.end:void 0;if(!g||!y)continue;if(f.labelNodeId)continue;s.push({id:f.id,src:g,dst:y,ref:f})}let i=n.nodes??[],c=i.filter((f)=>f.isGroup),a=i.filter((f)=>!f.isGroup);return{nodes:[...[...c].reverse(),...a].map((f)=>f.id),edges:s,layout:n,nodeById:o}}e(us,"toGraphView");function hs(n,o,s,i){let{layout:c}=n,a=n.nodeById,l=i?.layerGap??100,m=i?.nodeGap??40,f=0;for(let E of o.layers){let b=0;for(let x of E){let d=a.get(x);if(!d){b++;continue}d.layer=f,d.order=b;let M=s.x[x]??b*m,A=s.y[x]??f*l;d.x=M,d.y=A,b++}f++}let g=c.nodes??[],y=new Map,I=[];for(let E of g){if(!E?.isGroup)continue;if(!E.parentId)I.push(E);let b=g.filter((v)=>v.parentId===E.id),x=1/0,d=-1/0,M=1/0,A=-1/0;for(let v of b){let N=v.x??s.x[v.id],k=v.y??s.y[v.id],w=v.width??0,C=v.height??0;if(N!=null&&k!=null)x=Math.min(x,N-w/2),d=Math.max(d,N+w/2),M=Math.min(M,k-C/2),A=Math.max(A,k+C/2)}if(x===1/0||M===1/0)E.x=E.x??0,E.y=E.y??0,E.width=E.width??0,E.height=E.height??0;else{let v=E.padding??20,N=E.parentId?v:2*Gn(E),k=v,w=Math.max(0,d-x)+N,C=Math.max(0,A-M)+k,B=(x+d)/2,_=(M+A)/2;E.x=B,E.y=_,E.width=w,E.height=C,y.set(E.id,{minX:x,maxX:d,minY:M,maxY:A})}}if(I.length>0&&y.size>0){let E=1/0,b=-1/0,x=0;for(let d of I){let M=d.padding??20;if(M>x)x=M;let A=y.get(d.id);if(!A)continue;E=Math.min(E,A.minY),b=Math.max(b,A.maxY)}if(E!==1/0&&b!==-1/0){let d=Math.max(0,b-E),M=36,A=Math.max(x,36),v=d+2*A,N=(E+b)/2;for(let Y of I)Y.y=N,Y.height=v,Y.swimlaneContentTop=E;let k=[...I].sort((Y,F)=>{let V=Y.x??0,z=F.x??0;return V-z}),w=[],C=[],B=[];for(let Y of k){let F=y.get(Y.id);if(!F)continue;let V=Math.max(0,F.maxX-F.minX)+2*Gn(Y),z=(F.minX+F.maxX)/2;w.push(Y.id),C.push(z),B.push(V)}let _=w.length;if(_>0){let Y=new Map;if(_===1)Y.set(w[0],B[0]);else{let F=[];for(let J=0;J<_-1;J++)F.push(C[J+1]-C[J]);let V=Array(_);V[0]=0;for(let J=0;J<_-1;J++)V[J+1]=2*F[J]-V[J];let z=0,D=Number.POSITIVE_INFINITY;for(let J=0;J<_;J++){let st=B[J];if(J%2===0)z=Math.max(z,st-V[J]);else D=Math.min(D,V[J]-st)}let W=z;if(z<=D)W=(z+D)/2;else W=z;for(let J=0;J<_;J++){let st=V[J]+(J%2===0?W:-W),xt=Math.max(B[J],st);Y.set(w[J],xt)}}for(let F of I){let V=Y.get(F.id);if(V!=null)F.width=V;fs(F)}}}}}e(hs,"writeBackToLayoutData");var jr="[EdgeLabelNodes]";function gs(n){let o=[],s=[],i=new Map;for(let l of n.nodes)i.set(l.id,l);for(let l of n.edges){if(!l.label||l.label.length===0)continue;if(l.isLayoutOnly)continue;if(l.labelNodeId)continue;let m=l.start?i.get(l.start):void 0,f=l.end?i.get(l.end):void 0;if(!m||!f){t.warn(jr,`Edge ${l.id} has missing source or target node`);continue}let g=`edge-label-${l.start}-${l.end}-${l.id}`,I=m.parentId!==f.parentId?f.parentId:m.parentId,E={id:g,label:l.label,edgeStart:l.start??"",edgeEnd:l.end??"",shape:"labelRect",width:0,height:0,isEdgeLabel:!0,isDummy:!0,parentId:I,isGroup:!1,labelStyle:Array.isArray(l.labelStyle)?l.labelStyle[0]:l.labelStyle??"",...m.dir?{dir:m.dir}:{}};o.push(E),l.labelNodeId=g,l.label=void 0,l.text=void 0;let b={id:`${l.id}-to-label`,start:l.start,end:g,type:"normal",isLayoutOnly:!0},x={id:`${l.id}-from-label`,start:g,end:l.end,type:"normal",isLayoutOnly:!0};s.push(b,x)}let c=[...n.nodes,...o],a=[...n.edges,...s];return{...n,nodes:c,edges:a}}e(gs,"createEdgeLabelNodes");var Jt=0.001;function Mo(n){let o=n.x??0,s=n.y??0,i=n.width??0,c=n.height??0;return i>0&&c>0?{cx:o,cy:s,rect:ze(o,s,i,c)}:void 0}e(Mo,"measuredNodeRect");function Io(n){if(n.isGroup)return;let o=Mo(n);if(!o)return;return{id:String(n.id??""),cx:o.cx,cy:o.cy,rect:o.rect}}e(Io,"nodeBoundsInfoFor");function ye(n,o,s=Jt){return Math.abs(n.x-o.x)<s&&Math.abs(n.y-o.y)<s}e(ye,"samePoint");function St(n,o,s=Jt){return Math.abs(n.x-o.x)<s}e(St,"sameX");function vt(n,o,s=Jt){return Math.abs(n.y-o.y)<s}e(vt,"sameY");function Dt(n,o,s=Jt){return vt(n,o,s)&&Math.abs(n.x-o.x)>s}e(Dt,"isHorizontalSegment");function Yt(n,o,s=Jt){return St(n,o,s)&&Math.abs(n.y-o.y)>s}e(Yt,"isVerticalSegment");function se(n,o,s,i){return Math.max(0,Math.min(Math.max(n,o),Math.max(s,i))-Math.max(Math.min(n,o),Math.min(s,i)))}e(se,"overlapLength");function Ie(n,o,s=Jt){if(n.horizontal&&o.horizontal&&vt(n.a,o.a,s))return se(n.a.x,n.b.x,o.a.x,o.b.x);if(n.vertical&&o.vertical&&St(n.a,o.a,s))return se(n.a.y,n.b.y,o.a.y,o.b.y);return 0}e(Ie,"sameAxisSegmentOverlapLength");function Ve(n,o=Jt){let s=[];for(let i=0;i<n.length-1;i++){let c=n[i],a=n[i+1],l=Dt(c,a,o),m=Yt(c,a,o);if(l||m)s.push({index:i,a:c,b:a,horizontal:l,vertical:m})}return s}e(Ve,"orthogonalSegmentsForPoints");function he(n,o=Jt){let s=Ve(n,o),i=0;for(let c=1;c<s.length;c++)if(s[c-1].horizontal!==s[c].horizontal)i++;return i}e(he,"countOrthogonalBends");function Et(n,o=Jt){let s=[];for(let i of n){let c=s.length>0?s[s.length-1]:void 0;if(!c||!ye(c,i,o))s.push({x:i.x,y:i.y})}return s}e(Et,"dedupeConsecutivePoints");function So(n,o=Jt){if(!n||n.length!==4)return;let[s,i,c,a]=n;if(Dt(s,i,o)&&Yt(i,c,o)&&Dt(c,a,o))return{kind:"HVH",p0:s,p1:i,p2:c,p3:a};return Yt(s,i,o)&&Dt(i,c,o)&&Yt(c,a,o)?{kind:"VHV",p0:s,p1:i,p2:c,p3:a}:void 0}e(So,"classifyThreeSegmentRoute");function Cn(n,o,s,i=0){let c=Math.min(n.x,o.x),a=Math.max(n.x,o.x),l=Math.min(n.y,o.y),m=Math.max(n.y,o.y);return a>s.left-i&&c<s.right+i&&m>s.top-i&&l<s.bottom+i}e(Cn,"segmentBoundsOverlapRect");function Co(n,o,s=0){return n.x>o.left+s&&n.x<o.right-s&&n.y>o.top+s&&n.y<o.bottom-s}e(Co,"pointInsideRect");function ps(n,o){return n.left<=o.left&&n.right>=o.right&&n.top<=o.top&&n.bottom>=o.bottom}e(ps,"rectContainsRect");function gn(n,o){return n.left<o.right&&n.right>o.left&&n.top<o.bottom&&n.bottom>o.top}e(gn,"rectsOverlap");function $n(n,o){return{left:n.left-o,right:n.right+o,top:n.top-o,bottom:n.bottom+o}}e($n,"inflateRect");function ze(n,o,s,i){return{left:n-s/2,right:n+s/2,top:o-i/2,bottom:o+i/2}}e(ze,"rectFromCenterSize");function fe(n){return Mo(n)?.rect}e(fe,"rectOfNodeBounds");function ke(n,o){switch(o){case"top":return{x:n.cx,y:n.rect.top};case"bottom":return{x:n.cx,y:n.rect.bottom};case"left":return{x:n.rect.left,y:n.cy};case"right":return{x:n.rect.right,y:n.cy}}}e(ke,"portForRectSide");function vo(n,o,s,i,c,a=Jt){let l=o==="left"||o==="right",m=i==="left"||i==="right";if(l&&m){if(o==="right"&&i==="left"&&n.x<s.x||o==="left"&&i==="right"&&n.x>s.x){if(vt(n,s,a))return[n,s];let I=(n.x+s.x)/2;return[n,{x:I,y:n.y},{x:I,y:s.y},s]}if(o===i){if(vt(n,s,a))return;let I=o==="left"?Math.min(n.x,s.x)-c:Math.max(n.x,s.x)+c;return[n,{x:I,y:n.y},{x:I,y:s.y},s]}return}if(!l&&!m){if(o===i){if(St(n,s,a))return;let E=o==="top"?Math.min(n.y,s.y)-c:Math.max(n.y,s.y)+c;return[n,{x:n.x,y:E},{x:s.x,y:E},s]}if(!(o==="bottom"&&i==="top"&&n.y<s.y||o==="top"&&i==="bottom"&&n.y>s.y))return;if(St(n,s,a))return[n,s];let I=(n.y+s.y)/2;return[n,{x:n.x,y:I},{x:s.x,y:I},s]}if(l&&!m){let y=o==="right"&&s.x>n.x||o==="left"&&s.x<n.x,I=i==="top"&&n.y<s.y||i==="bottom"&&n.y>s.y;return y&&I?[n,{x:s.x,y:n.y},s]:void 0}let f=o==="bottom"&&s.y>n.y||o==="top"&&s.y<n.y,g=i==="left"&&n.x<s.x||i==="right"&&n.x>s.x;return f&&g?[n,{x:n.x,y:s.y},s]:void 0}e(vo,"buildOrthogonalPortPath");function Lo(n,o,s,i){return o==="left"||o==="right"?[n,{x:i,y:n.y},{x:i,y:s.y},s]:[n,{x:n.x,y:i},{x:s.x,y:i},s]}e(Lo,"buildSameSideTrackPath");function vn(n){let o=new Map,s=[];for(let i of n){if(i.isEdgeLabel)continue;let c=Io(i);if(!c)continue;o.set(c.id,c),s.push({id:c.id,rect:c.rect})}return{nodeInfoById:o,realNodeRects:s}}e(vn,"collectRealNodeBounds");function Ae(n){let o=[],s=[];for(let i of n){let c=Io(i);if(!c)continue;let a={id:c.id,rect:c.rect};if(i.isEdgeLabel)s.push(a);else o.push(a)}return{realNodeRects:o,labelNodeRects:s}}e(Ae,"collectNodeRectEntries");function ms(n,{includeEdgeLabels:o=!0}={}){let s=[];for(let i of n){if(i.isGroup||!o&&i.isEdgeLabel)continue;let c=i.x??0,a=i.y??0,l=i.width??0,m=i.height??0;s.push({nodeId:i.id,...ze(c,a,l,m)})}return s}e(ms,"collectLayoutNodeRects");function Eo(n,o,s=Jt){let{start:i,end:c}=n;if(!i||!c)return;let a=o.get(i),l=o.get(c);if(!a||!l)return;return{srcId:i,dstId:c,srcInfo:a,dstInfo:l,collinearX:Math.abs(a.cx-l.cx)<s,collinearY:Math.abs(a.cy-l.cy)<s}}e(Eo,"getNodePairGeometry");function Gt(n,o,s,i=[],c=0){for(let a of s){if(i.includes(a.id))continue;if(Cn(n,o,a.rect,-c))return!0}return!1}e(Gt,"segmentHitsAnyRect");function To(n,o,s,i,c=Jt,a=0.000001){let l=vt(n,o,c),m=St(n,o,c),f=vt(s,i,c),g=St(s,i,c);if(l&&f||m&&g)return!1;if(!(l||m)||!(f||g))return!1;let y=l?{a:n,b:o}:{a:s,b:i},I=m?{a:n,b:o}:{a:s,b:i},E=y.a.y,b=Math.min(y.a.x,y.b.x),x=Math.max(y.a.x,y.b.x),d=I.a.x,M=Math.min(I.a.y,I.b.y),A=Math.max(I.a.y,I.b.y);if(d<b||d>x||E<M||E>A)return!1;let v=Math.abs(d-y.a.x)<a&&Math.abs(E-y.a.y)<a||Math.abs(d-y.b.x)<a&&Math.abs(E-y.b.y)<a,N=Math.abs(d-I.a.x)<a&&Math.abs(E-I.a.y)<a||Math.abs(d-I.b.x)<a&&Math.abs(E-I.b.y)<a;return!(v&&N)}e(To,"orthogonalSegmentsCross");function ys(n,o,s,i,c=Jt){let a=vt(n,o,c),l=St(n,o,c),m=vt(s,i,c),f=St(s,i,c);if(l&&f&&St(n,s,c))return se(n.y,o.y,s.y,i.y)>c;if(a&&m&&vt(n,s,c))return se(n.x,o.x,s.x,i.x)>c;return!1}e(ys,"sameAxisSegmentsOverlap");function pn(n,o,s,i,{epsilon:c=Jt,skipDegenerateOther:a=!1}={}){for(let l of s){if(l===i||l.isLayoutOnly)continue;let m=l.points;if(!m||m.length<2)continue;for(let f=0;f<m.length-1;f++){let g=m[f],y=m[f+1];if(a&&ye(g,y,c))continue;if(To(n,o,g,y,c)||ys(n,o,g,y,c))return!0}}return!1}e(pn,"segmentConflictsWithAnyEdge");function Ce(n,o,s,i,c=Jt){let a=vt(n,o,c),l=St(n,o,c),m=vt(s,i,c),f=St(s,i,c);if(!(a&&f||l&&m))return!1;let g=a?{a:n,b:o}:{a:s,b:i},y=a?{a:s,b:i}:{a:n,b:o},I=g.a.y,E=Math.min(g.a.x,g.b.x),b=Math.max(g.a.x,g.b.x),x=y.a.x,d=Math.min(y.a.y,y.b.y),M=Math.max(y.a.y,y.b.y);return x>E+c&&x<b-c&&I>d+c&&I<M-c}e(Ce,"orthogonalSegmentsStrictlyCross");function zn(n,o,s){let i=Math.min(o,s),c=Math.max(o,s);return n>i+Jt&&n<c-Jt}e(zn,"strictlyBetween");function xs(n,o,s){if(St(n,o)&&St(o,s))return zn(o.y,n.y,s.y);if(vt(n,o)&&vt(o,s))return zn(o.x,n.x,s.x);return!1}e(xs,"isCollinearIntermediate");function bs(n){let o=!1,s=[];for(let i=0;i<n.length;i++){let c=s[s.length-1],a=n[i],l=i+1<n.length?n[i+1]:void 0;if(c&&l){if(ye(c,l)){i++,o=!0;continue}if(xs(c,a,l)){o=!0;continue}}s.push(a)}return{points:s,changed:o}}e(bs,"simplifyPolylineOnce");function mn(n){let o=[n[0]];for(let i=1;i<n.length;i++){let c=o[o.length-1],a=n[i];if(!St(c,a)&&!vt(c,a)){let l=o.length>=2?o[o.length-2]:void 0,f=(l?St(l,c):!1)?{x:c.x,y:a.y}:{x:a.x,y:c.y};o.push(f)}o.push(a)}let s=[];for(let i of o){let c=s[s.length-1];if(!c||!ye(c,i))s.push(i)}return s}e(mn,"orthogonalizePolyline");function Se(n){if(n.length<3)return n;let o=[...n];for(let s=0;s<32;s++){let i=bs(o);if(o=i.points,!i.changed)break}return o}e(Se,"simplifyPolyline");var ut=0.001,Ur=0.5,Uo=4;function wo(n,o,s){let i=n;if(i.isLayoutOnly||!i.points||i.points.length<s)return;let c=i.start?o.get(i.start):void 0,a=i.end?o.get(i.end):void 0;return{edge:i,points:i.points,srcRect:c?fe(c):void 0,dstRect:a?fe(a):void 0}}e(wo,"endpointContextFor");function Ms(n,o,s){if(vt(n,o,ut))return{x:n.x<s.left?s.left:s.right,y:n.y};if(St(n,o,ut)){let i=n.y<s.top?s.top:s.bottom;return{x:n.x,y:i}}return{x:Math.min(s.right,Math.max(s.left,n.x)),y:Math.min(s.bottom,Math.max(s.top,n.y))}}e(Ms,"segmentEnterPoint");function Vn(n,o,s){let i=s?1:-1,c=s?0:n.length-1;while(c>=0&&c<n.length&&Co(n[c],o,Ur))c+=i;if(c<0||c>=n.length)return n;let a=c-i;if(a<0||a>=n.length)return n;let l=Ms(n[c],n[a],o);return s?[l,...n.slice(c)]:[...n.slice(0,c+1),l]}e(Vn,"clipEndpoint");function Is(n,o){for(let s of n){let i=wo(s,o,2);if(!i)continue;let c=[...i.points];if(i.srcRect)c=Vn(c,i.srcRect,!0);if(i.dstRect)c=Vn(c,i.dstRect,!1);c=Se(mn(c)),c=Ro(c,i.srcRect,i.dstRect),i.edge.points=Se(mn(c))}}e(Is,"clipEdgeEndpointsToNodeBoundaries");function jn(n,o,s,i=!1){if(vt(n,o,ut)){if(o.y<s.top-ut||o.y>s.bottom+ut)return o;if(i){if(n.x<s.left-ut)return{x:s.left,y:n.y};if(n.x>s.right+ut)return{x:s.right,y:n.y}}return{x:Math.abs(o.x-s.left)<=Math.abs(o.x-s.right)?s.left:s.right,y:n.y}}if(St(n,o,ut)){if(o.x<s.left-ut||o.x>s.right+ut)return o;if(i){if(n.y<s.top-ut)return{x:n.x,y:s.top};if(n.y>s.bottom+ut)return{x:n.x,y:s.bottom}}let c=Math.abs(o.y-s.top)<=Math.abs(o.y-s.bottom);return{x:n.x,y:c?s.top:s.bottom}}return o}e(jn,"snapEndpointToBoundary");function yn(n,o,s){let i=n[o];for(let c=o+s;c>=0&&c<n.length;c+=s){let a=n[c];if(!ye(a,i,ut))return a}return n[o+s]}e(yn,"firstDistinctAdjacent");function xn(n,o){let s=n+Uo,i=o-Uo;return s<=i?{lo:s,hi:i}:{lo:(n+o)/2,hi:(n+o)/2}}e(xn,"cornerClearanceRange");function Un(n,o,s){let{lo:i,hi:c}=xn(o,s);return Math.min(c,Math.max(i,n))}e(Un,"clampToCornerClearance");function Ss(n){let o=Math.max(...n.map((i)=>i.lo)),s=Math.min(...n.map((i)=>i.hi));if(o>s)return;return{lo:o,hi:s}}e(Ss,"intersectRanges");function Wn(n,o){return o==="left"||o==="right"?xn(n.top,n.bottom):xn(n.left,n.right)}e(Wn,"clearanceRangeForSide");function bn(n,o,s){let i=n.y>=s.top-ut&&n.y<=s.bottom+ut,c=n.x>=s.left-ut&&n.x<=s.right+ut;if(vt(n,o,ut)&&i){if(Math.abs(n.x-s.left)<ut)return"left";if(Math.abs(n.x-s.right)<ut)return"right"}if(St(n,o,ut)&&c){if(Math.abs(n.y-s.top)<ut)return"top";if(Math.abs(n.y-s.bottom)<ut)return"bottom"}return}e(bn,"terminalSideForSegment");function Ue(n){return n==="left"||n==="right"}e(Ue,"isHorizontalSide");function Cs(n,o,s,i,c){let a=[],l=s?bn(n,o,s):void 0,m=i?bn(o,n,i):void 0;if(s&&l&&Ue(l)===c)a.push(Wn(s,l));if(i&&m&&Ue(m)===c)a.push(Wn(i,m));return a.length>0?Ss(a):void 0}e(Cs,"straightClearanceRange");function Kn(n,o,s,i,c){let a=Cs(n,o,s,i,c);if(!a)return;let l=c?n.y:n.x,m=Math.min(a.hi,Math.max(a.lo,l));if(Math.abs(m-l)<ut)return;return c?[{x:n.x,y:m},{x:o.x,y:m}]:[{x:m,y:n.y},{x:m,y:o.y}]}e(Kn,"clearStraightEndpointCornerAxis");function Ro(n,o,s){if(n.length!==2)return n;let[i,c]=n;if(vt(i,c,ut))return Kn(i,c,o,s,!0)??n;if(St(i,c,ut))return Kn(i,c,o,s,!1)??n;return n}e(Ro,"clearStraightEndpointCornerConnections");function vs(n,o,s){return Ue(s)?{x:n.x,y:Un(n.y,o.top,o.bottom)}:{x:Un(n.x,o.left,o.right),y:n.y}}e(vs,"cornerClearedEndpoint");function Ls(n,o,s,i,c,a){let l=n.map((m)=>({...m}));for(let m=o;m>=0&&m<n.length;m+=s){let f=n[m];if(a&&!vt(f,i,ut))break;if(!a&&!St(f,i,ut))break;if(a)l[m].y=c.y;else l[m].x=c.x}return l}e(Ls,"moveCollinearEndpointRun");function qn(n,o,s){if(n.length<2)return n;let i=s?0:n.length-1,c=s?1:-1,a=n[i],l=yn(n,i,c);if(!l)return n;let m=bn(a,l,o);if(!m)return n;let f=Ue(m),g=vs(a,o,m);if(ye(a,g,ut))return n;return Ls(n,i,c,a,g,f)}e(qn,"clearEndpointCornerConnection");function Jn(n,o,s){let i=Math.min(n.x,o.x)>=s.left-ut&&Math.max(n.x,o.x)<=s.right+ut,c=Math.min(n.y,o.y)>=s.top-ut&&Math.max(n.y,o.y)<=s.bottom+ut;if(Math.abs(n.y-s.top)<ut&&Math.abs(o.y-s.top)<ut&&i)return"top";if(Math.abs(n.y-s.bottom)<ut&&Math.abs(o.y-s.bottom)<ut&&i)return"bottom";if(Math.abs(n.x-s.left)<ut&&Math.abs(o.x-s.left)<ut&&c)return"left";if(Math.abs(n.x-s.right)<ut&&Math.abs(o.x-s.right)<ut&&c)return"right";return}e(Jn,"borderSideForSegment");function Zn(n,o,s,i){switch(n){case"top":return St(o,s,ut)&&s.y<i.top-ut;case"bottom":return St(o,s,ut)&&s.y>i.bottom+ut;case"left":return vt(o,s,ut)&&s.x<i.left-ut;case"right":return vt(o,s,ut)&&s.x>i.right+ut}}e(Zn,"leavesOutward");function Qn(n,o,s){if(n.length<3)return n;if(s){let a=Jn(n[0],n[1],o);if(a&&Zn(a,n[1],n[2],o))return n.slice(1);return n}let i=n.length-1,c=Jn(n[i-1],n[i],o);if(c&&Zn(c,n[i-1],n[i-2],o))return n.slice(0,i);return n}e(Qn,"collapseOwnBorderStub");function Es(n,o,s){let i=n;if(o){let a=yn(i,0,1);if(a){let l=jn(a,i[0],o);if(l!==i[0])i=[l,...i.slice(1)]}i=Qn(i,o,!0)}if(s){let a=i.length-1,l=yn(i,a,-1);if(l){let m=jn(l,i[a],s,!0);if(m!==i[a])i=[...i.slice(0,a),m]}i=Qn(i,s,!1)}let c=Ro(i,o,s);if(c!==i||i.length===2)return c;if(o)i=qn(i,o,!0);if(s)i=qn(i,s,!1);return i}e(Es,"snapAndCollapseEndpoints");function to(n,o){for(let s of n){let i=wo(s,o,2);if(!i)continue;let c=Et(i.points,ut),a=Es(c,i.srcRect,i.dstRect);if(a.length<3){i.edge.points=a;continue}let l=[a[0],{...a[0]},...a.slice(1,-1),a[a.length-1],{...a[a.length-1]}];i.edge.points=l}}e(to,"prepareEdgeEndpointsForRenderer");function Ao(n){return new Map(n.map((o)=>[o.id,o]))}e(Ao,"buildNodeMap");function Ts(n,o){let s=n.parentId,i=null;while(s){let c=o.get(s);if(!c?.isGroup)break;i=c.id,s=c.parentId}return i}e(Ts,"resolveTopLevelGroupId");function eo(n,o){let s=0,i=n.parentId;while(i){let c=o.get(i);if(!c?.isGroup)break;s++,i=c.parentId}return s}e(eo,"groupDepth");function No(n){let o=1/0,s=-1/0,i=1/0,c=-1/0;for(let a of n){let{x:l,y:m}=a;if(typeof l!=="number"||typeof m!=="number")continue;let f=a.width??0,g=a.height??0;o=Math.min(o,l-f/2),s=Math.max(s,l+f/2),i=Math.min(i,m-g/2),c=Math.max(c,m+g/2)}if(o===1/0||i===1/0)return null;return{minX:o,maxX:s,minY:i,maxY:c}}e(No,"boundsForChildren");function ws(n,o){let s=n.padding??20;n.x=(o.minX+o.maxX)/2,n.y=(o.minY+o.maxY)/2,n.width=Math.max(0,o.maxX-o.minX)+s,n.height=Math.max(0,o.maxY-o.minY)+s}e(ws,"applyGroupBounds");function Rs(n){let o=Ao(n),s=n.filter((i)=>i.isGroup&&i.parentId).sort((i,c)=>eo(c,o)-eo(i,o));for(let i of s){let c=n.filter((l)=>l.parentId===i.id),a=No(c);if(a)ws(i,a)}}e(Rs,"recomputeNestedGroupBounds");function Mn(n,o){let s=n.nodes??[],i=n.edges??[],c=s.filter((f)=>!f.isGroup),a=1/0,l=-1/0;for(let f of c){let g=f[o];if(typeof g!=="number")continue;a=Math.min(a,g),l=Math.max(l,g)}if(!Number.isFinite(a)||!Number.isFinite(l))return!1;let m=e((f)=>a+l-f,"mirror");for(let f of s){let g=f[o];if(typeof g==="number")f[o]=m(g);let y=f.groupTitleRect;if(y)f.groupTitleRect=o==="x"?{...y,left:m(y.right),right:m(y.left)}:{...y,top:m(y.bottom),bottom:m(y.top)}}for(let f of i)for(let g of f.points??[])g[o]=m(g[o]);return!0}e(Mn,"mirrorAxis");function As(n){if(!(n.nodes??[]).some((s)=>!s.isGroup))return!0;return Mn(n,"y")}e(As,"applyBtDirectionTransform");function Ns(n,o="LR"){let s=n.nodes??[],i=n.edges??[],c=s.filter((D)=>!D.isGroup),a=1/0,l=1/0;for(let D of c){let W=D.x??0,J=D.y??0;if(W<a)a=W;if(J<l)l=J}if(!Number.isFinite(a)||!Number.isFinite(l))return!1;let m=36,f=0,g=0;for(let D of c)f+=D.width??0,g+=D.height??0;let y=f/c.length,I=g/c.length,E=I>0?Math.max(1,y/I):1;for(let D of c){let W=D.x??0,st=((D.y??0)-l)*E+m,xt=W-a;D.x=st,D.y=xt}for(let D of i){if(!D.points)continue;for(let W of D.points){let J=W.x,xt=(W.y-l)*E+m,Tt=J-a;W.x=xt,W.y=Tt}}Rs(s);let b=s.filter((D)=>D.isGroup&&!D.parentId);if(b.length===0){if(o==="RL")Mn(n,"x");return!0}let x=Ao(s),d=new Map;for(let D of s){if(D.isGroup)continue;let W=Ts(D,x);if(!W)continue;let J=d.get(W)??[];J.push(D),d.set(W,J)}let M=0;for(let D of b){let W=D.padding??0;if(W>M)M=W}let A=[],v=1/0,N=-1/0;for(let D of b){let W=d.get(D.id)??[],J=No(W);if(!J)continue;v=Math.min(v,J.minX),N=Math.max(N,J.maxX),A.push({lane:D,contentTop:J.minY,contentBottom:J.maxY,centerY:(J.minY+J.maxY)/2})}if(v===1/0||N===-1/0)return!0;let k=Math.max(0,N-v),w=Math.max(M,10),C=k+2*w,B=m+C,F=(v+N)/2-C/2-m,V=F+B/2,z=Math.max(M,m);A.sort((D,W)=>D.centerY-W.centerY);for(let D=0;D<A.length;D++){let W=A[D],J,st;if(D===0)J=W.contentTop-z;else J=(A[D-1].contentBottom+W.contentTop)/2;if(D===A.length-1)st=W.contentBottom+z;else{let $t=A[D+1];st=(W.contentBottom+$t.contentTop)/2}let xt=Math.max(0,st-J),Tt=(J+st)/2;W.lane.x=V,W.lane.y=Tt,W.lane.width=B,W.lane.height=xt,W.lane.swimlaneContentTop=W.contentTop,W.lane.groupTitleRect={left:F,right:F+m,top:J,bottom:st}}if(o==="RL")Mn(n,"x");return!0}e(Ns,"applyLrDirectionTransform");var xe=0.000001,Wr=8,cn=Wr,Kr=[0,cn,-cn,2*cn,-2*cn];function Os(n,o){let{nodeInfoById:s,realNodeRects:i}=vn(o);for(let c of n){if(c.isLayoutOnly)continue;let a=c.points;if(!a||a.length<4)continue;let l=So(Et(a,xe),xe);if(!l)continue;let{p3:m}=l,f=l.kind==="HVH",g=Eo(c,s,xe);if(!g)continue;let{srcId:y,dstId:I,srcInfo:E,dstInfo:b,collinearX:x,collinearY:d}=g;if(x||d)continue;let M,A=E.rect;for(let v of Kr){let N,k,w;if(f){let V=b.cy>E.cy?A.bottom:A.top,z=E.cx+v;if(z<=A.left+xe||z>=A.right-xe)continue;N={x:z,y:V},k={x:z,y:m.y},w={x:m.x,y:m.y}}else{let V=b.cx>E.cx?A.right:A.left,z=E.cy+v;if(z<=A.top+xe||z>=A.bottom-xe)continue;N={x:V,y:z},k={x:m.x,y:z},w={x:m.x,y:m.y}}let C=ye(N,k,xe),B=ye(k,w,xe);if(C&&B)continue;if(!C&&Gt(N,k,i,[y],1))continue;if(!B&&Gt(k,w,i,[I],1))continue;let _=!C&&pn(N,k,n,c,{epsilon:xe,skipDegenerateOther:!0}),Y=!B&&pn(k,w,n,c,{epsilon:xe,skipDegenerateOther:!0});if(_||Y)continue;if(C)M=[k,w];else if(B)M=[N,k];else M=[N,k,w];break}if(M)c.points=M}}e(Os,"portSwapToLShape");function Bs(n,o){let{realNodeRects:a,labelNodeRects:l}=Ae(o.values());for(let m of n){if(m.isLayoutOnly)continue;let f=m.points;if(!f||f.length<4)continue;let g=Et(f,0.001);if(g.length<4)continue;let y=g.length-1,I=g[y],E=g[y-1],b=g[y-2],x=I.x-E.x,d=I.y-E.y,M=Math.hypot(x,d);if(M>=10||M<0.001)continue;let A=E.x-b.x,v=E.y-b.y;if(Math.hypot(A,v)<0.001)continue;let k=Dt(E,I,0.001),w=Yt(E,I,0.001),C=Dt(b,E,0.001),B=Yt(b,E,0.001);if(!(k&&B||w&&C))continue;let{end:_,start:Y}=m,F=_?o.get(_):void 0;if(!F)continue;let V=F.x??0,z=F.y??0,D=fe(F);if(!D)continue;let W,J;if(B){let ot=v<0;W={x:V,y:b.y},J={x:V,y:ot?D.bottom:D.top}}else{let ot=A>0;W={x:b.x,y:z},J={x:ot?D.right:D.left,y:z}}if(Gt(W,J,a,_?[_]:[],-2))continue;if(Gt(W,J,l,[],-2))continue;if(Y){let ot=o.get(Y),dt=ot?fe(ot):void 0;if(dt&&Co(W,dt,2))continue}let st=e((ot,dt)=>`${ot.x.toFixed(3)},${ot.y.toFixed(3)}|${dt.x.toFixed(3)},${dt.y.toFixed(3)}`,"ownSegmentKey"),xt=new Set;for(let ot=0;ot<g.length-1;ot++)xt.add(st(g[ot],g[ot+1]));let Tt=e((ot,dt)=>{for(let Mt of n){if(Mt===m)continue;if(Mt.isLayoutOnly)continue;let Lt=Mt.points;if(!Lt||Lt.length<2)continue;for(let Rt=0;Rt<Lt.length-1;Rt++){let kt=Lt[Rt],re=Lt[Rt+1];if(xt.has(st(kt,re)))continue;if(Ce(ot,dt,kt,re,0.001))return!0}}return!1},"segmentCrossesOtherEdge");if(Tt(W,J))continue;if(y-3>=0){let ot=g[y-3],dt=[Y,_].filter((Mt)=>Boolean(Mt));if(Gt(ot,W,a,dt,-2))continue;if(Tt(ot,W))continue}let Ut=[...g.slice(0,y-2),W,J];m.points=Ut;let lt=m.labelNodeId;if(lt){let ot=o.get(lt);if(ot){let dt=ot.width??0,Mt=ot.height??0;if(dt>0&&Mt>0){let Lt,Rt,kt=-1;for(let re=0;re<Ut.length-1;re++){let ie=Ut[re],ce=Ut[re+1],ge=Math.hypot(ce.x-ie.x,ce.y-ie.y),_e=vt(ie,ce,0.001),Le=St(ie,ce,0.001);if(!(_e&&ge>=dt+2||Le&&ge>=Mt+2))continue;if(ge>kt)kt=ge,Lt=(ie.x+ce.x)/2,Rt=(ie.y+ce.y)/2}if(Lt!==void 0&&Rt!==void 0)ot.x=Lt,ot.y=Rt}}}}}e(Bs,"collapseShortTerminalStub");var at=0.001,qt=8,mt=Ve,_n=e((n,o)=>St(n,o,at)||vt(n,o,at),"orthogonallyAligned");function Ps(n,o){let c=e((b,x)=>{let d=b.x??0,M=b.y??0,A=x.x-d,v=x.y-M,N=(b.width??0)/2,k=(b.height??0)/2;if(Math.abs(v)*N>Math.abs(A)*k){if(v<0)k=-k;return{x:d+(v===0?0:k*A/v),y:M+k}}if(A<0)N=-N;return{x:d+N,y:M+(A===0?0:N*v/A)}},"rectIntersect"),a=e((b,x)=>{let d=Et(b.points??[]);if(d.length<2)return;let M=x?b.start:b.end,A=M?o.get(M):void 0,v=A?fe(A):void 0;if(!A||!M||!v)return;let N=x?d[0]:d[d.length-1],k=x?d[1]:d[d.length-2],w=c(A,N),C=N;if(_n(k,w))C=k;if(St(w,C,at))return{edge:b,edgeId:String(b.id??""),nodeId:M,atStart:x,orientation:"V",coord:w.x,min:Math.min(w.y,C.y),max:Math.max(w.y,C.y),boundary:w,railEnd:C,rect:v};if(vt(w,C,at))return{edge:b,edgeId:String(b.id??""),nodeId:M,atStart:x,orientation:"H",coord:w.y,min:Math.min(w.x,C.x),max:Math.max(w.x,C.x),boundary:w,railEnd:C,rect:v};return},"terminalLaneFor"),l=e((b,x)=>Math.max(0,Math.min(b.max,x.max)-Math.max(b.min,x.min)),"projectedOverlapLength"),m=e((b,x)=>{if(b.nodeId!==x.nodeId||b.orientation!==x.orientation)return!1;if(b.orientation==="H")return(Math.abs(b.boundary.x-b.rect.left)<1||Math.abs(b.boundary.x-b.rect.right)<1)&&St(b.boundary,x.boundary,1);return(Math.abs(b.boundary.y-b.rect.top)<1||Math.abs(b.boundary.y-b.rect.bottom)<1)&&vt(b.boundary,x.boundary,1)},"sameTerminalFace"),f=e((b,x)=>{if(b.nodeId!==x.nodeId||b.orientation!==x.orientation)return!1;return l(b,x)>=qt&&Math.abs(b.coord-x.coord)<0.5},"exactTerminalLaneConflict"),g=e((b,x)=>{if(b.nodeId!==x.nodeId||b.orientation!==x.orientation||b.orientation!=="H"||b.atStart===x.atStart)return!1;let d=l(b,x);if(d<qt)return!1;let M=b.rect.bottom-b.rect.top;if(d<M||d>2*M)return!1;return m(b,x)&&Math.abs(b.coord-x.coord)<16},"nearTerminalLaneConflict"),y=e((b,x)=>{let d=Et(b.edge.points??[]);if(d.length<2)return;let M=b.orientation==="V"?{x:b.boundary.x+x,y:b.boundary.y}:{x:b.boundary.x,y:b.boundary.y+x},A=b.orientation==="V"?{x:b.railEnd.x+x,y:b.railEnd.y}:{x:b.railEnd.x,y:b.railEnd.y+x};if(!e(()=>{if(Math.abs(b.boundary.y-b.rect.top)<1||Math.abs(b.boundary.y-b.rect.bottom)<1)return vt(M,b.boundary,at)&&M.x>=b.rect.left+1&&M.x<=b.rect.right-1;if(Math.abs(b.boundary.x-b.rect.left)<1||Math.abs(b.boundary.x-b.rect.right)<1)return St(M,b.boundary,at)&&M.y>=b.rect.top+1&&M.y<=b.rect.bottom-1;return!1},"boundaryStaysOnSameFace")())return;if(b.atStart){let C=d.length>1&&ye(d[1],b.railEnd,at),B=d.slice(C?2:1),_=B[0];if(_&&!_n(_,A))return;return[M,A,...B]}let N=d.length>1&&ye(d[d.length-2],b.railEnd,at),k=d.slice(0,N?-2:-1),w=k[k.length-1];if(w&&!_n(w,A))return;return[...k,A,M]},"shiftedCandidate"),I=e((b)=>{let x=b.edge,d=Et(x.points??[]);if(d.length!==2)return!1;let{start:M,end:A}=x,v=M?o.get(M):void 0,N=A?o.get(A):void 0;if(!v||!N)return!1;let k=v.x??0,w=v.y??0,C=N.x??0,B=N.y??0,[_,Y]=d;return vt(_,Y,at)&&Math.abs(w-B)<1&&Math.abs(k-C)>1||St(_,Y,at)&&Math.abs(k-C)<1&&Math.abs(w-B)>1},"laneIsStraightCollinearConnector"),E=[-7,7,-14,14,-21,21];for(let b=0;b<8;b++){let x=n.filter((M)=>!M.isLayoutOnly).flatMap((M)=>[a(M,!0),a(M,!1)]).filter((M)=>Boolean(M)),d=!1;for(let M=0;M<x.length&&!d;M++)for(let A=M+1;A<x.length&&!d;A++){let v=x[M],N=x[A];if(v.edge===N.edge||!(f(v,N)||g(v,N)))continue;let k=!f(v,N),w=[v,N].sort((C,B)=>{let _=I(C),Y=I(B);if(_!==Y)return Number(_)-Number(Y);return Number(!B.atStart)-Number(!C.atStart)});for(let C of w){for(let B of E){let _=y(C,B);if(!_)continue;let Y=a({...C.edge,points:_},C.atStart);if(!Y||x.some((F)=>F.edge!==C.edge&&(f(Y,F)||k&&g(Y,F))))continue;C.edge.points=_,d=!0;break}if(d)break}}if(!d)return}}e(Ps,"separateSharedRenderedTerminalLanes");function Fs(n,o){let{realNodeRects:c,labelNodeRects:a}=Ae(o.values()),l=e((f,g)=>{let{start:y,end:I}=f,E=mt(g);if(E.length!==g.length-1)return!1;let b=[y,I].filter((x)=>Boolean(x));for(let x of E){if(Gt(x.a,x.b,c,b,-2))return!1;if(Gt(x.a,x.b,a,[],-2))return!1}for(let x of n){if(x===f||x.isLayoutOnly)continue;let d=x.points;if(!d||d.length<2)continue;for(let M of E)for(let A of mt(Et(d))){if(Ie(M,A,0.5)>=qt)return!1;if(Ce(M.a,M.b,A.a,A.b,at))return!1}}return!0},"candidateIsSafe"),m=e((f,g)=>{if(g+4>=f.length)return;let y=f[g],I=f[g+1],E=f[g+2],b=f[g+3],x=f[g+4],d=Dt(y,I)&&Yt(I,E)&&Dt(E,b)&&Yt(b,x)&&St(y,b,at)&&St(y,x,at)&&St(I,E,at)&&(I.x-y.x)*(b.x-E.x)<0,M=Yt(y,I)&&Dt(I,E)&&Yt(E,b)&&Dt(b,x)&&vt(y,b,at)&&vt(y,x,at)&&vt(I,E,at)&&(I.y-y.y)*(b.y-E.y)<0;if(d||M)return Et([...f.slice(0,g+1),x,...f.slice(g+5)]);if(g+5>=f.length)return;let A=f[g+5],v=Yt(y,I)&&Dt(I,E)&&Yt(E,b)&&Dt(b,x)&&Yt(x,A)&&St(y,x,at)&&St(y,A,at)&&St(E,b,at)&&(E.x-I.x)*(x.x-b.x)<0,N=Dt(y,I)&&Yt(I,E)&&Dt(E,b)&&Yt(b,x)&&Dt(x,A)&&vt(y,x,at)&&vt(y,A,at)&&vt(E,b,at)&&(E.y-I.y)*(x.y-b.y)<0;if(!v&&!N)return;return Et([...f.slice(0,g+1),A,...f.slice(g+6)])},"withoutDogleg");for(let f=0;f<8;f++){let g=!1;for(let y of n){if(y.isLayoutOnly)continue;let I=Et(y.points??[]);for(let E=0;E<=I.length-5;E++){let b=m(I,E);if(!b||!l(y,b))continue;y.points=b,g=!0;break}if(g)break}if(!g)return}}e(Fs,"collapseRedundantRectangularDoglegs");function no(n,o){let{realNodeRects:a,labelNodeRects:l}=Ae(o.values()),m=n.filter((x)=>!x.isLayoutOnly),f=e((x,d,M)=>Et(x===d?M??[]:x.points??[]),"pointsFor"),g=e((x,d)=>{let M=0;for(let A=0;A<m.length;A++){let v=mt(f(m[A],x,d));for(let N=A+1;N<m.length;N++){let k=mt(f(m[N],x,d));for(let w of v)for(let C of k)if(Ce(w.a,w.b,C.a,C.b,at))M++}}return M},"strictCrossingCount"),y=e((x)=>{let d=mt(x);if(d.length!==3)return;let M=d[1];if(d[0].horizontal===M.horizontal||d[2].horizontal===M.horizontal)return;return{index:M.index,horizontal:M.horizontal,vertical:M.vertical,segment:M}},"middleRail"),I=e((x,d)=>{let M=[x.start,x.end].filter((A)=>Boolean(A));return a.filter((A)=>{if(M.includes(A.id))return!1;let v=A.rect;if(d.horizontal)return se(d.a.x,d.b.x,v.left,v.right)>=qt&&d.a.y>=v.top-2&&d.a.y<=v.bottom+2;return se(d.a.y,d.b.y,v.top,v.bottom)>=qt&&d.a.x>=v.left-2&&d.a.x<=v.right+2})},"blockingRectsFor"),E=e((x,d,M)=>{let A=x.map((N)=>({...N}));if(d.horizontal)A[d.index].y=M,A[d.index+1].y=M;else if(d.vertical)A[d.index].x=M,A[d.index+1].x=M;else return;let v=Se(Et(A));return mt(v).length===v.length-1?v:void 0},"candidateByMovingRail"),b=e((x,d,M)=>{let A=[x.start,x.end].filter((N)=>Boolean(N)),v=mt(d);if(v.length!==d.length-1)return!1;for(let N of v){if(Gt(N.a,N.b,a,A,-2))return!1;if(Gt(N.a,N.b,l,[],-2))return!1}for(let N of m){if(N===x)continue;for(let k of v)for(let w of mt(f(N)))if(Ie(k,w,0.5)>=qt)return!1}return g(x,d)<=M},"candidateIsSafe");for(let x=0;x<8;x++){let d=g(),M=!1;for(let A of m){let v=f(A),N=y(v);if(!N)continue;let k=I(A,N.segment);if(k.length===0)continue;let w=N.horizontal?[Math.min(...k.map((C)=>C.rect.top))-20,Math.max(...k.map((C)=>C.rect.bottom))+20]:[Math.min(...k.map((C)=>C.rect.left))-20,Math.max(...k.map((C)=>C.rect.right))+20];for(let C of w){let B=E(v,N.segment,C);if(!B||!b(A,B,d))continue;A.points=B,M=!0;break}if(M)break}if(!M)return}}e(no,"liftObstacleHuggingSameSideRails");function oo(n,o){let i=e((f)=>{let g=f.groupTitleRect;if(!g||typeof g.left!=="number"||typeof g.right!=="number"||typeof g.top!=="number"||typeof g.bottom!=="number"||!Number.isFinite(g.left)||!Number.isFinite(g.right)||!Number.isFinite(g.top)||!Number.isFinite(g.bottom)||g.right<=g.left||g.bottom<=g.top)return;return{left:g.left,right:g.right,top:g.top,bottom:g.bottom}},"validTitleRect"),c=e((f)=>{if(!f.isGroup||f.parentId)return;let g=f.direction,y=typeof g==="string"?g.toUpperCase():"";if(y==="LR"||y==="RL"||y==="BT")return;let I=i(f),{y:E,height:b}=f;if(!I||typeof E!=="number"||typeof b!=="number"||!Number.isFinite(E)||!Number.isFinite(b)||b<=0)return;let x=I.right-I.left,d=I.bottom-I.top;if(d<=0||x<d)return;return{node:f,rect:I}},"topLaneTitleFor"),a=e((f,g)=>{if(!f.horizontal)return!1;let y=f.a.y;if(y<=g.top+at||y>=g.bottom-at)return!1;return se(f.a.x,f.b.x,g.left,g.right)>=qt},"horizontalSegmentIntersectsTitle"),l=[...o.values()].map(c).filter((f)=>Boolean(f));if(l.length===0)return;let m=0;for(let f of n){if(f.isLayoutOnly)continue;let g=Et(f.points??[]);for(let y of mt(g))for(let I of l){if(!a(y,I.rect))continue;m=Math.max(m,I.rect.bottom-y.a.y+4)}}if(m<=at)return;for(let f of l){let g=f.node.y,y=f.node.height;if(typeof g!=="number"||typeof y!=="number"||!Number.isFinite(g)||!Number.isFinite(y)||y<=0)continue;f.node.y=g-m/2,f.node.height=y+m,f.node.groupTitleRect={...f.rect,top:f.rect.top-m,bottom:f.rect.bottom-m}}}e(oo,"liftTopLaneTitleBandsAboveRails");function so(n,o){let i=e((g)=>{let y=g.groupTitleRect;if(!y||typeof y.left!=="number"||typeof y.right!=="number"||typeof y.top!=="number"||typeof y.bottom!=="number"||!Number.isFinite(y.left)||!Number.isFinite(y.right)||!Number.isFinite(y.top)||!Number.isFinite(y.bottom)||y.right<=y.left||y.bottom<=y.top)return;return{left:y.left,right:y.right,top:y.top,bottom:y.bottom}},"validTitleRect"),c=e((g)=>{if(!g.isGroup||g.parentId)return;if(g.direction!=="LR")return;let I=i(g),{x:E,width:b}=g;if(!I||typeof E!=="number"||typeof b!=="number"||!Number.isFinite(E)||!Number.isFinite(b)||b<=0)return;let x=I.right-I.left,d=I.bottom-I.top;if(x<=0||d<x)return;return{node:g,rect:I}},"leftLaneTitleFor"),a=e((g,y)=>{if(!g.vertical)return!1;let I=g.a.x;if(I<=y.left+at||I>=y.right-at)return!1;return se(g.a.y,g.b.y,y.top,y.bottom)>=qt},"verticalSegmentIntersectsTitle"),l=e((g,y)=>{if(!g.horizontal)return!1;let I=g.a.y;if(I<=y.top+at||I>=y.bottom-at)return!1;return se(g.a.x,g.b.x,y.left,y.right)>=qt},"horizontalSegmentIntersectsTitle"),m=[...o.values()].map(c).filter((g)=>Boolean(g));if(m.length===0)return;let f=0;for(let g of n){if(g.isLayoutOnly)continue;let y=Et(g.points??[]);for(let I of mt(y))for(let E of m)if(a(I,E.rect))f=Math.max(f,E.rect.right-I.a.x+4);else if(l(I,E.rect)){let b=Math.min(I.a.x,I.b.x);f=Math.max(f,E.rect.right-b+4)}}if(f<=at)return;for(let g of m){let y=g.node.x,I=g.node.width;if(typeof y!=="number"||typeof I!=="number"||!Number.isFinite(y)||!Number.isFinite(I)||I<=0)continue;g.node.x=y-f/2,g.node.width=I+f,g.node.groupTitleRect={...g.rect,left:g.rect.left-f,right:g.rect.right-f}}}e(so,"shiftLeftLaneTitleBandsLeftOfRails");function ks(n,o){let{realNodeRects:c}=Ae(o.values()),a=n.filter((d)=>!d.isLayoutOnly),l=e((d,M=new Map)=>Et(M.get(d)??d.points??[]),"replacementPointsFor"),m=e((d=new Map)=>{let M=0;for(let A=0;A<a.length;A++){let v=mt(l(a[A],d));for(let N=A+1;N<a.length;N++){let k=mt(l(a[N],d));for(let w of v)for(let C of k)if(Ce(w.a,w.b,C.a,C.b,at))M++}}return M},"crossingCount"),f=e((d=new Map)=>a.reduce((M,A)=>M+he(l(A,d)),0),"totalBends"),g=e((d)=>{let M=l(d);if(M.length<4)return;let A=M[M.length-2],v=M[M.length-1];if(!Dt(A,v,at)&&!Yt(A,v,at))return;return{tailStart:A,terminal:v}},"terminalTailFor"),y=e((d,M)=>{let A=l(d);if(A.length<3)return;let v=A[0],N=A[1],k;if(Dt(v,N,at))k={x:N.x,y:M.tailStart.y};else if(Yt(v,N,at))k={x:M.tailStart.x,y:N.y};else return;let w=Se(Et([v,N,k,M.tailStart,M.terminal]));return mt(w).length===w.length-1?w:void 0},"candidateWithDestinationTail"),I=e((d,M)=>{let A=[d.start,d.end].filter((v)=>Boolean(v));for(let v of mt(M))if(Gt(v.a,v.b,c,A,-2))return!0;return!1},"pathHasNodeHit"),E=e((d,M,A)=>{for(let v of a){if(v===d)continue;for(let N of mt(M))for(let k of mt(l(v,A)))if(Ie(N,k,0.5)>=qt)return!0}return!1},"pathHasSharedTrack"),b=e((d,M,A)=>!I(d,M)&&!E(d,M,A),"candidateIsSafe"),x=e(()=>{let d=new Map;for(let M of a){let A=M.end;if(!A||!o.has(A))continue;if(l(M).length<4)continue;let N=d.get(A)??[];N.push(M),d.set(A,N)}return d},"edgesByDestination");for(let d=0;d<4;d++){let M=m();if(M===0)return;let A=f(),v,N=M,k=A;for(let w of x().values())for(let C=0;C<w.length;C++)for(let B=C+1;B<w.length;B++){let _=w[C],Y=w[B],F=g(_),V=g(Y);if(!F||!V)continue;let z=y(_,V),D=y(Y,F);if(!z||!D)continue;let W=new Map([[_,z],[Y,D]]);if(!b(_,z,W)||!b(Y,D,W))continue;let J=m(W),st=f(W);if(J>=M)continue;if(J>N||J===N&&st>=k)continue;v=W,N=J,k=st}if(!v)return;for(let[w,C]of v)w.points=C}}e(ks,"swapDestinationTerminalTailsToReduceCrossings");function _s(n,o){let{realNodeRects:l,labelNodeRects:m}=Ae(o.values()),f=n.filter((w)=>!w.isLayoutOnly),g=e((w,C=new Map)=>Et(C.get(w)??w.points??[]),"replacementPointsFor"),y=e((w=new Map)=>{let C=0;for(let B=0;B<f.length;B++){let _=mt(g(f[B],w));for(let Y=B+1;Y<f.length;Y++){let F=mt(g(f[Y],w));for(let V of _)for(let z of F)if(Ce(V.a,V.b,z.a,z.b,at))C++}}return C},"strictCrossingCount"),I=e((w=new Map)=>f.reduce((C,B)=>C+he(g(B,w)),0),"totalBends"),E=e((w)=>{let{start:C,end:B}=w,_=C?o.get(C):void 0,Y=B?o.get(B):void 0,F=_?fe(_):void 0,V=Y?fe(Y):void 0;return F&&V?{src:F,dst:V}:void 0},"endpointRectsFor"),b=e((w,C,B)=>{if(B.index<=0||B.index+1>=C.length-1)return;let _=E(w);if(!_)return;if(B.vertical){let Y=B.a.x,F=Math.min(_.src.left,_.dst.left),V=Math.max(_.src.right,_.dst.right),z=Y<F-at?"left":Y>V+at?"right":void 0;if(!z)return;return{edge:w,points:C,segmentIndex:B.index,axis:"vertical",side:z,coord:Y,min:Math.min(B.a.y,B.b.y),max:Math.max(B.a.y,B.b.y)}}if(B.horizontal){let Y=B.a.y,F=Math.min(_.src.top,_.dst.top),V=Math.max(_.src.bottom,_.dst.bottom),z=Y<F-at?"top":Y>V+at?"bottom":void 0;if(!z)return;return{edge:w,points:C,segmentIndex:B.index,axis:"horizontal",side:z,coord:Y,min:Math.min(B.a.x,B.b.x),max:Math.max(B.a.x,B.b.x)}}return},"externalRailForSegment"),x=e(()=>{let w=[];for(let C of f){let B=g(C);for(let _ of mt(B)){let Y=b(C,B,_);if(Y)w.push(Y)}}return w},"collectExternalRails"),d=e((w,C)=>w.edge!==C.edge&&w.axis===C.axis&&w.side===C.side&&se(w.min,w.max,C.min,C.max)>=qt,"railsInteract"),M=e((w)=>{let C=[],B=new Set;for(let _ of w){if(B.has(_))continue;let Y=[_],F=[];B.add(_);while(Y.length>0){let V=Y.pop();F.push(V);for(let z of w)if(!B.has(z)&&d(V,z))B.add(z),Y.push(z)}if(F.length>1)C.push(F)}return C},"connectedComponents"),A=e((w)=>{let C=[];for(let B of w)if(!C.some((_)=>Math.abs(_-B.coord)<at))C.push(B.coord);while(C.length<w.length){let B=Math.min(...C),_=Math.max(...C),Y=w[0].side;C.push(Y==="left"||Y==="top"?B-12*(w.length-C.length):_+12*(w.length-C.length))}return C},"uniqueCoordsFor"),v=e((w)=>{let C=w.map((Y)=>Y.coord),B=A(w),_=[];if(w.length<=6){let Y=Array(B.length).fill(!1),F=[],V=e(()=>{if(F.length===w.length){if(F.some((z,D)=>Math.abs(z-C[D])>=at))_.push([...F]);return}for(let[z,D]of B.entries()){if(Y[z])continue;Y[z]=!0,F.push(D),V(),F.pop(),Y[z]=!1}},"visit");return V(),_}for(let Y=0;Y<C.length;Y++)for(let F=Y+1;F<C.length;F++){let V=[...C];[V[Y],V[F]]=[V[F],V[Y]],_.push(V)}return _},"coordinateAssignmentsFor"),N=e((w,C)=>{let B=new Map;for(let[Y,F]of w.entries()){let V=C[Y],z=B.get(F.edge)??F.points.map((D)=>({x:D.x,y:D.y}));if(F.axis==="vertical")z[F.segmentIndex].x=V,z[F.segmentIndex+1].x=V;else z[F.segmentIndex].y=V,z[F.segmentIndex+1].y=V;B.set(F.edge,z)}let _=new Map;for(let[Y,F]of B){let V=Se(Et(F));if(mt(V).length!==V.length-1)return;_.set(Y,V)}return _},"replacementsForAssignment"),k=e((w)=>{for(let[C,B]of w){let _=[C.start,C.end].filter((Y)=>Boolean(Y));for(let Y of mt(B)){if(Gt(Y.a,Y.b,l,_,-2))return!1;if(Gt(Y.a,Y.b,m,[],-2))return!1}}for(let C=0;C<f.length;C++){let B=f[C],_=w.has(B),Y=mt(g(B,w));for(let F=C+1;F<f.length;F++){let V=f[F];if(!_&&!w.has(V))continue;let z=mt(g(V,w));for(let D of Y)for(let W of z)if(Ie(D,W,0.5)>=qt)return!1}}return!0},"candidateIsSafe");for(let w=0;w<4;w++){let C=y();if(C===0)return;let B,_=C,Y=I(),F=Number.POSITIVE_INFINITY;for(let V of M(x()))for(let z of v(V)){let D=N(V,z);if(!D||!k(D))continue;let W=y(D);if(W>=C)continue;let J=I(D),st=V.reduce((xt,Tt,$t)=>xt+Math.abs(z[$t]-Tt.coord),0);if(W>_||W===_&&(J>Y||J===Y&&st>=F))continue;B=D,_=W,Y=J,F=st}if(!B)return;for(let[V,z]of B)V.points=z}}e(_s,"reassignCrossingExternalRailChannels");function Hs(n,o){let{realNodeRects:c,labelNodeRects:a}=Ae(o.values()),l=n.filter((x)=>!x.isLayoutOnly),m=e((x,d,M)=>Et(x===d?M??[]:x.points??[]),"pointsFor"),f=e((x)=>mt(x).reduce((d,M)=>{let A=M.a.x-M.b.x,v=M.a.y-M.b.y;return d+Math.hypot(A,v)},0),"pathLength"),g=e((x,d)=>{let M=0;for(let A=0;A<l.length;A++){let v=mt(m(l[A],x,d));for(let N=A+1;N<l.length;N++){let k=mt(m(l[N],x,d));for(let w of v)for(let C of k)if(Ce(w.a,w.b,C.a,C.b,at))M++}}return M},"strictCrossingCount"),y=e((x,d)=>{if(x.horizontal){let M=x.a.y;return(Math.abs(M-d.top)<1||Math.abs(M-d.bottom)<1)&&se(x.a.x,x.b.x,d.left,d.right)>=qt}if(x.vertical){let M=x.a.x;return(Math.abs(M-d.left)<1||Math.abs(M-d.right)<1)&&se(x.a.y,x.b.y,d.top,d.bottom)>=qt}return!1},"segmentRunsAlongRectBorder"),I=e((x)=>{let d=[x.start,x.end].filter((A)=>Boolean(A)),M=[];for(let A of d){let v=o.get(A),N=v?fe(v):void 0;if(N)M.push(N)}return M},"endpointRectsFor"),E=e((x,d)=>{if(d+3>=x.length)return[];let M=x[d],A=x[d+1],v=x[d+2],N=x[d+3],k=Dt(M,A,at)&&Yt(A,v,at)&&Dt(v,N,at),w=Yt(M,A,at)&&Dt(A,v,at)&&Yt(v,N,at);if(!k&&!w)return[];if(!(k?Math.sign(A.x-M.x)!==Math.sign(N.x-v.x):Math.sign(A.y-M.y)!==Math.sign(N.y-v.y)))return[];let B=St(M,N,at)||vt(M,N,at)?[]:[{x:M.x,y:N.y},{x:N.x,y:M.y}],_=B.length===0?[[...x.slice(0,d+1),...x.slice(d+3)]]:B.map((F)=>[...x.slice(0,d+1),F,...x.slice(d+3)]),Y=new Set;return _.map((F)=>Se(Et(F))).filter((F)=>{if(mt(F).length!==F.length-1)return!1;if(!F.some((z)=>ye(z,N,at)))return!1;let V=F.map((z)=>`${z.x.toFixed(3)},${z.y.toFixed(3)}`).join("|");if(Y.has(V))return!1;return Y.add(V),!0})},"shortcutCandidatesAt"),b=e((x,d,M)=>{let A=[x.start,x.end].filter((N)=>Boolean(N)),v=I(x);for(let N of mt(d)){if(Gt(N.a,N.b,c,A,-2))return!1;if(Gt(N.a,N.b,a,[],-2))return!1;if(v.some((k)=>y(N,k)))return!1}for(let N of l){if(N===x)continue;for(let k of mt(d))for(let w of mt(m(N)))if(Ie(k,w,0.5)>=qt)return!1}return g(x,d)<=M},"candidateIsSafe");for(let x=0;x<8;x++){let d=g(),M,A,v=d,{POSITIVE_INFINITY:N,POSITIVE_INFINITY:k}=Number;for(let w of l){let C=m(w),B=he(C,at),_=f(C);for(let Y=0;Y<=C.length-4;Y++)for(let F of E(C,Y)){let V=he(F,at),z=f(F);if(!(V<B||V===B&&z<_-at)||!b(w,F,d))continue;let W=g(w,F);if(W>v||W===v&&(V>N||V===N&&z>=k))continue;M=w,A=F,v=W,N=V,k=z}}if(!M||!A)return;M.points=A}}e(Hs,"shortcutRedundantOrthogonalJogs");function Ds(n,o){let l=[];for(let H of o.values()){if(H.isGroup||H.isEdgeLabel)continue;let j=H.x??0,U=H.y??0,et=fe(H);if(!et)continue;l.push({id:String(H.id??""),cx:j,cy:U,rect:et})}if(l.length===0)return;let m=new Map(l.map((H)=>[H.id,H])),f=l.map((H)=>({id:H.id,rect:H.rect})),g=["top","bottom","left","right"],y={top:Math.min(...l.map((H)=>H.rect.top))-20,bottom:Math.max(...l.map((H)=>H.rect.bottom))+20,left:Math.min(...l.map((H)=>H.rect.left))-20,right:Math.max(...l.map((H)=>H.rect.right))+20},I=n.filter((H)=>!H.isLayoutOnly),E=new Map(I.map((H,j)=>[H,j])),b=e((H)=>{let j=H==="left"||H==="top"?-1:1,U=[];for(let et=0;et<=2;et++)U.push(y[H]+j*20*et);return U},"outwardTracksForSide"),x=e((H,j=new Map)=>Et(j.get(H)??H.points??[]),"replacementPointsFor"),d=e((H,j)=>{let U=0;for(let et of H)for(let p of j)if(Ce(et.a,et.b,p.a,p.b,at))U++;return U},"crossingCountBetweenSegments"),M=e((H,j)=>d(mt(H),mt(j)),"crossingCountBetweenPaths"),A=e((H=new Map)=>{let j=0,U=[],et=new Set,p=[],S=e((R)=>{if(!et.has(R))et.add(R),p.push(R)},"addEdge");for(let R=0;R<I.length;R++){let O=I[R],P=x(O,H);for(let G=R+1;G<I.length;G++){let nt=I[G],it=M(P,x(nt,H));if(it>0)j+=it,U.push({first:O,second:nt,count:it}),S(O),S(nt)}}return p.sort((R,O)=>(E.get(R)??0)-(E.get(O)??0)),{count:j,pairs:U,edgeSet:et,edges:p}},"crossingSnapshot"),v=e((H,j)=>{let U=new Set(j.keys());if(U.size===0)return H.count;let et=0;for(let S of H.pairs)if(U.has(S.first)||U.has(S.second))et+=S.count;let p=0;for(let S=0;S<I.length;S++){let R=I[S],O=U.has(R),P=x(R,j);for(let G=S+1;G<I.length;G++){let nt=I[G];if(!O&&!U.has(nt))continue;p+=M(P,x(nt,j))}}return H.count-et+p},"crossingCountWithReplacements"),N=e((H)=>{let j=new Map;for(let p of H.pairs){let S=j.get(p.first)??new Set;S.add(p.second),j.set(p.first,S);let R=j.get(p.second)??new Set;R.add(p.first),j.set(p.second,R)}let U=[],et=new Set;for(let p of H.edges){if(et.has(p))continue;let S=[p],R=[];et.add(p);while(S.length>0){let O=S.pop();R.push(O);for(let P of j.get(O)??[])if(!et.has(P))et.add(P),S.push(P)}if(R.sort((O,P)=>(E.get(O)??0)-(E.get(P)??0)),R.length>1)U.push(R)}return U},"crossingComponents"),k=e((H)=>[H.start,H.end].filter((j)=>Boolean(j)),"endpointIdsFor"),w=e((H)=>{let j=[];for(let U of N(H)){let et=new Set(U),p=new Set(U.flatMap((R)=>k(R))),S=[...U];for(let R of I){if(et.has(R))continue;if(k(R).some((O)=>p.has(O)))S.push(R)}S.sort((R,O)=>(E.get(R)??0)-(E.get(O)??0)),j.push(S)}return j},"pairSearchGroups"),C=e((H,j,U)=>v(H,new Map([[j,U]])),"crossingCountWithSingleReplacement"),B=e((H)=>{let j=new Map;for(let U of H.pairs)j.set(U.first,(j.get(U.first)??0)+U.count),j.set(U.second,(j.get(U.second)??0)+U.count);return j},"currentCrossingsByEdge"),_=e((H)=>H.slice(1).reduce((j,U,et)=>{let p=H[et];return j+Math.abs(U.x-p.x)+Math.abs(U.y-p.y)},0),"pathLength"),Y=e((H=new Map)=>I.reduce((j,U)=>j+he(x(U,H)),0),"totalBends"),F=e((H=new Map)=>I.reduce((j,U)=>j+_(x(U,H)),0),"totalLength"),V=e((H,j,U=new Map)=>{let et=mt(j);for(let p of I){if(p===H)continue;for(let S of et)for(let R of mt(x(p,U)))if(Ie(S,R,0.5)>=qt)return!0}return!1},"pathHasSegmentConflict"),z=e((H,j)=>{let U=[H.start,H.end].filter((et)=>Boolean(et));for(let et of mt(j))if(Gt(et.a,et.b,f,U,-2))return!0;return!1},"pathHitsNode"),D=e((H,j)=>{let U=Se(Et(j));if(mt(U).length===U.length-1)H.push(U)},"pushOrthogonalCandidate"),W=e((H)=>H==="left"||H==="right","sideIsHorizontal"),J=e((H,j,U)=>{switch(j){case"left":return Math.min(H.x,U.x)-20;case"right":return Math.max(H.x,U.x)+20;case"top":return Math.min(H.y,U.y)-20;case"bottom":return Math.max(H.y,U.y)+20}},"localTrackForSameSide"),st=e((H,j,U,et)=>{let p=U==="left"||U==="top"?-1:1,S=[J(j,U,et),y[U]];for(let R of S)for(let O=0;O<=2;O++)D(H,Lo(j,U,et,R+p*20*O))},"addSameSideCandidates"),xt=e((H,j,U,et,p)=>{for(let S of b(U))for(let R of b(p))D(H,[j,{x:S,y:j.y},{x:S,y:R},{x:et.x,y:R},et])},"addHorizontalToVerticalCandidates"),Tt=e((H,j,U,et,p)=>{for(let S of b(U))for(let R of b(p))D(H,[j,{x:j.x,y:S},{x:R,y:S},{x:R,y:et.y},et])},"addVerticalToHorizontalCandidates"),$t=e((H,j,U,et,p)=>{let S=[...b("top"),...b("bottom")];for(let R of b(U))for(let O of b(p))for(let P of S)D(H,[j,{x:R,y:j.y},{x:R,y:P},{x:O,y:P},{x:O,y:et.y},et])},"addHorizontalPairCandidates"),Ut=e((H,j,U,et,p)=>{let S=[...b("left"),...b("right")];for(let R of b(U))for(let O of b(p))for(let P of S)D(H,[j,{x:j.x,y:R},{x:P,y:R},{x:P,y:O},{x:et.x,y:O},et])},"addVerticalPairCandidates"),lt=e((H)=>{let j=new Set;return H.map((U)=>Et(U)).filter((U)=>{let et=U.map((p)=>`${p.x.toFixed(3)},${p.y.toFixed(3)}`).join("|");if(j.has(et)||U.length<2)return!1;return j.add(et),!0})},"dedupeCandidatePaths"),ot=e((H,j,U,et)=>{let p=[],S=vo(H,j,U,et,20,at);if(S)D(p,S);if(j===et)st(p,H,j,U);let R=W(j),O=W(et);if(R&&!O)xt(p,H,j,U,et);else if(!R&&O)Tt(p,H,j,U,et);else if(R)$t(p,H,j,U,et);else Ut(p,H,j,U,et);return lt(p)},"buildCandidatesForSides"),dt=e((H,j,U,et)=>{let p=[...b("left"),...b("right")],S=[...b("top"),...b("bottom")];for(let R of g){let O=ke(et,R),P=R==="top"||R==="bottom"?b(R):S;for(let G of p){D(H,[j,U,{x:G,y:U.y},{x:G,y:O.y},O]);for(let nt of P)D(H,[j,U,{x:G,y:U.y},{x:G,y:nt},{x:O.x,y:nt},O])}}},"addVerticalDepartureOuterTrackCandidates"),Mt=e((H,j,U,et)=>{let p=[...b("left"),...b("right")],S=[...b("top"),...b("bottom")];for(let R of g){let O=ke(et,R),P=R==="left"||R==="right"?b(R):p;for(let G of S){D(H,[j,U,{x:U.x,y:G},{x:O.x,y:G},O]);for(let nt of P)D(H,[j,U,{x:U.x,y:G},{x:nt,y:G},{x:nt,y:O.y},O])}}},"addHorizontalDepartureOuterTrackCandidates"),Lt=e((H)=>{let{start:j,end:U}=H,et=U?m.get(U):void 0;if(!j||!et)return[];let p=Et(H.points??[]);if(p.length<4)return[];let S=p[0],R=p[1],O=[];if(Yt(S,R,at))dt(O,S,R,et);else if(Dt(S,R,at))Mt(O,S,R,et);return O},"terminalPreservingOuterTrackCandidates"),Rt=e((H)=>{let{start:j,end:U}=H,et=j?m.get(j):void 0,p=U?m.get(U):void 0;if(!et||!p)return[];let S=[];for(let R of g){let O=ke(et,R);for(let P of g)S.push(...ot(O,R,ke(p,P),P))}return S.push(...Lt(H)),S},"candidatePathsFor"),kt=e(()=>new Map(I.map((H)=>[H,mt(x(H))])),"currentSegmentsByEdge"),re=e((H,j,U)=>{let et=new Set;for(let p of I){if(p===H)continue;let S=U.get(p)??mt(x(p));if(j.some((R)=>S.some((O)=>Ie(R,O,0.5)>=qt)))et.add(p)}return et},"sharedTrackConflictsFor"),ie=e((H,j,U,et)=>{let p=new Set;return Rt(H).map((R)=>Se(Et(R))).filter((R)=>{if(z(H,R))return!1;let O=R.map((P)=>`${P.x.toFixed(3)},${P.y.toFixed(3)}`).join("|");if(p.has(O)||R.length<2)return!1;return p.add(O),!0}).map((R)=>{let O=mt(R),P=0;for(let G of I){if(G===H)continue;P+=d(O,U.get(G)??mt(x(G)))}return{candidate:R,candidateSegments:O,crossings:j.count-(et.get(H)??0)+P,bends:he(R,at),totalBends:he(R),length:_(R)}}).filter(({crossings:R})=>R<=j.count).sort((R,O)=>R.crossings-O.crossings||R.bends-O.bends||R.length-O.length).slice(0,48).map((R)=>({path:R.candidate,segments:R.candidateSegments,sharedTrackConflicts:re(H,R.candidateSegments,U),totalBends:R.totalBends,length:R.length}))},"pairCandidatesFor"),ce=e((H,j,U,et,p,S)=>{let R=0;for(let P of H.pairs)if(P.first===j||P.second===j||P.first===et||P.second===et)R+=P.count;let O=d(U.segments,p.segments);for(let P of I){if(P===j||P===et)continue;let G=S.get(P)??mt(x(P));O+=d(U.segments,G)+d(p.segments,G)}return H.count-R+O},"pairCrossingCount"),ge=e((H,j)=>{for(let U of H.sharedTrackConflicts)if(U!==j)return!1;return!0},"conflictsOnlyWith"),_e=e((H,j)=>H.segments.some((U)=>j.segments.some((et)=>Ie(U,et,0.5)>=qt)),"candidatesShareTrack"),Le=e((H,j,U,et)=>ge(j,U.edge)&&ge(et,H.edge)&&!_e(j,et),"pairCandidatesAreCompatible"),He=e((H,j,U,et,p)=>{let S=ce(H.current,j.edge,U,et.edge,p,H.baseSegments);if(S>=H.current.count)return;return{replacements:new Map([[j.edge,U.path],[et.edge,p.path]]),crossings:S,bends:H.currentBends-(H.baseBendsByEdge.get(j.edge)??0)-(H.baseBendsByEdge.get(et.edge)??0)+U.totalBends+p.totalBends,length:H.currentLength-(H.baseLengthByEdge.get(j.edge)??0)-(H.baseLengthByEdge.get(et.edge)??0)+U.length+p.length}},"scorePairReplacement"),Tn=e((H,j)=>H.crossings<j.crossings||H.crossings===j.crossings&&(H.bends<j.bends||H.bends===j.bends&&H.length<j.length),"pairScoreIsBetter"),wn=e((H,j,U,et)=>{let p=et;for(let S of j.candidates)for(let R of U.candidates){if(!Le(j,S,U,R))continue;let O=He(H,j,S,U,R);if(O&&Tn(O,p))p=O}return p},"bestScoreForOptionPair"),Rn=e((H)=>{let j=Y(),U=F(),et=kt(),p=B(H),S=new Map(I.map((it)=>[it,he(x(it))])),R=new Map(I.map((it)=>[it,_(x(it))])),O=new Map,P=w(H);for(let it of P)for(let tt of it){if(O.has(tt))continue;let q=ie(tt,H,et,p);if(q.length>0)O.set(tt,{edge:tt,candidates:q})}let G={replacements:new Map,crossings:H.count,bends:j,length:U},nt={current:H,currentBends:j,currentLength:U,baseBendsByEdge:S,baseLengthByEdge:R,baseSegments:et};for(let it of P){let tt=new Set(it.filter((ht)=>H.edgeSet.has(ht))),q=it.map((ht)=>O.get(ht)).filter((ht)=>Boolean(ht));for(let ht=0;ht<q.length;ht++){let pt=q[ht];for(let gt=ht+1;gt<q.length;gt++){let ft=q[gt];if(!tt.has(pt.edge)&&!tt.has(ft.edge))continue;G=wn(nt,pt,ft,G)}}}return G.replacements.size>0?G.replacements:void 0},"bestPairedReplacement");for(let H=0;H<4;H++){let j=A(),U=j.count;if(U===0)return;let et,p,S=U,R=Number.POSITIVE_INFINITY;for(let P of j.edges){let G=he(x(P),at);for(let nt of Rt(P)){let it=z(P,nt),tt=!it&&V(P,nt),q=C(j,P,nt),ht=he(nt,at);if(it||tt)continue;if(!(q<U||q===U&&ht<G))continue;if(q>S||q===S&&ht>=R)continue;et=P,p=nt,S=q,R=ht}}if(et&&p){et.points=p;continue}let O=Rn(j);if(!O)return;for(let[P,G]of O)P.points=G}}e(Ds,"resolveRenderedOrthogonalCrossings");var Re=0.001,qr=8;function Xs(n,o){let{nodeInfoById:s,realNodeRects:i}=vn(o),c=["top","bottom","left","right"],a=20,l={top:Math.min(...i.map((d)=>d.rect.top))-20,bottom:Math.max(...i.map((d)=>d.rect.bottom))+20,left:Math.min(...i.map((d)=>d.rect.left))-20,right:Math.max(...i.map((d)=>d.rect.right))+20},m=e((d,M,A,v)=>{let N=[],k=vo(d,M,A,v,20,Re);if(k)N.push(k);if(M===v)N.push(Lo(d,M,A,l[M]));return N},"buildOrthogonalPathCandidates"),f=e((d,M)=>{for(let A=0;A<d.length-1;A++){let v=d[A],N=d[A+1];if(Gt(v,N,i,M,1))return!0}return!1},"pathHitsNode"),g=e((d,M,A=!1)=>{let v=0,N=Ve(d,Re),{start:k,end:w}=M;for(let C of n){if(C===M||C.isLayoutOnly)continue;let{start:B,end:_}=C;if(!A&&k&&w&&(B===k||B===w||_===k||_===w))continue;let Y=C.points;if(!Y||Y.length<2)continue;for(let F of N)for(let V of Ve(Y,Re)){if(To(F.a,F.b,V.a,V.b,Re,Re)){v++;continue}if(Ie(F,V,Re)>=qr)v++}}return v},"pathConflictCount"),y=4,I=e((d,M)=>{let A=Math.abs(d.y-M.rect.top),v=Math.abs(d.y-M.rect.bottom),N=Math.abs(d.x-M.rect.left),k=Math.abs(d.x-M.rect.right),w="top",C=A;if(v<C)w="bottom",C=v;if(N<C)w="left",C=N;if(k<C)w="right",C=k;return w},"nearestSideOfRect"),E=new Map,b=e((d,M,A)=>{let v=E.get(d)??[];v.push({side:M,edgeId:A}),E.set(d,v)},"addFaceClaim");for(let d of n){if(d.isLayoutOnly)continue;let M=d.points??[];if(M.length<1)continue;let A=d.id??"",{start:v,end:N}=d;if(v){let k=s.get(v);if(k)b(v,I(M[0],k),A)}if(N){let k=s.get(N);if(k)b(N,I(M[M.length-1],k),A)}}let x=e((d,M,A)=>E.get(d)?.some((v)=>v.edgeId!==A&&v.side===M)??!1,"faceIsClaimed");for(let d of n){if(d.isLayoutOnly)continue;let M=d.points;if(!M||M.length<2)continue;let A=he(M,Re);if(A<4)continue;let{start:v,end:N}=d;if(!v||!N)continue;let k=s.get(v),w=s.get(N);if(!k||!w)continue;let C=d.id??"",B=g(M,d,!0),_=g(M,d),Y,F=B,V=A;for(let z of c){if(x(v,z,C))continue;let D=ke(k,z);for(let W of c){if(x(N,W,C))continue;let J=ke(w,W);for(let st of m(D,z,J,W)){if(f(st,[v,N]))continue;let xt=he(st,Re);if(B>0){let Tt=g(st,d,!0);if(Tt>F||Tt===F&&xt>=V)continue;F=Tt,V=xt,Y=st;continue}if(g(st,d)>_)continue;if(xt<V)V=xt,Y=st}}}if(Y){d.points=Y;let z=E.get(v);if(z)E.set(v,z.filter((W)=>W.edgeId!==C));let D=E.get(N);if(D)E.set(N,D.filter((W)=>W.edgeId!==C));b(v,I(Y[0],k),C),b(N,I(Y[Y.length-1],w),C)}}}e(Xs,"simplifyDetouredEdges");var le=0.001,Wo=10,an=7;function ro(n,o){let s=o?0:n.length-1,i=o?1:-1,c=n[s],a=n[s+i];if(!c||!a)return;let l=a.x-c.x,m=a.y-c.y;if(Math.abs(l)+Math.abs(m)<le)return;if(Math.abs(m)<=le){let g=c.x+Math.sign(l)*Wo;return{left:Math.min(c.x,g),right:Math.max(c.x,g),top:c.y-an,bottom:c.y+an}}if(Math.abs(l)<=le){let g=c.y+Math.sign(m)*Wo;return{left:c.x-an,right:c.x+an,top:Math.min(c.y,g),bottom:Math.max(c.y,g)}}return{left:Math.min(c.x,a.x),right:Math.max(c.x,a.x),top:Math.min(c.y,a.y),bottom:Math.max(c.y,a.y)}}e(ro,"markerClearanceRectFor");function Ys(n){return{left:Math.min(n.left,n.right),right:Math.max(n.left,n.right),top:Math.min(n.top,n.bottom),bottom:Math.max(n.top,n.bottom)}}e(Ys,"normalizeRect");function io(n,o){let s=Et(o),i=ro(s,!0),c=ro(s,!1);return[i,c].some((a)=>a&&gn(n,Ys(a)))}e(io,"labelOverlapsOwnMarker");function dn(n,o){let s=[];for(let x of n){if(x.isLayoutOnly)continue;let d=x.points;if(!d||d.length<2)continue;for(let M=0;M<d.length-1;M++)s.push({edgeId:x.id,p1:d[M],p2:d[M+1]})}let i=[],c=[];for(let x of o.values()){let{isGroup:d,parentId:M}=x;if(d&&!M){let v=fe(x);if(v)c.push({id:x.id,rect:v});continue}if(d)continue;if(x.isEdgeLabel)continue;let A=fe(x);if(!A)continue;i.push({nodeId:x.id,rect:A})}let a=3,l=1,m=12,f=e((x,d)=>{let M=$n(d,a);for(let{nodeId:A,rect:v}of i){if(A===x)continue;if(gn(M,v))return!0}return!1},"labelOverlapsForeignNode"),g=e((x,d)=>{let M=$n(d,a);for(let A of s){if(A.edgeId===x)continue;if(Cn(A.p1,A.p2,M))return!0}return!1},"labelOverlapsForeignEdge"),y=e((x,d,M)=>f(x,M)||g(d,M),"labelOverlapsAnything"),I=[],E=e((x)=>{for(let{id:d,rect:M}of c)if(ps(M,x))return d;return},"findContainingLane"),b=e((x,d)=>I.some((M)=>M.labelId!==x&&gn(d,M.rect)),"overlapsPlacedLabel");for(let x of n){if(x.isLayoutOnly)continue;let d=x.labelNodeId;if(!d)continue;let M=o.get(d);if(!M)continue;let A=x.points;if(!A||A.length<2)continue;let v=M.width??0,N=M.height??0;if(v<=0||N<=0)continue;let k=[];for(let lt=0;lt<A.length-1;lt++){let ot=A[lt],dt=A[lt+1],Mt=Math.abs(ot.x-dt.x),Lt=Math.abs(ot.y-dt.y);if(Mt<le&&Lt<le)continue;if(Mt>=le&&Lt>=le)continue;k.push({idx:lt,length:Mt+Lt,orientation:Mt>=le?"horizontal":"vertical",midX:(ot.x+dt.x)/2,midY:(ot.y+dt.y)/2})}if(k.length===0)continue;let w=k.length>=3?k.filter((lt)=>lt.idx>0&&lt.idx<k.length-1):k,C=w.length>0?w:k,B=v>=N?"horizontal":"vertical",_=e((lt)=>[...lt].sort((ot,dt)=>{let Mt=ot.orientation===B,Lt=dt.orientation===B;if(Mt!==Lt)return Mt?-1:1;let Rt=ot.length>=(ot.orientation==="horizontal"?v:N)+2,kt=dt.length>=(dt.orientation==="horizontal"?v:N)+2;if(Rt!==kt)return Rt?-1:1;return dt.length-ot.length}),"rankSegments"),Y=k[0],F=k[k.length-1],V=[0.5,0.25,0.75,0.05,0.95,0.15,0.85,0.1,0.9],z=e((lt,ot)=>{let dt=A[lt.idx],Mt=A[lt.idx+1];return{midX:dt.x+(Mt.x-dt.x)*ot,midY:dt.y+(Mt.y-dt.y)*ot}},"anchorAtT"),D=e((lt,ot,dt)=>Math.min(dt,Math.max(ot,lt)),"clamp"),W=e((lt,ot)=>lt.midX>=ot.left-le&&lt.midX<=ot.right+le&&lt.midY>=ot.top-le&&lt.midY<=ot.bottom+le,"pointInsideRectInclusive"),J=e((lt)=>{let ot=ze(lt.midX,lt.midY,v,N),dt=E(ot);if(dt)return{laneId:dt,anchor:lt,rect:ot};let Mt=c.find(({rect:ge})=>W(lt,ge));if(!Mt)return;let Lt=Mt.rect.left+v/2+l,Rt=Mt.rect.right-v/2-l,kt=Mt.rect.top+N/2+l,re=Mt.rect.bottom-N/2-l;if(Lt>Rt||kt>re)return;let ie={midX:D(lt.midX,Lt,Rt),midY:D(lt.midY,kt,re)},ce=ze(ie.midX,ie.midY,v,N);return W(lt,ce)?{laneId:Mt.id,anchor:ie,rect:ce}:void 0},"placementForAnchor"),st=e((lt,ot,dt)=>lt.orientation==="horizontal"?Math.abs(ot.midX-dt.x):Math.abs(ot.midY-dt.y),"distanceAlongSegment"),xt=e((lt,ot)=>{let Mt=(lt.orientation==="horizontal"?v/2:N/2)+m;if(lt===Y){let Lt=A[lt.idx];if(st(lt,ot,Lt)+le<Mt)return!1}if(lt===F){let Lt=A[lt.idx+1];if(st(lt,ot,Lt)+le<Mt)return!1}return!0},"labelClearsTerminalEndpoints"),Tt=e((lt)=>{let ot=_(lt);for(let dt of ot)for(let Mt of V){let Lt=z(dt,Mt);if(!xt(dt,Lt))continue;let Rt=J(Lt);if(!Rt)continue;if(io(Rt.rect,A))continue;if(b(d,Rt.rect))continue;if(!y(d,x.id,Rt.rect))return{laneId:Rt.laneId,anchor:Rt.anchor}}return},"tryPool"),$t=e((lt,ot,dt=!1)=>{let Mt=_(lt);for(let Lt of Mt){let Rt={midX:Lt.midX,midY:Lt.midY};if(ot&&!xt(Lt,Rt))continue;let kt=J(Rt);if(kt&&!io(kt.rect,A)&&!b(d,kt.rect)&&!f(d,kt.rect)&&(dt||!g(x.id,kt.rect)))return{laneId:kt.laneId,anchor:kt.anchor}}return},"findLaneContainingFallback"),Ut=Tt(C)??(C.length<k.length?Tt(k):void 0)??$t(k,!0)??$t(k,!1)??$t(k,!1,!0);if(Ut){M.x=Ut.anchor.midX,M.y=Ut.anchor.midY,M.parentId=Ut.laneId;let lt=ze(Ut.anchor.midX,Ut.anchor.midY,v,N),ot=I.findIndex((dt)=>dt.labelId===d);if(ot>=0)I[ot]={labelId:d,rect:lt};else I.push({labelId:d,rect:lt})}}}e(dn,"anchorLabelsToPolyline");var Hn=0.000001,Jr=8,Ko=Jr/2,Zr=3;function co(n,o){return n<o?`${n}::${o}`:`${o}::${n}`}e(co,"pairKey");function Gs(n,o){let{nodeInfoById:s,realNodeRects:i}=vn(o),c=new Map;for(let l of o){let m=l.id;if(l.isGroup)continue;if(l.isEdgeLabel){c.set(m,{w:l.width??0,h:l.height??0});continue}}let a=e((l,m,f,g)=>{let y=co(m,f),I=0,E=e((b)=>{if(!b)return;let x=c.get(b);if(!x)return;let d=g==="x"?x.w/2:x.h/2;if(d>I)I=d},"consider");E(l.labelNodeId);for(let b of n){if(b===l)continue;if(b.isLayoutOnly)continue;let{start:x,end:d}=b;if(!x||!d)continue;if(co(x,d)!==y)continue;E(b.labelNodeId)}return I>0?I+Zr:0},"labelClearanceFor");for(let l of n){if(l.isLayoutOnly)continue;let m=l.points;if(!So(m,Hn))continue;let f=Eo(l,s,Hn);if(!f)continue;let{srcId:g,dstId:y,srcInfo:I,dstInfo:E,collinearX:b,collinearY:x}=f;if(b===x)continue;let d,M;if(b){let w=E.cy>I.cy;d={x:I.cx,y:w?I.rect.bottom:I.rect.top},M={x:E.cx,y:w?E.rect.top:E.rect.bottom}}else{let w=E.cx>I.cx;d={x:w?I.rect.right:I.rect.left,y:I.cy},M={x:w?E.rect.left:E.rect.right,y:E.cy}}if(Gt(d,M,i,[g,y],1))continue;let v=a(l,g,y,b?"x":"y"),N=v>Ko?v:Ko,k=[0,N,-N];for(let w of k){let C={...d},B={...M};if(b){if(C.x+=w,B.x+=w,C.x<=I.rect.left||C.x>=I.rect.right)continue;if(B.x<=E.rect.left||B.x>=E.rect.right)continue}else{if(C.y+=w,B.y+=w,C.y<=I.rect.top||C.y>=I.rect.bottom)continue;if(B.y<=E.rect.top||B.y>=E.rect.bottom)continue}if(Gt(C,B,i,[g,y],1))continue;if(pn(C,B,n,l,{epsilon:Hn}))continue;l.points=[C,B];break}}}e(Gs,"straightenCollinearSiblingDetours");function ao(n,o){let{realNodeRects:g,labelNodeRects:y}=Ae(o.values()),I=e((C,B)=>Ve(B,0.001).map((_)=>({..._,edge:C,interior:_.index>=1&&_.index<=B.length-3})),"segmentsFor"),E=e(()=>{let C=[];for(let B of n){if(B.isLayoutOnly)continue;let _=B.points;if(!_||_.length<2)continue;C.push(...I(B,Et(_)))}return C},"allSegments"),b=e((C,B)=>{if(C.horizontal&&B.horizontal)return se(C.a.x,C.b.x,B.a.x,B.b.x)>=8&&Math.abs(C.a.y-B.a.y)<7;if(C.vertical&&B.vertical)return se(C.a.y,C.b.y,B.a.y,B.b.y)>=8&&Math.abs(C.a.x-B.a.x)<7;return!1},"hasCrowdedParallelTrack"),x=e((C,B)=>{let{start:_,end:Y}=C,F=I(C,B);if(F.length!==B.length-1)return!1;let V=[_,Y].filter((D)=>Boolean(D)),z=C.labelNodeId?[C.labelNodeId]:[];for(let D of F){if(Gt(D.a,D.b,g,V,-2))return!1;if(Gt(D.a,D.b,y,z,-2))return!1}for(let D of n){if(D===C||D.isLayoutOnly)continue;let W=D.points;if(!W||W.length<2)continue;for(let J of F)for(let st of I(D,Et(W))){if(b(J,st))return!1;if(Ce(J.a,J.b,st.a,st.b,0.001))return!1}}return!0},"candidateIsSafe"),d=e((C,B)=>{let _=Et(C.edge.points??[]);if(_.length<4||C.index>=_.length-1)return;let Y=_.map((F)=>({...F}));if(C.horizontal)Y[C.index].y+=B,Y[C.index+1].y+=B;else if(C.vertical)Y[C.index].x+=B,Y[C.index+1].x+=B;else return;return I(C.edge,Y).length===Y.length-1?Y:void 0},"shiftedCandidate"),M=e((C,B)=>({x:C.x??(B.left+B.right)/2,y:C.y??(B.top+B.bottom)/2}),"nodeCenter"),A=e((C)=>{let B=C.edge,_=Et(B.points??[]);if(_.length!==4||C.index!==1)return;let Y=B.start?o.get(B.start):void 0,F=B.end?o.get(B.end):void 0,V=Y?fe(Y):void 0,z=F?fe(F):void 0,D=_.slice(C.index+2);if(!Y||!F||!V||!z||D.length===0)return;return{sourceCenter:M(Y,V),targetCenter:M(F,z),sourceRect:V,tail:D}},"sourceDetourContextFor"),v=e((C,B,_,Y,F,V)=>{let z=Y.y>=_.y,D=z?F.bottom:F.top,W=D+(z?20:-20);if(z&&C.b.y<=W+0.001||!z&&C.b.y>=W-0.001)return;let J=C.a.x+B;return Et([{x:_.x,y:D},{x:_.x,y:W},{x:J,y:W},{x:J,y:C.b.y},...V],0.001)},"verticalSourceDetour"),N=e((C,B,_,Y,F,V)=>{let z=Y.x>=_.x,D=z?F.right:F.left,W=D+(z?20:-20);if(z&&C.b.x<=W+0.001||!z&&C.b.x>=W-0.001)return;let J=C.a.y+B;return Et([{x:D,y:_.y},{x:W,y:_.y},{x:W,y:J},{x:C.b.x,y:J},...V],0.001)},"horizontalSourceDetour"),k=e((C,B)=>{let _=A(C);if(!_)return;if(C.vertical)return v(C,B,_.sourceCenter,_.targetCenter,_.sourceRect,_.tail);if(C.horizontal)return N(C,B,_.sourceCenter,_.targetCenter,_.sourceRect,_.tail);return},"sourceDetourCandidate"),w=[-7,7,-14,14,-21,21];for(let C=0;C<12;C++){let B=E(),_=!1;for(let Y=0;Y<B.length&&!_;Y++)for(let F=Y+1;F<B.length&&!_;F++){let V=B[Y],z=B[F];if(V.edge===z.edge||!b(V,z))continue;let D=[V,z].filter((W)=>W.interior);for(let W of D){for(let J of w){let st=d(W,J);if(st&&x(W.edge,st)){W.edge.points=st,_=!0;break}let xt=k(W,J);if(xt&&x(W.edge,xt)){W.edge.points=xt,_=!0;break}}if(_)break}}if(!_)return}}e(ao,"nudgeSharedInteriorSubpaths");function $s(n,o,s,i){let c=o.x-n.x,a=o.y-n.y,l=i.x-s.x,m=i.y-s.y,f=c*m-a*l;if(Math.abs(f)<0.0000000001)return!1;let g=s.x-n.x,y=s.y-n.y,I=(g*m-y*l)/f,E=(g*a-y*c)/f,b=0.01;return I>b&&I<1-b&&E>b&&E<1-b}e($s,"segmentsIntersect");function zs(n){let o=n.nodes??[],s=n.edges??[],i=[];if(!s.length||!o.length)return i;let c=ms(o),a=1,l=[];for(let f of s){if(f.isLayoutOnly)continue;let g=f.points;if(!g||g.length<2)continue;let{start:y,end:I,labelNodeId:E}=f,b=f.id??`${y}->${I}`;for(let x of c){if(x.nodeId===y||x.nodeId===I)continue;if(E&&x.nodeId===E)continue;for(let d=0;d<g.length-1;d++)if(Cn(g[d],g[d+1],x,-a)){i.push({type:"edge-node-overlap",edgeId:b,targetId:x.nodeId,detail:`segment ${d} passes through node "${x.nodeId}"`});break}}for(let x=0;x<g.length-1;x++)l.push({edgeId:b,start:y,end:I,p1:g[x],p2:g[x+1]})}let m=new Set;for(let f=0;f<l.length;f++)for(let g=f+1;g<l.length;g++){let y=l[f],I=l[g];if(y.edgeId===I.edgeId)continue;if(y.start===I.start||y.start===I.end||y.end===I.start||y.end===I.end)continue;if($s(y.p1,y.p2,I.p1,I.p2)){let E=y.edgeId<I.edgeId?`${y.edgeId}|${I.edgeId}`:`${I.edgeId}|${y.edgeId}`;if(!m.has(E))m.add(E),i.push({type:"edge-edge-crossing",edgeId:y.edgeId,targetId:I.edgeId,detail:`edges "${y.edgeId}" and "${I.edgeId}" cross`})}}if(i.length>0){let f=i.filter((y)=>y.type==="edge-node-overlap").length,g=i.filter((y)=>y.type==="edge-edge-crossing").length;t.warn(`[SWIMLANE_VALIDATE] ${i.length} issue(s) detected: ${f} edge-node overlap(s), ${g} edge crossing(s)`);for(let y of i)t.warn(`[SWIMLANE_VALIDATE] ${y.type}: ${y.detail}`)}return i}e(zs,"validateSwimlanesLayout");function Vs(n,o){let s=n.nodes??[],i=n.edges??[],c=s.filter((m)=>!m.isGroup);if((o==="LR"||o==="RL")&&c.length>0&&!Ns(n,o))return;if(o==="BT"&&c.length>0&&!As(n))return;for(let m of i){if(m.isLayoutOnly)continue;let f=m.points;if(!f||f.length<2)continue;m.points=Se(mn(f))}Xs(i,s),Gs(i,s),Os(i,s);let a=new Map;for(let m of s)a.set(String(m.id),m);dn(i,a),Is(i,a),Bs(i,a),ao(i,a),Ps(i,a),Fs(i,a),no(i,a),ks(i,a);let l=e(()=>{Ds(i,a),_s(i,a),Hs(i,a),dn(i,a),to(i,a),no(i,a),dn(i,a),to(i,a)},"finalizeRenderedEdges");l(),ao(i,a),l(),oo(i,a),so(i,a),oo(i,a),so(i,a)}e(Vs,"postProcessSwimlaneLayout");function Oe(n){let o=new Map(n.nodeById),s=new Set,i=[];for(let a of n.edges){if(!o.has(a.src)||!o.has(a.dst))continue;let l=`${a.id}:${a.src}->${a.dst}`;if(s.has(l))continue;s.add(l),i.push(a)}return{nodes:[...o.keys()],edges:i,layout:n.layout,nodeById:o}}e(Oe,"normalizeGraph");function Oo(n,o){return n.edges.filter((s)=>s.dst===o)}e(Oo,"incoming");function js(n){let o=new Map;for(let s of n.nodes)o.set(s,[]);for(let s of n.edges)o.get(s.src).push(s.dst);return o}e(js,"buildSuccessorMap");function Bo(n){let o=js(n);for(let s of o.values())s.sort((i,c)=>i.localeCompare(c));return o}e(Bo,"buildSortedSuccessorMap");function Po(n){let o=new Map;for(let s of n.nodes)o.set(s,0);for(let s of n.edges)o.set(s.dst,(o.get(s.dst)??0)+1);return o}e(Po,"buildInDegreeMap");function Fo(n){return[...n.entries()].filter(([,o])=>o===0).map(([o])=>o).sort((o,s)=>o.localeCompare(s))}e(Fo,"sortedZeroInDegreeNodes");function Ln(n,o=()=>!0){let s=new Map,i=new Map;for(let c of n.nodes)s.set(c,[]),i.set(c,[]);for(let c of n.edges){if(!o(c))continue;i.get(c.src).push(c.dst),s.get(c.dst).push(c.src)}return{preds:s,succs:i}}e(Ln,"buildPredecessorSuccessorMaps");function ko(n,o,s,i){let c=0;for(let l of n.nodes){if(i?.skipGroups&&n.nodeById.get(l)?.isGroup)continue;c=Math.max(c,s[l]??0)}let a=Array.from({length:c+1},()=>[]);for(let l of o){if(i?.skipGroups&&n.nodeById.get(l)?.isGroup)continue;a[Math.max(0,s[l]??0)].push(l)}return a}e(ko,"buildLayersFromRanks");function We(n){let o=Po(n),s=Fo(o),i=[],c=Bo(n);while(s.length){let a=s.shift();i.push(a);for(let l of c.get(a)??[])if(o.set(l,(o.get(l)??0)-1),(o.get(l)??0)===0){let m=0;while(m<s.length&&s[m]<l)m++;s.splice(m,0,l)}}return i.length===n.nodes.length?i:null}e(We,"topoSortIfAcyclic");function je(n){let o=new Map,s=0;for(let i of n)o.set(i,s),s++;return o}e(je,"buildLayerIndex");function _o(n){let o=Array(n.length),s=e((i,c)=>{if(c-i<=1)return 0;let a=i+c>>1,l=s(i,a)+s(a,c),m=i,f=a,g=i;while(m<a||f<c)if(f>=c||m<a&&n[m]<=n[f])o[g++]=n[m++];else o[g++]=n[f++],l+=a-m;for(let y=i;y<c;y++)n[y]=o[y];return l},"count");return s(0,n.length)}e(_o,"countInversions");function Us(n){let o=Oe(n),s=new Map;for(let y of o.nodes)s.set(y,[]);for(let y of o.edges)s.get(y.src).push(y);for(let y of s.values())y.sort((I,E)=>I.dst===E.dst?I.id.localeCompare(E.id):I.dst.localeCompare(E.dst));let i=Object.create(null);for(let y of o.nodes)i[y]=0;let c=[],a=e((y)=>{i[y]=1;for(let I of s.get(y)??[]){let E=I.dst;if(i[E]===0)a(E);else if(i[E]===1)c.push(I)}i[y]=2},"dfs"),l=[...o.nodes].sort((y,I)=>y.localeCompare(I));for(let y of l)if(i[y]===0)a(y);let m=new Set(c.map((y)=>`${y.id}:${y.src}->${y.dst}`)),f=o.edges.map((y)=>m.has(`${y.id}:${y.src}->${y.dst}`)?{id:y.id,src:y.dst,dst:y.src,weight:y.weight,ref:y.ref}:y);return{acyclic:{nodes:[...o.nodes],edges:f,layout:o.layout,nodeById:new Map(o.nodeById)},reversed:c}}e(Us,"removeCycles_DFS");function Ws(n){let o=new Map,s=e((i)=>{if(o.has(i))return o.get(i);let c=n.nodeById.get(i);if(!c)return o.set(i,null),null;let a=c.parentId;if(!a)return o.set(i,null),null;let m=s(a)??a;return o.set(i,m),m},"resolve");for(let i of n.nodes)s(i);return o}e(Ws,"buildTopLaneMap");function ve(n){let o=Ws(n);return(s)=>o.get(s)??null}e(ve,"createTopLaneResolver");function En(n){let o=[];for(let s of n.layout.nodes??[])if(s.isGroup&&!s.parentId)o.push(s.id);return[...new Set(o)].reverse()}e(En,"buildTopLaneOrder");function Ho(n,o){let s=En(n);if(!o||o.length===0)return s;let i=new Set(s),c=new Set,a=[];for(let l of o){if(!i.has(l)||c.has(l))continue;c.add(l),a.push(l)}for(let l of s){if(c.has(l))continue;a.push(l)}return a}e(Ho,"resolveTopLaneOrder");var Qr={EPSILON:0.000001},In={GRAVITY_ITERATIONS:8,MAX_CROSSING_OPTIMIZATION_PASSES:4,DEFAULT_COMPACT_SINGLE_INPUT:!0},qo={DEFAULT_LAYER_GAP:100,DEFAULT_NODE_GAP:40};function Ks(n,o){let s=Oe(n),i=o?.laneOf??(()=>null),c=o?.rankHint,{preds:a}=Ln(s);for(let w of a.values())w.sort((C,B)=>C.localeCompare(B));let l=We(s)??[...s.nodes].sort((w,C)=>w.localeCompare(C)),m=new Map;for(let[w,C]of l.entries())m.set(C,w);let f=new Map,g=new Map;for(let w of s.nodes)g.set(w,[]);for(let w of l){let C=(a.get(w)??[]).filter((B)=>f.has(B));if(C.length>0){let B=qs(w,C,{laneOf:i,rankHint:c,topoIndex:m});f.set(w,B),g.get(B).push(w)}else if(!f.has(w))f.set(w,null)}for(let w of s.nodes)if(!f.has(w))f.set(w,null);let y=new Set;for(let w of s.nodes)if((f.get(w)??null)===null)y.add(w);let I=[...y].sort((w,C)=>{let B=m.get(w)??0,_=m.get(C)??0;if(B===_)return w.localeCompare(C);return B-_}),E=Js(s),b=new Map;for(let[w,C]of E.entries())b.set(w,[...C].sort((B,_)=>B.localeCompare(_)));let x=Zs(b),d=Qs(b),M=new Map;for(let w of s.nodes)M.set(w,[]);for(let w of d)for(let C of w.nodes){let B=M.get(C);if(B)B.push(w.id);else M.set(C,[w.id])}let A=[],v=[],N=new Set,k=e((w)=>{if(N.has(w))return;N.add(w),A.push(w);for(let C of g.get(w)??[])k(C);v.push(w)},"walk");for(let w of I)k(w);for(let w of l)k(w);return{parent:f,children:g,roots:I,componentOf:x,blocks:d,nodeBlocks:M,adjacency:b,preorder:A,postorder:v,topologicalOrder:l}}e(Ks,"buildDrivingTree");function qs(n,o,s){let i=s.laneOf(n);return[...o].sort((a,l)=>{let m=s.laneOf(a),f=s.laneOf(l),g=m!=null&&m===i,y=f!=null&&f===i;if(g!==y)return g?-1:1;let I=s.rankHint?.[a],E=s.rankHint?.[l];if(I!=null&&E!=null&&I!==E)return E-I;let b=s.topoIndex.get(a)??0,x=s.topoIndex.get(l)??0;if(b!==x)return b-x;return a.localeCompare(l)})[0]}e(qs,"chooseParent");function Js(n){let o=new Map;for(let s of n.nodes)o.set(s,new Set);for(let s of n.edges)o.get(s.src).add(s.dst),o.get(s.dst).add(s.src);return o}e(Js,"buildAdjacency");function Zs(n){let o=new Map,s=0;for(let i of n.keys()){if(o.has(i))continue;let c=[i];while(c.length>0){let a=c.pop();if(o.has(a))continue;o.set(a,s);for(let l of n.get(a)??[])if(!o.has(l))c.push(l)}s++}return o}e(Zs,"assignComponents");function Qs(n){let o=new Map,s=new Map,i=[],c=[],a=0,l=e((m,f)=>{o.set(m,++a),s.set(m,a);for(let g of n.get(m)??[]){if(g===f)continue;if(!o.has(g)){if(i.push([m,g]),l(g,m),s.set(m,Math.min(s.get(m)??a,s.get(g)??a)),(s.get(g)??0)>=(o.get(m)??0))c.push(tr(m,g,i,c.length))}else if((o.get(g)??0)<(o.get(m)??0))i.push([m,g]),s.set(m,Math.min(s.get(m)??a,o.get(g)??a))}},"visit");for(let m of n.keys())if(!o.has(m))l(m,null);return c}e(Qs,"computeBlocks");function tr(n,o,s,i){let c=[],a=new Set;while(s.length>0){let l=s.pop();if(c.push(l),a.add(l[0]),a.add(l[1]),l[0]===n&&l[1]===o||l[0]===o&&l[1]===n)break}return{id:i,edges:c,nodes:[...a]}}e(tr,"popBlock");function er(n,o,s){let i=[...n.nodes],c=new Map;for(let[v,N]of i.entries())c.set(N,v);let a=i.length,l=Array(a).fill(-1),m=Array(a).fill(0),f=[],g=new Set;for(let v of i){let N=s.parent.get(v)??null,k=c.get(v);if(k==null)continue;if(N==null){if(l[k]=-1,m[k]=0,!g.has(v))g.add(v),f.push(v)}}while(f.length>0){let v=f.shift(),N=c.get(v);if(N==null)continue;let k=s.children.get(v)??[];for(let w of k){if(g.has(w))continue;let C=c.get(w);if(C==null)continue;l[C]=N,m[C]=m[N]+1,g.add(w),f.push(w)}}for(let v of i){if(g.has(v))continue;let N=c.get(v);if(N==null)continue;l[N]=-1,m[N]=0,g.add(v)}let y=Math.max(1,Math.ceil(Math.log2(Math.max(1,a)))+1),I=Array.from({length:y},()=>Array(a).fill(-1));for(let v=0;v<a;v++)I[0][v]=l[v];for(let v=1;v<y;v++)for(let N=0;N<a;N++){let k=I[v-1][N];I[v][N]=k===-1?-1:I[v-1][k]}let E=e((v,N)=>{if(v===-1||N===-1)return-1;if(m[v]<m[N])[v,N]=[N,v];let k=m[v]-m[N];for(let w=0;w<y;w++)if(k>>w&1){if(v=I[w][v],v===-1)return-1}if(v===N)return v;for(let w=y-1;w>=0;w--){let C=I[w][v],B=I[w][N];if(C===-1||B===-1)continue;if(C!==B)v=C,N=B}return I[0][v]},"lcaIndex"),b=Array.from({length:a},()=>new Map);for(let v of n.edges){let{src:N,dst:k}=v,w=o[N],C=o[k];if(w==null||C==null)continue;if(w>C)[N,k]=[k,N],[w,C]=[C,w];if(w==null||C==null||w===C)continue;let B=c.get(N),_=c.get(k);if(B==null||_==null)continue;let Y=E(B,_);if(Y===-1)continue;let F=b[Y];for(let V=w;V<C;V++)F.set(V,(F.get(V)??0)+1)}let x=new Map,d=e((v,N)=>{if(N.size===0)return;for(let[k,w]of N)v.set(k,(v.get(k)??0)+w)},"mergeInto"),M=new Set,A=e((v)=>{let N=c.get(v);M.add(v);let k=N==null?void 0:b[N],w=k?new Map(k):new Map,C=s.children.get(v)??[];for(let B of C){let _=A(B),Y=o[v];if(Y!=null){let F=x.get(v);if(!F)F=new Map,x.set(v,F);let V=_.get(Y)??0,z=o[B];if(z!=null&&z>Y)V+=1;F.set(B,V)}d(w,_)}return w},"dfs");for(let v of s.roots)if(!M.has(v))A(v);for(let v of i)if(!M.has(v))A(v);return x}e(er,"computeSubtreeCrossCounts");function nr(n,o,s){let i=new Map,c=e((a)=>{let l=s[a]??0,m=[...o.get(a)??[]];m.sort(Do(s));for(let f of m){c(f);let g=i.get(f);if(g!=null)l=Math.min(l,g)}i.set(a,l)},"annotate");for(let a of n)c(a);return i}e(nr,"annotateMinimumLayers");function Do(n){return(o,s)=>{let i=n[o]??0,c=n[s]??0;return i===c?o.localeCompare(s):i-c}}e(Do,"compareByRankThenId");function or(n,o,s,i){let c=0;for(let f of o){let g=s[f]??0;if(g>c)c=g}let a=Array.from({length:c+1},()=>[]),l=new Set,m=e((f)=>{if(l.has(f))return;l.add(f);let g=s[f]??0;if(!a[g])a[g]=[];a[g].push(f);for(let y of i(f))m(y)},"emit");for(let f of n)m(f);for(let f of o)if(!l.has(f)){let g=s[f]??0;if(!a[g])a[g]=[];a[g].push(f),l.add(f)}return a}e(or,"emitNodesInTreeOrder");function sr(n){let o=[];for(let s of n){let i=new Set,c=[];for(let a of s){if(i.has(a))continue;i.add(a),c.push(a)}o.push(c)}return o}e(sr,"deduplicateLayers");function rr(n,o,s,i){return(c)=>{let a=n.get(c)??[];if(a.length===0)return[];let l=o[c]??0,m=[],f=[],g=s.get(c);for(let y of a){let I=i.get(y)??l;if(I>l)m.push({child:y,min:I});else f.push(y)}return m.sort((y,I)=>{if(y.min===I.min)return y.child.localeCompare(I.child);return y.min-I.min}),f.sort((y,I)=>{let E=g?.get(y)??0,b=g?.get(I)??0;if(E!==b)return E-b;let x=i.get(y)??l,d=i.get(I)??l;if(x!==d)return x-d;return y.localeCompare(I)}),[...m.map((y)=>y.child),...f]}}e(rr,"createChildOrderer");function Sn(n,o,s){let i=Ks(n,{rankHint:o,laneOf:s}),{children:c,roots:a}=i;for(let I of n.nodes)if(!c.has(I))c.set(I,[]);let l=er(n,o,i),m=[...a].sort(Do(o)),f=nr(m,c,o),g=rr(c,o,l,f),y=or(m,n.nodes,o,g);return y=sr(y),y}e(Sn,"buildMultitreeLayerOrder");function ir(n,o,s){let i=new Set(n),c=new Set(o),a=je(o),l=[];for(let m of s)if(i.has(m.src)&&c.has(m.dst))l.push(a.get(m.dst));return _o(l)}e(ir,"countCrossingsBetweenAdjacent");function lo(n,o,s){let i=[];for(let a of o){let l=s[a.src],m=s[a.dst];if(l==null||m==null||l===m)continue;let{src:f,dst:g}=a,y=l,I=m;if(l>m)f=a.dst,g=a.src,y=m,I=l;for(let E=y;E<I;E++)i.push({id:`${a.id}@${E}`,src:f,dst:g,ref:a.ref})}let c=0;for(let a=0;a+1<n.length;a++)c+=ir(n[a],n[a+1],i);return c}e(lo,"totalCrossings");function cr(n,o){let s={...o},{preds:i}=Ln(n),c=ve(n),a=Sn(n,s,c),l=lo(a,n.edges,s),m=In.MAX_CROSSING_OPTIMIZATION_PASSES;for(let f=0;f<m;f++){let g=!1,y=[...n.nodes].sort((I,E)=>(s[E]??0)-(s[I]??0));for(let I of y){let E=s[I]??0;if(E===0)continue;let b=0;for(let A of i.get(I)??[])b=Math.max(b,(s[A]??0)+1);if(b>=E)continue;let x=E;s[I]=b;let d=Sn(n,s,c),M=lo(d,n.edges,s);if(M<l)l=M,g=!0;else s[I]=x}if(!g)break}return s}e(cr,"optimizeRanksByCrossings");function ar(n,o){let s=ve(n),i=[...n.nodes].sort((c,a)=>(o[c]??0)-(o[a]??0)||c.localeCompare(a));for(let c of i){let a=s(c);if(!a)continue;let l=n.edges.filter((d)=>d.src===c);if(l.length===0)continue;let m=!1,f=0;for(let d of l){let M=s(d.dst);if(M==null||M===a)m=!0;else f++}if(f===0||m)continue;let g=0,y=!1;for(let d of n.edges){if(d.dst!==c)continue;let M=s(d.src);if(!M)continue;if(M===a)y=!0;else g++}if(g>0||!y)continue;let I=o[c]??0,E=I+f,b=0;for(let d of n.edges)if(d.dst===c)b=Math.max(b,(o[d.src]??0)+1);let x=Math.max(I,b,E);if(x!==I)o[c]=x}}e(ar,"adjustCrossLaneSources");function lr(n,o){let s=Oe(n),i=We(s)??[...s.nodes].sort(),c=o?.compactSingleInput??!1,a=ve(s),l=Object.create(null);for(let f of i){let g=Oo(s,f),y=o?.ignoreCrossLaneEdges?g.filter((I)=>{let E=a(I.src),b=a(f);if(!E||!b)return!0;return E===b}):g;if(y.length===0)l[f]=0;else if(c&&y.length===1){let I=y[0].src,E=a(I),b=a(f);if(E!==b)l[f]=l[I]??0;else l[f]=(l[I]??0)+1}else{let I=-1/0;for(let E of y)I=Math.max(I,(l[E.src]??0)+1);l[f]=I===-1/0?0:I}}if(o?.optimizeRanksByCrossings??!1)l=cr(s,l);if(o?.ignoreCrossLaneEdges)ar(s,l);return{layers:Sn(s,l,a),rankOf:l,dummy:new Set}}e(lr,"assignLayers_LongestPath");function fr(n,o){let s=Oe(n),c={...lr(s,{compactSingleInput:o?.compactSingleInput,ignoreCrossLaneEdges:o?.ignoreCrossLaneEdges,optimizeRanksByCrossings:o?.optimizeRanksByCrossings}).rankOf},a=ve(s),{preds:l,succs:m}=Ln(s,(x)=>{if(o?.ignoreCrossLaneEdges){let d=a(x.src),M=a(x.dst);if(d&&M&&d!==M)return!1}return!0}),f=We(s)??[...s.nodes],g=[...f].reverse(),y=e((x,d)=>{let M=0;for(let N of l.get(x)??[])M=Math.max(M,(c[N]??0)+1);let A=Number.POSITIVE_INFINITY,v=m.get(x)??[];if(v.length>0)A=Math.min(...v.map((N)=>(c[N]??0)-1));if(!Number.isFinite(A))A=Math.max(M,d);return Math.min(Math.max(d,M),A)},"clampFeasible"),I=In.GRAVITY_ITERATIONS,E=e((x)=>{let d=!1;for(let M of x){let A=l.get(M)??[],v=m.get(M)??[];if(A.length===0&&v.length===0)continue;let N=A.length>0?A.reduce((B,_)=>B+(c[_]??0)+1,0)/A.length:c[M]??0,k=v.length>0?v.reduce((B,_)=>B+(c[_]??0)-1,0)/v.length:c[M]??0,w=Math.round((N+k)/2),C=y(M,w);if(C!==c[M])c[M]=C,d=!0}return d},"relaxOrder");for(let x=0;x<I;x++){let d=E(f),M=E(g);if(!d&&!M)break}for(let x of f){let d=0;for(let M of l.get(x)??[])d=Math.max(d,(c[M]??0)+1);if((c[x]??0)<d)c[x]=d}for(let x of g){let d=m.get(x)??[];if(d.length>0){let M=Math.min(...d.map((A)=>(c[A]??0)-1));if((c[x]??0)>M)c[x]=M}}return{layers:ko(s,f,c),rankOf:c,dummy:new Set}}e(fr,"assignLayers_Gravity");function dr(n){let o=Po(n),s=Bo(n),i=Fo(o),c=[];while(i.length>0){let a=[];for(let l of i){c.push(l);for(let m of s.get(l)??[])if(o.set(m,(o.get(m)??0)-1),(o.get(m)??0)===0)a.push(m)}i=a.sort((l,m)=>l.localeCompare(m))}return c.length===n.nodes.length?c:null}e(dr,"topoSortByGenerationIfAcyclic");function ur(n,o){let s=Oe(n),i=o?.direction==="LR"?dr(s)??[...s.nodes].sort():We(s)??[...s.nodes].sort(),c=ve(s),a=e((y)=>c(y)??y,"laneOf"),l=Object.create(null),m=new Map,f=e((y,I)=>{if(o?.ignoreCrossLaneEdges??!0)return a(y)===a(I)?1:0;return 1},"edgeWeight");for(let y of i){if(s.nodeById.get(y)?.isGroup)continue;let E=Oo(s,y),b=0;if(E.length>0)for(let A of E){let v=A.src,N=l[v]??0;b=Math.max(b,N+f(v,y))}let x=a(y),d=m.get(x)??0,M=Math.max(b,d);l[y]=M,m.set(x,M+1)}return{layers:ko(s,i,l,{skipGroups:!0}),rankOf:l,dummy:new Set}}e(ur,"assignLayers_LaneAwareCompact");function hr(n,o){let s=Oe(o),{rankOf:i}=n,c=n.layers.map((b)=>[...b]),a=new Set(n.dummy?[...n.dummy]:[]),l=0,m=new Map(s.nodeById),f=e((b)=>{let x=`placeholder-${l++}`,d={id:x,isGroup:!1,isDummy:!0,width:0,height:0};m.set(x,d),a.add(x);while(c.length<=b)c.push([]);return c[b].push(x),i[x]=b,x},"addDummyAt"),g=[...s.edges].sort((b,x)=>b.id===x.id?b.src===x.src?b.dst.localeCompare(x.dst):b.src.localeCompare(x.src):b.id.localeCompare(x.id)),y=[];for(let b of g){let x=i[b.src]??0,d=i[b.dst]??0;if(d-x<=1){y.push(b);continue}let M=b.src;for(let v=x+1,N=0;v<d;v++,N++){let k=f(v);y.push({id:`${b.id}#${N}`,src:M,dst:k,weight:b.weight,ref:b.ref}),M=k}let A=d-x-2;y.push({id:`${b.id}#${Math.max(A+1,0)}`,src:M,dst:b.dst,weight:b.weight,ref:b.ref})}let E={nodes:[...s.nodes,...[...a].filter((b)=>!s.nodes.includes(b))],edges:y,layout:s.layout,nodeById:m};return{layering:{layers:c,rankOf:i,dummy:a},graphWithDummies:E}}e(hr,"makeProperLayering");function fo(n){let o=n.length;if(o===0)return Number.POSITIVE_INFINITY;let s=[...n].sort((i,c)=>i-c);if(o%2===1)return s[(o-1)/2];return 0.5*(s[o/2-1]+s[o/2])}e(fo,"median");function uo(n){if(n.length===0)return Number.POSITIVE_INFINITY;return n.reduce((s,i)=>s+i,0)/n.length}e(uo,"barycenter");function gr(n,o,s,i){let c=new Map;for(let a of n)c.set(a,[]);for(let a of s)if(i==="down"){if(o.has(a.src)&&c.has(a.dst))c.get(a.dst).push(o.get(a.src))}else if(o.has(a.dst)&&c.has(a.src))c.get(a.src).push(o.get(a.dst));return c}e(gr,"neighborPositionsFor");function pr(n,o,s){let i=s.get(n)??0,c=s.get(o)??0;return i!==c?i-c:n.localeCompare(o)}e(pr,"currentOrderTieBreak");function ho(n,o,s){let i=new Set(n),c=new Set(o),a=je(n),l=je(o),m=[];for(let g of s)if(i.has(g.src)&&c.has(g.dst))m.push({u:a.get(g.src),v:l.get(g.dst)});m.sort((g,y)=>g.u===y.u?g.v-y.v:g.u-y.u);let f=m.map((g)=>g.v);return _o(f)}e(ho,"countCrossingsBetweenAdjacent");function un(n,o,s){return[...n].sort((i,c)=>{let a=fo(o.get(i)??[]),l=fo(o.get(c)??[]);if(a===l)return pr(i,c,s);if(!isFinite(a))return 1;if(!isFinite(l))return-1;return a-l})}e(un,"sortByHeuristic");function go(n,o,s,i,c,a){let l=je(n),m=je(o),f=gr(o,l,s,i);if(!c||!a||a.length===0)return un(o,f,m);let g=new Map;for(let E of o){let b=c(E),x=g.get(b)??[];x.push(E),g.set(b,x)}let y=[];for(let E of a){let b=g.get(E);if(!b||b.length===0)continue;let x=un(b,f,m);y.push(...x)}let I=g.get(null);if(I&&I.length>0){let E=un(I,f,m);for(let b of E){let x=uo(f.get(b)??[]),d=y.length;if(isFinite(x))for(let[M,A]of y.entries()){let v=uo(f.get(A)??[]);if(x<v){d=M;break}}y.splice(d,0,b)}}return y}e(go,"reorderLayer");function po(n,o,s,i,c){let a=[...o],l=new Set(n),m=new Set(o),f=i?new Set(i):null,g=s.filter((d)=>l.has(d.src)&&m.has(d.dst)),y=f?s.filter((d)=>m.has(d.src)&&f.has(d.dst)):void 0,I=e((d)=>{let M=ho(n,d,g);if(y&&i)M+=ho(d,i,y);return M},"crossingScore"),E=c?new Map:null;if(c&&E)for(let d of o)E.set(d,c(d));let b=!0,x=I(a);while(b){b=!1;for(let d=0;d+1<a.length;d++){if(E){let v=E.get(a[d]),N=E.get(a[d+1]);if(v!==N)continue}let M=x;[a[d],a[d+1]]=[a[d+1],a[d]];let A=I(a);if(A<M)x=A,b=!0;else[a[d],a[d+1]]=[a[d+1],a[d]]}}return a}e(po,"transposeImprove");function mr(n,o,s){let i=n.layers.map((m)=>[...m]),c=o.edges,a=ve(o),l=Ho(o,s?.laneOrder);for(let m=0;m<3;m++){for(let f=1;f<i.length;f++)i[f]=go(i[f-1],i[f],c,"down",a,l),i[f]=po(i[f-1],i[f],c,i[f+1],a);for(let f=i.length-2;f>=0;f--)i[f]=go(i[f+1],i[f],c,"up",a,l),i[f]=po(i[f+1],i[f],c,i[f-1],a)}return{layers:i}}e(mr,"orderLayers");function yr(n,o,s){let i=s?.layerGap??qo.DEFAULT_LAYER_GAP,c=s?.nodeGap??qo.DEFAULT_NODE_GAP,a=s?.laneGap??c*2,l=s?.direction??"TB",m=l==="LR"||l==="RL",f=n.layers,g=Object.create(null),y=Object.create(null),I=e((F)=>o.nodeById.get(F),"getNode"),E=e((F)=>I(F)?.width??0,"getWidth"),b=e((F)=>I(F)?.height??0,"getHeight"),x=ve(o),d=Ho(o,s?.laneOrder),M=f.map((F)=>F.reduce((V,z)=>Math.max(V,b(z)),0)),A=[];if(m)for(let F=0;F+1<f.length;F++){let V=f[F].reduce((Tt,$t)=>Math.max(Tt,E($t)),0),z=f[F+1].reduce((Tt,$t)=>Math.max(Tt,E($t)),0),D=M[F],W=M[F+1],J=D/2+W/2,st=(V+z)/2,xt=Math.max(0,st-J-i);A.push(xt)}let v=new Set;for(let F of f)for(let V of F)v.add(x(V));let N=v.has(null),k=d.filter((F)=>v.has(F)),w=[...N?[null]:[],...k],C=Object.create(null);for(let F of k)C[F]=0;if(N)C.null=0;for(let F of f){let V=Object.create(null),z=[];for(let D of F){let W=x(D);if(W===null)z.push(D);else(V[W]||=[]).push(D)}for(let[D,W]of Object.entries(V)){let J=W.reduce((st,xt)=>st+E(xt),0)+c*Math.max(0,W.length-1);C[D]=Math.max(C[D]??0,J)}if(N&&z.length){let D=z.reduce((W,J)=>W+E(J),0)+c*Math.max(0,z.length-1);C.null=Math.max(C.null??0,D)}}let B=new Map;{let F=w.map((D)=>(D===null?C.null:C[D])??0),z=-(F.reduce((D,W)=>D+W,0)+a*Math.max(0,w.length-1))/2;for(let D=0;D<w.length;D++){let W=w[D],J=F[D]??0,st=z+J/2;if(B.set(W,st),z+=J,D<w.length-1)z+=a}}let _=0;for(let[F,V]of f.entries()){let z=M[F]??0,D=new Map;for(let J of V){let st=x(J),xt=D.get(st)??[];xt.push(J),D.set(st,xt)}for(let J of w){let st=D.get(J)??[];if(st.length===0)continue;let xt=B.get(J);if(st.length===1){let Tt=st[0];g[Tt]=xt,y[Tt]=_+z/2}else{let Tt=st.map((lt)=>E(lt)),$t=Tt.reduce((lt,ot)=>lt+ot,0)+c*(st.length-1),Ut=xt-$t/2;for(let[lt,ot]of st.entries()){let dt=Tt[lt];g[ot]=Ut+dt/2,y[ot]=_+z/2,Ut+=dt+c}}}let W=A[F]??0;_+=z+i+W}let Y=new Map;for(let F of o.edges){let V=F.ref.id;if(!Y.has(V))Y.set(V,[]);Y.get(V).push(F)}for(let[,F]of Y){if(F.length===0)continue;let V=F[0].ref,{start:z,end:D}=V;if(z==null||D==null)continue;let W=Math.round(((g[z]??0)+(g[D]??0))/2),J=new Set;for(let st of F)J.add(st.src),J.add(st.dst);for(let st of J){if(st===z||st===D)continue;if(o.nodeById.get(st)?.isDummy)g[st]=W}}return{x:g,y}}e(yr,"assignCoordinates");var xr=8;function br(n){let o=2166136261;for(let s=0;s<n.length;s++)o^=n.charCodeAt(s),o=Math.imul(o,16777619);return o>>>0}e(br,"hashString");function Mr(n){let o=n>>>0;return()=>{o+=1831565813;let s=o;return s=Math.imul(s^s>>>15,s|1),s^=s+Math.imul(s^s>>>7,s|61),((s^s>>>14)>>>0)/4294967296}}e(Mr,"mulberry32");function Ir(n,o){let s=[...n],i=Mr(o);for(let c=s.length-1;c>0;c--){let a=Math.floor(i()*(c+1));[s[c],s[a]]=[s[a],s[c]]}return s}e(Ir,"deterministicShuffle");function Sr(n,o){let s=0;for(let[i,c]of n.entries())s+=Math.abs(i-(o.get(c)??i));return s}e(Sr,"sourceDistance");function mo(n,o){let s=new Map;for(let[c,a]of n.entries())s.set(a,c);let i=0;for(let{a:c,b:a,weight:l}of o){let m=s.get(c),f=s.get(a);if(m==null||f==null)continue;i+=l*Math.abs(m-f)}return i}e(mo,"laneArrangementCost");function Cr(n){let o=En(n);if(o.length<2)return[];let s=new Map(o.map((a,l)=>[a,l])),i=ve(n),c=new Map;for(let a of n.layout.edges??[]){if(a.isLayoutOnly)continue;let l=typeof a.start==="string"?a.start:void 0,m=typeof a.end==="string"?a.end:void 0;if(!l||!m||!n.nodeById.has(l)||!n.nodeById.has(m))continue;let f=i(l),g=i(m);if(!f||!g||f===g)continue;let y=s.get(f),I=s.get(g);if(y==null||I==null)continue;let[E,b]=y<=I?[f,g]:[g,f],x=`${E}\x00${b}`,d=c.get(x);if(d)d.weight++;else c.set(x,{a:E,b,weight:1})}return[...c.values()]}e(Cr,"buildWeightedLaneEdges");function yo(n,o,s){let i=[...n],c=mo(i,o),a=!0,l=0,m=Math.max(1,i.length);while(a&&l<m){a=!1,l++;for(let f=0;f+1<i.length;f++){[i[f],i[f+1]]=[i[f+1],i[f]];let g=mo(i,o);if(g<c)c=g,a=!0;else[i[f],i[f+1]]=[i[f+1],i[f]]}}return{order:i,cost:c,sourceDistance:Sr(i,s)}}e(yo,"greedySwitch");function vr(n,o){if(n.cost!==o.cost)return n.cost<o.cost;return n.sourceDistance<o.sourceDistance}e(vr,"isBetterCandidate");function Lr(n,o,s){let i=[...o].sort((c,a)=>c.a===a.a?c.b.localeCompare(a.b):c.a.localeCompare(a.a)).map(({a:c,b:a,weight:l})=>`${c}:${a}:${l}`).join("|");return br(`${n.join("|")}#${i}#${s}`)}e(Lr,"seedForRestart");function Er(n,o={}){let s=En(n);if(s.length<2)return s;let i=Cr(n);if(i.length===0)return s;let c=new Map(s.map((m,f)=>[m,f])),a=yo(s,i,c),l=Math.max(0,o.restarts??xr);for(let m=0;m<l;m++){let f=Lr(s,i,m),g=Ir(s,f),y=yo(g,i,c);if(vr(y,a))a=y}return a.order}e(Er,"optimizeTopLaneOrder");function Tr(n,o){let s=o?.ignoreCrossLaneEdges??!0,i=o?.optimizeRanksByCrossings??!0,c=Oe(n),a=o?.automaticLaneOrdering?Er(c,{restarts:xr}):void 0,l=Us(c),m=l.acyclic,f=s?ur(m,{compactSingleInput:o?.compactSingleInput??In.DEFAULT_COMPACT_SINGLE_INPUT,ignoreCrossLaneEdges:!0,direction:o?.direction}):fr(m,{compactSingleInput:o?.compactSingleInput??In.DEFAULT_COMPACT_SINGLE_INPUT,ignoreCrossLaneEdges:!1,optimizeRanksByCrossings:i}),{layering:g,graphWithDummies:y}=hr(f,m),I=mr(g,y,{laneOrder:a}),E=yr(I,y,{layerGap:o?.layerGap,nodeGap:o?.nodeGap,direction:o?.direction,laneOrder:a});return{acyclic:m,reversed:l.reversed,layering:g,ordered:I,coordinates:E}}e(Tr,"sugiyamaLayout");var bt=Qr.EPSILON,ti=8,Pe=15,Ge=15,fn=25,me=20,Dn=10;function xo(n,o,s){let i=n.x??0,c=n.y??0,a=o.x-i,l=o.y-c,m=Math.abs(a),f=Math.abs(l);if(m<bt&&f<bt)return s;let g=3;if(f>bt&&f*g>=m)return l>0?"bottom":"top";if(m>bt)return a>0?"right":"left";return s}e(xo,"chooseOrthogonalSide");function bo(n,o){return Math.abs(n.to-o.from)<bt||Math.abs(n.to-o.to)<bt?n.to:n.from}e(bo,"sharedLineEndpointCoord");function Fe(n,o){return n.orient==="vertical"?{x:n.coord,y:o}:{x:o,y:n.coord}}e(Fe,"pointOnLine");function wr(n,o){let s=n.nodes??[],i=n.edges??[],c=[];for(let p of i){if(p.isLayoutOnly)continue;c.push({...p,__originalEdge:p})}let a=new Map,l=new Map,m=[],f=o==="LR";for(let p of s)a.set(p.id,p);let g=s.filter((p)=>p.isGroup&&!p.parentId);for(let p of g){let S={id:p.id},R=e((O)=>{l.set(O.id,S),s.filter((P)=>P.parentId===O.id).forEach(R)},"assignLane");R(p)}let y=s.filter((p)=>!p.isGroup&&!p.isEdgeLabel).map((p)=>{let S=p.width??10,R=p.height??10,O=p.x??0,P=p.y??0,G=ti;return{nodeId:p.id,minX:O-S/2-G,maxX:O+S/2+G,minY:P-R/2-G,maxY:P+R/2+G,visualXHalfExtent:f?R/2+G:S/2+G}}),I=e((p,S,R,O)=>{let P=m.find((G)=>G.orientation===p&&Math.abs(G.coord-S)<1);if(!P)P={id:`pipe-${p}-${S.toFixed(0)}`,orientation:p,coord:S,spanMin:R,spanMax:O,tracks:[]},m.push(P);return P.spanMin=Math.min(P.spanMin,R),P.spanMax=Math.max(P.spanMax,O),P},"getOrAddPipe"),E=e((p,S)=>{let R=p.width??10,O=p.height??10,P=p.x??0,G=p.y??0;switch(S){case"top":return{x:P,y:G-O/2};case"bottom":return{x:P,y:G+O/2};case"left":return{x:P-R/2,y:G};case"right":return{x:P+R/2,y:G}}},"portForSide"),b=e((p,S,R)=>E(p,xo(p,S,R?"bottom":"top")),"getOrthogonalPort"),x=[],d=[],M=new Set,A=1000,v=e((p,S,R)=>{if(x.length===0)return 0;let O=Math.abs(S.y-R.y)<bt,P=Math.abs(S.x-R.x)<bt;if(!O&&!P)return 0;let G=0;if(O){let nt=S.y,it=Math.min(S.x,R.x)-bt,tt=Math.max(S.x,R.x)+bt;if(tt<=it)return 0;for(let q of x){if(q.edgeIndex===p||q.orientation!=="vertical")continue;if(q.pipe.coord<it||q.pipe.coord>tt)continue;if(q.from-bt<=nt&&q.to+bt>=nt)G+=A}}else if(P){let nt=S.x,it=Math.min(S.y,R.y)-bt,tt=Math.max(S.y,R.y)+bt;if(tt<=it)return 0;for(let q of x){if(q.edgeIndex===p||q.orientation!=="horizontal")continue;if(q.pipe.coord<it||q.pipe.coord>tt)continue;if(q.from-bt<=nt&&q.to+bt>=nt)G+=A}}return G},"crossingPenalty"),N=c.map((p,S)=>{if(!p.start||!p.end)return{idx:S,crossLane:0,dx:0,dy:0};let R=a.get(p.start),O=a.get(p.end),P=l.get(p.start),G=l.get(p.end),nt=P&&G&&P.id!==G.id?1:0,it=R&&O?Math.abs((O.x??0)-(R.x??0)):0,tt=R&&O?Math.abs((O.y??0)-(R.y??0)):0;return{idx:S,crossLane:nt,dx:it,dy:tt}}).sort((p,S)=>{if(p.crossLane!==S.crossLane)return S.crossLane-p.crossLane;let R=p.dx+p.dy,O=S.dx+S.dy;if(Math.abs(R-O)>1)return R-O;return p.idx-S.idx}).map((p)=>p.idx),k=e((p,S,R,O)=>{let P=Math.min(p.x,S.x),G=Math.max(p.x,S.x),nt=Math.min(p.y,S.y),it=Math.max(p.y,S.y);return!!y.find((q)=>{if(R&&q.nodeId===R)return!1;if(O&&q.nodeId===O)return!1;if(Math.abs(p.x-S.x)>bt)return q.minY<p.y&&q.maxY>p.y&&q.maxX>P&&q.minX<G;else return q.minX<p.x&&q.maxX>p.x&&q.maxY>nt&&q.minY<it})},"isSegmentBlocked"),w=new Map,C=new Map;for(let p of c){if(!p.start||!p.end||p.start===p.end)continue;C.set(p.start,(C.get(p.start)??0)+1),C.set(p.end,(C.get(p.end)??0)+1)}let B=e((p,S)=>xo(p,S,"bottom"),"determineSide"),_=new Map;for(let[p,S]of c.entries()){if(!S.start||!S.end||S.start===S.end)continue;if(S.points&&S.points.length>0)continue;let R=a.get(S.start),O=a.get(S.end);if(!R||!O)continue;let P=(O.x??0)-(R.x??0),G=(O.y??0)-(R.y??0);_.set(p,{edgeIdx:p,srcId:S.start,dstId:S.end,srcSide:B(R,{x:O.x??0,y:O.y??0}),dstSide:B(O,{x:R.x??0,y:R.y??0}),absDx:Math.abs(P),absDy:Math.abs(G),dxSign:Math.sign(P),dySign:Math.sign(G)})}let Y=e((p)=>{if(p.srcSide==="top"||p.srcSide==="bottom")return p.absDx===0?1/0:p.absDy/p.absDx;return p.absDy===0?1/0:p.absDx/p.absDy},"preferenceStrength"),F=e((p)=>{if(p.srcSide==="top"||p.srcSide==="bottom")return p.dxSign>=0?"right":"left";return p.dySign>=0?"bottom":"top"},"secondarySide"),V=new Map;for(let p of _.values()){let S=`${p.srcId}:${p.srcSide}`;if(!V.has(S))V.set(S,[]);V.get(S).push(p)}let z=new Map,D=e((p,S)=>`${p}:${S}`,"loadKey");for(let p of _.values())z.set(D(p.srcId,p.srcSide),(z.get(D(p.srcId,p.srcSide))??0)+1),z.set(D(p.dstId,p.dstSide),(z.get(D(p.dstId,p.dstSide))??0)+1);for(let p of V.values()){if(p.length<2)continue;p.sort((S,R)=>{let O=Y(S),P=Y(R);if(Math.abs(O-P)>0.000000001)return P-O;return S.edgeIdx-R.edgeIdx});for(let S=1;S<p.length;S++){let R=p[S],O=F(R),P=z.get(D(R.srcId,R.srcSide))??0,G=z.get(D(R.srcId,O))??0;if(G>=P)continue;z.set(D(R.srcId,R.srcSide),P-1),z.set(D(R.srcId,O),G+1),R.srcSide=O}}let W=e((p)=>{let S=p?.shape;return S==="question"||S==="diamond"},"isDiamondNode"),J=new Map;for(let p of _.values()){if(!J.has(p.dstId))J.set(p.dstId,new Set);J.get(p.dstId).add(p.dstSide)}for(let p of _.values()){if(!W(a.get(p.srcId)))continue;let S=J.get(p.srcId);if(!S?.has(p.srcSide))continue;let R=F(p);if(S.has(R)||(z.get(D(p.srcId,R))??0)>0)continue;let O=z.get(D(p.srcId,p.srcSide))??0;z.set(D(p.srcId,p.srcSide),Math.max(0,O-1)),z.set(D(p.srcId,R),1),p.srcSide=R}for(let p of _.values()){let{edgeIdx:S,srcId:R,dstId:O,srcSide:P,dstSide:G}=p,nt=a.get(R),it=a.get(O),tt=`${R}:${P}:src`,q=P==="top"||P==="bottom"?it.x??0:it.y??0;if(!w.has(tt))w.set(tt,[]);w.get(tt).push({edgeIdx:S,oppositeCoord:q});let ht=`${O}:${G}:dst`,pt=G==="top"||G==="bottom"?nt.x??0:nt.y??0;if(!w.has(ht))w.set(ht,[]);w.get(ht).push({edgeIdx:S,oppositeCoord:pt})}let st=new Map,xt=8;for(let[p,S]of w){if(S.length<2)continue;S.sort((_t,Zt)=>_t.oppositeCoord-Zt.oppositeCoord);let R=p.split(":"),O=R.slice(0,-2).join(":"),P=R[R.length-2],G=R[R.length-1],nt=a.get(O);if(!nt)continue;let tt=P==="left"||P==="right"?nt.height??10:nt.width??10,q=nt.shape,pt=q==="question"||q==="diamond"?tt*0.3:tt,ft=Math.min(20,Math.max(xt,pt/(S.length+1))),zt=-(ft*(S.length-1))/2;for(let[_t,Zt]of S.entries()){let de=zt+_t*ft,An=`${Zt.edgeIdx}:${G}`;st.set(An,de)}}let Tt=e((p)=>Boolean(c[p]?.labelNodeId),"edgeHasLabelNode"),$t=e((p,S)=>{if(!p)return!1;return(w.get(`${p}:${S}:src`)??[]).some(({edgeIdx:R})=>Tt(R))||(w.get(`${p}:${S}:dst`)??[]).some(({edgeIdx:R})=>Tt(R))},"faceHasLabelNode"),Ut=e((p,S,R)=>{if(S==="top"||S==="bottom")return{x:p.x+R,y:p.y};else return{x:p.x,y:p.y+R}},"applyPortOffset"),lt=e((p,S,R)=>{let O=_.get(p),P={x:R.x??0,y:R.y??0},G={x:S.x??0,y:S.y??0},nt=O?.srcSide??B(S,P),it=O?.dstSide??B(R,G),tt=O?E(S,O.srcSide):b(S,P,!0),q=O?E(R,O.dstSide):b(R,G,!1),ht=st.get(`${p}:src`),pt=st.get(`${p}:dst`);if(ht!==void 0)tt=Ut(tt,nt,ht);if(pt!==void 0)q=Ut(q,it,pt);return{pSrcPort:tt,pDstPort:q,srcSide:nt,dstSide:it}},"portsForEdge");for(let p of N){let S=c[p];if(d[p]=[],!S.start||!S.end)continue;if(S.points&&S.points.length>0)continue;if(S.start===S.end)continue;let R=a.get(S.start),O=a.get(S.end);if(!R||!O)continue;let{pSrcPort:P,pDstPort:G,srcSide:nt,dstSide:it}=lt(p,R,O),tt={...P},q={...G},ht=nt==="top"||nt==="bottom",pt=it==="top"||it==="bottom";if(ht){let K=P.y>(R.y??0);tt.y=K?P.y+me:P.y-me}else{let K=P.x>(R.x??0);tt.x=K?P.x+me:P.x-me}if(pt){let K=G.y>(O.y??0);q.y=K?G.y+me:G.y-me}else{let K=G.x>(O.x??0);q.x=K?G.x+me:G.x-me}let gt=e((K,Z)=>{for(let rt of y){if(Z.includes(rt.nodeId))continue;if(K.x>rt.minX&&K.x<rt.maxX&&K.y>rt.minY&&K.y<rt.maxY)return{inside:!0,obstacle:rt}}return{inside:!1}},"isPointInObstacle"),ft=e((K,Z,rt,It,Pt)=>{if(Pt){let Vt=K.y>(Z.y??0);return{x:(rt.x??0)>=K.x?It.maxX+Pe:It.minX-Pe,y:Vt?It.maxY+Ge:It.minY-Ge,leavesPositiveSide:Vt}}let At=K.x>(Z.x??0),Ht=(rt.y??0)>=K.y;return{x:At?It.maxX+Pe:It.minX-Pe,y:Ht?It.maxY+Ge:It.minY-Ge,leavesPositiveSide:At}},"obstacleDetour"),wt=[],zt=[S.start,S.end],_t=gt(tt,zt);if(_t.inside&&_t.obstacle){let K=_t.obstacle;if(ht){let Z=ft(P,R,O,K,!0);tt.x=Z.x,tt.y=Z.y;let rt=Z.leavesPositiveSide?Math.min(K.minY-2,P.y+me):Math.max(K.maxY+2,P.y-me);wt=[{x:P.x,y:rt},{x:Z.x,y:rt},{x:Z.x,y:Z.y}]}else{let Z=ft(P,R,O,K,!1),rt=Z.leavesPositiveSide?Math.min(K.minX-2,P.x+me):Math.max(K.maxX+2,P.x-me);tt.x=Z.x,tt.y=Z.y,wt=[{x:rt,y:P.y},{x:rt,y:Z.y},{x:Z.x,y:Z.y}]}}let Zt=[],de=gt(q,zt);if(de.inside&&de.obstacle){let K=de.obstacle;if(pt){let Z=ft(G,O,R,K,!0);q.x=Z.x,q.y=Z.y,Zt=[{x:Z.x,y:Z.y},{x:G.x,y:Z.y}]}else{let Z=ft(G,O,R,K,!1);q.x=Z.x,q.y=Z.y,Zt=[{x:Z.x,y:Z.y},{x:Z.x,y:G.y}]}}if(wt.length===0&&Zt.length===0){let K=Pe,Z=Math.abs(tt.x-q.x)<K,rt=Math.abs(tt.y-q.y)<K,It=st.get(`${p}:src`)!==void 0||st.get(`${p}:dst`)!==void 0,Pt=(w.get(`${S.start??""}:${nt}:src`)?.length??0)+(w.get(`${S.start??""}:${nt}:dst`)?.length??0),At=(w.get(`${S.end??""}:${it}:src`)?.length??0)+(w.get(`${S.end??""}:${it}:dst`)?.length??0),Ht=Pt>1||At>1,Vt=C.get(S.start??"")??0,Ct=C.get(S.end??"")??0,ee=Pt>1&&$t(S.start,nt)||At>1&&$t(S.end,it),pe=Pt<=1||Vt<=2,Wt=At<=1||Ct<=2;if((Z||rt)&&!It&&(!Ht||Ht&&!ee&&pe&&Wt)){if(!k(P,G,S.start,S.end)){S.points=[{...P},{...tt},{...q},{...G}],M.add(p);let Nt=rt?"horizontal":"vertical",oe=rt?P.y:P.x,Ot=rt?Math.min(P.x,G.x):Math.min(P.y,G.y),Bt=rt?Math.max(P.x,G.x):Math.max(P.y,G.y),ae={id:`fast-path-${Nt}-${oe.toFixed(0)}-${p}`,orientation:Nt,coord:oe,spanMin:Ot,spanMax:Bt,tracks:[]};x.push({edgeIndex:p,segmentIndex:0,orientation:Nt,pipe:ae,trackIndex:0,from:Ot,to:Bt});continue}}}let An=I("vertical",tt.x,tt.y,tt.y);tt.x=An.coord;let Nr=I("vertical",q.x,q.y,q.y);q.x=Nr.coord;let Ee=Math.min(tt.x,q.x)-50,Te=Math.max(tt.x,q.x)+50,De=Math.min(tt.y,q.y)-50,Xe=Math.max(tt.y,q.y)+50;for(let K of y){let Z=Math.min(tt.x,q.x),rt=Math.max(tt.x,q.x),It=Math.min(tt.y,q.y),Pt=Math.max(tt.y,q.y);if(K.minX<rt&&K.maxX>Z&&K.minY<Pt&&K.maxY>It)Ee=Math.min(Ee,K.minX-fn),Te=Math.max(Te,K.maxX+fn),De=Math.min(De,K.minY-fn),Xe=Math.max(Xe,K.maxY+fn)}for(let K of y){if(K.maxX<Ee||K.minX>Te||K.maxY<De||K.minY>Xe)continue;let Z=Pe;I("horizontal",K.minY-Z,Ee,Te),I("horizontal",K.maxY+Z,Ee,Te);let rt=Ge;I("vertical",K.minX-rt,De,Xe),I("vertical",K.maxX+rt,De,Xe)}I("horizontal",tt.y,Ee,Te),I("horizontal",q.y,Ee,Te);let Or=m.filter((K)=>K.orientation==="horizontal"&&K.coord>=De&&K.coord<=Xe),Br=m.filter((K)=>K.orientation==="vertical"&&K.coord>=Ee&&K.coord<=Te),Ke=e((K,Z)=>`${K.toFixed(1)},${Z.toFixed(1)}`,"getKey"),qe=Ke(tt.x,tt.y),Xo=Ke(q.x,q.y),Je=new Map,Nn=new Map,On=new Map,Ze=new Set,Be=[];Je.set(qe,0),On.set(qe,"n"),Be.push({key:qe,f:Math.hypot(q.x-tt.x,q.y-tt.y),pt:tt}),Ze.add(qe);let Qt=[],we=e((K,Z)=>k(K,Z,S.start,S.end),"checkSegmentBlocked"),Bn={x:q.x,y:tt.y},Pr=we(tt,Bn),Fr=we(Bn,q),_r=Pr||Fr,Pn={x:tt.x,y:q.y},Hr=we(tt,Pn),Xr=we(Pn,q),Yr=Hr||Xr;if(!_r)if(Math.abs(tt.y-q.y)<bt||Math.abs(tt.x-q.x)<bt)Qt=[tt,q];else Qt=[tt,Bn,q];else if(!Yr)if(Math.abs(tt.x-q.x)<bt)Qt=[tt,q];else Qt=[tt,Pn,q];if(Qt.length===0)while(Be.length>0){Be.sort((Ct,ee)=>Ct.f-ee.f);let K=Be.shift();if(Ze.delete(K.key),K.key===Xo){let Ct=Xo,ee=q;Qt=[ee];while(Nn.has(Ct)){let pe=Nn.get(Ct);Qt.unshift(pe),ee=pe,Ct=Ke(pe.x,pe.y)}break}let Z=K.pt.x,rt=K.pt.y,It=Br.sort((Ct,ee)=>Ct.coord-ee.coord),Pt=It.findIndex((Ct)=>Math.abs(Ct.coord-Z)<1),At=Or.sort((Ct,ee)=>Ct.coord-ee.coord),Ht=At.findIndex((Ct)=>Math.abs(Ct.coord-rt)<1),Vt=[];if(Pt>0)Vt.push({x:It[Pt-1].coord,y:rt});if(Pt>=0&&Pt<It.length-1)Vt.push({x:It[Pt+1].coord,y:rt});if(Ht>0)Vt.push({x:Z,y:At[Ht-1].coord});if(Ht>=0&&Ht<At.length-1)Vt.push({x:Z,y:At[Ht+1].coord});for(let Ct of Vt){let ee=Math.min(Z,Ct.x),pe=Math.max(Z,Ct.x),Wt=Math.min(rt,Ct.y),ne=Math.max(rt,Ct.y);if(y.some((ue)=>{if(ue.nodeId===S.start||ue.nodeId===S.end)return!1;if(ee!==pe)return ue.minY<rt&&ue.maxY>rt&&ue.maxX>ee&&ue.minX<pe;else return ue.minX<Z&&ue.maxX>Z&&ue.maxY>Wt&&ue.minY<ne}))continue;let Nt=Ke(Ct.x,Ct.y),oe=Math.abs(Ct.x-Z)+Math.abs(Ct.y-rt),Ot=v(p,K.pt,Ct),Bt=0,ae=q.x-tt.x,Ye=q.y-tt.y,tn=Ct.x-Z,Fn=Ct.y-rt;if(Ye>10&&Fn<-5||Ye<-10&&Fn>5)Bt=Math.abs(Fn)*100;if(ae>10&&tn<-5||ae<-10&&tn>5)Bt+=Math.abs(tn)*50;let Yo=0,Go=On.get(K.key)??"n",$o=Math.abs(tn)>bt?"h":"v";if(Go!=="n"&&Go!==$o)Yo=50;let Gr=oe+Ot+Bt+Yo,en=(Je.get(K.key)??1/0)+Gr,zo=Math.abs(q.x-Ct.x)+Math.abs(q.y-Ct.y);if(en<(Je.get(Nt)??1/0))if(Nn.set(Nt,K.pt),Je.set(Nt,en),On.set(Nt,$o),!Ze.has(Nt))Be.push({key:Nt,f:en+zo,pt:Ct}),Ze.add(Nt);else{let ue=Be.findIndex(($r)=>$r.key===Nt);if(ue!==-1)Be[ue].f=en+zo}}}if(Qt.length===0)Qt=[tt,{x:tt.x,y:q.y},q];if(Qt.length>4){let K=Qt[0],Z=Qt[Qt.length-1],rt=Math.min(K.x,Z.x),It=Math.max(K.x,Z.x),Pt=Math.min(K.y,Z.y),At=Math.max(K.y,Z.y);for(let Wt of Qt)rt=Math.min(rt,Wt.x),It=Math.max(It,Wt.x),Pt=Math.min(Pt,Wt.y),At=Math.max(At,Wt.y);let Ht=It>Math.max(K.x,Z.x),Vt=rt<Math.min(K.x,Z.x);if(f){let Wt=Ge;if(Ht){let ne=Math.max(K.x,Z.x),jt=Math.min(K.y,Z.y),Nt=Math.max(K.y,Z.y),oe=y.filter((Ot)=>Ot.minX<ne&&Ot.maxX>ne&&Ot.minY<Nt&&Ot.maxY>jt);if(oe.length>0){let Ot=Math.max(K.x,Z.x);for(let Bt of oe){let ae=(Bt.minX+Bt.maxX)/2;if(Bt.visualXHalfExtent===void 0||isNaN(Bt.visualXHalfExtent))continue;let Ye=ae+Bt.visualXHalfExtent+Wt;Ot=Math.max(Ot,Ye)}if(!isNaN(Ot))It=Ot}}if(Vt){let ne=y.filter((jt)=>jt.minX<Math.min(K.x,Z.x)+Wt&&jt.minY<Math.max(K.y,Z.y)&&jt.maxY>Math.min(K.y,Z.y));if(ne.length>0){let jt=Math.min(K.x,Z.x);for(let Nt of ne){let Ot=(Nt.minX+Nt.maxX)/2-Nt.visualXHalfExtent-Wt;jt=Math.min(jt,Ot)}rt=jt}}}let Ct=e((Wt)=>{let ne=Z.y>K.y,jt=y.filter((Ot)=>{let Bt=Math.min(K.x,Z.x)<Ot.maxX&&Math.max(K.x,Z.x)>Ot.minX,ae=Math.min(K.y,Z.y)<Ot.maxY&&Math.max(K.y,Z.y)>Ot.minY;return Bt&&ae}),Nt=jt;if(f&&jt.length>0){let Ot=jt.filter((Bt)=>Bt.minX<Wt&&Bt.maxX>Wt);if(Ot.length>0)Nt=Ot}if(Nt.length===0)return Z.y;let oe=Pe;if(ne){let Bt=Math.max(...Nt.map((ae)=>ae.maxY))+oe;if(Bt<Z.y-bt)return Bt}else{let Bt=Math.min(...Nt.map((ae)=>ae.minY))-oe;if(Bt>Z.y+bt)return Bt}return Z.y},"findBestReturnY"),ee=e((Wt)=>{let ne=Ct(Wt),jt={x:Wt,y:K.y},Nt={x:Wt,y:ne},oe={x:Z.x,y:ne},Ot=we(K,jt),Bt=we(jt,Nt),ae=we(Nt,oe),Ye=ne!==Z.y?we(oe,Z):!1;if(!Ot&&!Bt&&!ae&&!Ye){if(Math.abs(ne-Z.y)<bt)return[K,jt,Nt,Z];return[K,jt,Nt,oe,Z]}return null},"trySimplifyWithDetourX"),pe=Ht&&!Vt?ee(It):Vt&&!Ht?ee(rt):null;if(pe)Qt=pe}let te=[P,...wt,...Qt,...Zt.reverse(),G];if(te.length>=3){let K=te[te.length-1],Z=te[te.length-2],rt=te[te.length-3],It=Math.abs(rt.y-Z.y)<bt&&Math.abs(Z.y-K.y)<bt,Pt=Math.abs(rt.x-Z.x)<bt&&Math.abs(Z.x-K.x)<bt;if(It){let At=Math.sign(Z.x-rt.x),Ht=Math.sign(K.x-rt.x);if(At!==0&&At===Ht&&Math.abs(Z.x-rt.x)>Math.abs(K.x-rt.x))te.splice(-2,1)}else if(Pt){let At=Math.sign(Z.y-rt.y),Ht=Math.sign(K.y-rt.y);if(At!==0&&At===Ht&&Math.abs(Z.y-rt.y)>Math.abs(K.y-rt.y))te.splice(-2,1)}}let Me=[te[0]];for(let K=1;K<te.length-1;K++){if(K===1){Me.push(te[K]);continue}let Z=Me[Me.length-1],rt=te[K],It=te[K+1];if(Math.abs(Z.y-rt.y)<bt&&Math.abs(rt.y-It.y)<bt){let Pt=rt.x>Z.x,At=It.x>rt.x;if(Pt!==At){Me.push(rt);continue}continue}if(Math.abs(Z.x-rt.x)<bt&&Math.abs(rt.x-It.x)<bt){let Pt=rt.y>Z.y,At=It.y>rt.y;if(Pt!==At){Me.push(rt);continue}continue}Me.push(rt)}Me.push(te[te.length-1]);for(let K=0;K<Me.length-1;K++){let Z=Me[K],rt=Me[K+1],It=Math.abs(Z.x-rt.x)<bt?"vertical":"horizontal",Pt=It==="vertical"?Z.x:Z.y,At=It==="vertical"?Math.min(Z.y,rt.y):Math.min(Z.x,rt.x),Ht=It==="vertical"?Math.max(Z.y,rt.y):Math.max(Z.x,rt.x),Vt=I(It,Pt,At,Ht),Ct={edgeIndex:p,segmentIndex:K,orientation:It,pipe:Vt,trackIndex:0,from:At,to:Ht};if(x.push(Ct),d[p].push(x.length-1),!Vt.tracks[0])Vt.tracks[0]={index:0,coord:Vt.coord,segments:[]};Vt.tracks[0].segments.push({edgeIndex:p,segmentIndex:K,from:At,to:Ht})}}let ot=e((p,S)=>p.from<S.to&&S.from<p.to,"segmentsOverlap"),dt=e((p,S,R,O)=>{let P=!O.segments.some((nt)=>(nt.edgeIndex!==S.edgeIndex||nt.segmentIndex!==S.segmentIndex)&&ot(nt,p)),G=!R.segments.some((nt)=>(nt.edgeIndex!==p.edgeIndex||nt.segmentIndex!==p.segmentIndex)&&ot(nt,S));if(P&&G)return p.trackIndex=O.index,S.trackIndex=R.index,R.segments=[...R.segments.filter((nt)=>nt.edgeIndex!==p.edgeIndex||nt.segmentIndex!==p.segmentIndex),{edgeIndex:S.edgeIndex,segmentIndex:S.segmentIndex,from:S.from,to:S.to}],O.segments=[...O.segments.filter((nt)=>nt.edgeIndex!==S.edgeIndex||nt.segmentIndex!==S.segmentIndex),{edgeIndex:p.edgeIndex,segmentIndex:p.segmentIndex,from:p.from,to:p.to}],!0;return!1},"trySwapSegmentsAcrossTracks"),Mt=e((p)=>{let S=p.tracks.length;return p.tracks[S]={index:S,coord:p.coord,segments:[]},S},"createNewTrack"),Lt=e((p,S)=>{let R=p.pipe.tracks[p.trackIndex];R.segments=R.segments.filter((P)=>P.edgeIndex!==p.edgeIndex||P.segmentIndex!==p.segmentIndex),p.trackIndex=S,p.pipe.tracks[S].segments.push({edgeIndex:p.edgeIndex,segmentIndex:p.segmentIndex,from:p.from,to:p.to})},"moveSegmentToTrack"),Rt=e((p,S)=>{let R=d[p.edgeIndex];for(let O of R){let P=x[O];if(P.pipe===p.pipe)Lt(P,S)}},"moveSegmentChainToTrack"),kt=e((p)=>{let S=d[p.edgeIndex],R=S.indexOf(x.indexOf(p)),O=[];if(R>0)O.push(x[S[R-1]]);if(R<S.length-1)O.push(x[S[R+1]]);return O},"getAdjacentSegmentsAlongEdge"),re=e((p,S)=>{if(p.orientation===S.orientation)return!1;let R=p.orientation==="horizontal"?p:S,O=p.orientation==="horizontal"?S:p;return O.pipe.coord>R.from&&O.pipe.coord<R.to&&R.pipe.coord>O.from&&R.pipe.coord<O.to},"haveAnyCrossing"),ie=e((p,S)=>{for(let R of p.tracks)if(!R.segments.some((P)=>(P.edgeIndex!==S.edgeIndex||P.segmentIndex!==S.segmentIndex)&&ot(P,S)))return R.index;return-1},"findAvailableTrack"),ce=e((p,S)=>{if(p.trackIndex===S.trackIndex)return ot(p,S);let R=kt(p),O=kt(S);return R.some((P)=>O.some((G)=>re(P,G)))},"segmentsConflict"),ge=e((p,S,R)=>{if(dt(p,S,p.pipe.tracks[p.trackIndex],S.pipe.tracks[S.trackIndex]))return;let O=ie(p.pipe,S);R(S,O!==-1?O:Mt(p.pipe))},"resolveTrackConflict"),_e=e((p)=>{let S=0;for(let R=0;R<p.length;R++)for(let O=R+1;O<p.length;O++){let P=p[R],G=p[O];if(P.pipe!==G.pipe)continue;if(ce(P,G))S++,ge(P,G,Rt)}return S},"resolveHandleConflicts"),Le=new Map,He=e((p)=>{if(Le.has(p))return Le.get(p);let S=d[p];if(S.length===0){let it={dest:0,deviation:0,base:0,delta:0};return Le.set(p,it),it}let O=x[S[0]].pipe.coord,P=O;for(let it=1;it<S.length;it++){let tt=x[S[it]];if(tt.orientation==="horizontal"){let{from:q,to:ht}=tt;P=Math.abs(q-O)>Math.abs(ht-O)?q:ht;break}}let G=Math.abs(P-O),nt={dest:P,deviation:G,base:O,delta:P-O};return Le.set(p,nt),nt},"getDestInfo"),Tn=e(()=>{let p=0,S=new Map;for(let[O,P]of c.entries()){if(d[O].length===0)continue;if(!P.start)continue;if(!S.has(P.start))S.set(P.start,[]);S.get(P.start).push(O)}let R=e((O)=>{let P=c[O];if(!P.start||!P.end)return 0;let G=a.get(P.start),nt=a.get(P.end);if(!G||!nt)return 0;let it=(nt.x??0)-(G.x??0),tt=(nt.y??0)-(G.y??0);return Math.abs(it)+Math.abs(tt)},"getEdgeDistance");for(let O of S.values()){O.sort((G,nt)=>{let it=He(G),tt=He(nt);if(Math.abs(it.deviation-tt.deviation)>1)return it.deviation-tt.deviation;if(Math.abs(it.dest-tt.dest)>1)return it.dest-tt.dest;let q=R(G),ht=R(nt);if(Math.abs(q-ht)>1)return ht-q;let pt=d[G].length,gt=d[nt].length;if(pt!==gt)return pt-gt;if(pt===1){let ft=d[G][0],wt=d[nt][0];if(x[ft]&&x[wt]){let zt=x[ft],_t=x[wt],Zt=Math.abs(zt.to-zt.from),de=Math.abs(_t.to-_t.from);if(Math.abs(Zt-de)>1)return Zt-de}}return 0});let P=O.map((G)=>x[d[G][0]]);p+=_e(P)}return p},"fixSourceHandleCrossings"),wn=e(()=>{let p=0,S=new Map;for(let[R,O]of c.entries()){if(d[R].length===0)continue;if(!O.end)continue;if(!S.has(O.end))S.set(O.end,[]);S.get(O.end).push(R)}for(let R of S.values()){R.sort((P,G)=>{let nt=e((q)=>{let ht=d[q];if(ht.length<2)return 0;let pt=x[ht[ht.length-2]];return Math.abs(pt.to-pt.from)},"getDist"),it=nt(P),tt=nt(G);if(Math.abs(it-tt)>0.1)return it-tt;return P-G});let O=R.map((P)=>x[d[P][d[P].length-1]]);p+=_e(O)}return p},"fixTargetHandleCrossings"),Rn=e(()=>{let p=0;for(let S of m){let R=[];for(let O of S.tracks)for(let P of O.segments){let G=d[P.edgeIndex].find((nt)=>x[nt].segmentIndex===P.segmentIndex);if(G!==void 0)R.push(x[G])}R.sort((O,P)=>O.edgeIndex-P.edgeIndex||O.segmentIndex-P.segmentIndex);for(let O=0;O<R.length;O++)for(let P=O+1;P<R.length;P++){let G=R[O],nt=R[P];if(ce(G,nt))p++,ge(G,nt,Lt)}}return p},"fixPipeCrossings"),H=0,j=10;while(H<j){let p=0;if(p+=Tn(),p+=wn(),p+=Rn(),p===0)break;H++}let U=new Map;for(let p of m){let S=[];p.tracks.forEach((O)=>{O.segments.forEach((P)=>{S.push({edgeIndex:P.edgeIndex,segmentIndex:P.segmentIndex,trackIndex:O.index,from:P.from,to:P.to})})}),S.sort((O,P)=>O.from-P.from);let R=[];if(S.length>0){let O=[S[0]],P=S[0].to;for(let G=1;G<S.length;G++){let nt=S[G];if(nt.from<P)O.push(nt),P=Math.max(P,nt.to);else R.push(O),O=[nt],P=nt.to}R.push(O)}for(let O of R){let P=new Set;O.forEach((ft)=>P.add(ft.trackIndex));let G=new Map;O.forEach((ft)=>{let wt=He(ft.edgeIndex);G.set(ft.trackIndex,(G.get(ft.trackIndex)??0)+wt.delta)});let nt=[...P].filter((ft)=>(G.get(ft)??0)<-1),it=[...P].filter((ft)=>(G.get(ft)??0)>1),tt=[...P].filter((ft)=>Math.abs(G.get(ft)??0)<=1);nt.sort((ft,wt)=>(G.get(wt)??0)-(G.get(ft)??0)),it.sort((ft,wt)=>(G.get(ft)??0)-(G.get(wt)??0));let q=e((ft,wt)=>{O.filter((zt)=>zt.trackIndex===ft).forEach((zt)=>{let _t=M.has(zt.edgeIndex)?p.coord:wt;U.set(`${zt.edgeIndex}-${zt.segmentIndex}`,_t)})},"assignCoord"),ht=0;for(let ft of nt)ht++,q(ft,p.coord-ht*Dn);if(tt.length===0&&P.size>0){let ft=[...P].sort((_t,Zt)=>Math.abs(G.get(_t)??0)-Math.abs(G.get(Zt)??0))[0],wt=nt.indexOf(ft);if(wt!==-1)nt.splice(wt,1);let zt=it.indexOf(ft);if(zt!==-1)it.splice(zt,1);tt.push(ft)}let pt=0;for(let ft of tt){if(pt===0)q(ft,p.coord);else{let wt=pt%2===1?1:-1,zt=Math.ceil(pt/2);q(ft,p.coord+wt*zt*Dn*0.5)}pt++}let gt=0;for(let ft of it)gt++,q(ft,p.coord+gt*Dn)}}for(let[p,S]of c.entries()){let R=d[p]??[];if(R.length===0)continue;let O=[],P=a.get(S.start),G=a.get(S.end),{pSrcPort:nt,pDstPort:it}=lt(p,P,G),tt=R.map((pt)=>{let gt=x[pt],ft=U.get(`${gt.edgeIndex}-${gt.segmentIndex}`)??gt.pipe.coord;return{orient:gt.orientation,coord:ft,from:gt.from,to:gt.to}});O.push(nt);for(let pt=0;pt<tt.length;pt++){let gt=tt[pt],ft=O[O.length-1],wt=gt.orient==="vertical"?ft.y:ft.x,zt=gt.orient==="vertical"?ft.x:ft.y,_t=tt[pt+1],Zt=pt<tt.length-1;if(Math.abs(zt-gt.coord)>bt)O.push(Fe(gt,wt));if(Zt&&_t.orient===gt.orient){if(Math.abs(gt.coord-_t.coord)>bt){let de=gt.orient==="vertical"?(wt+_t.from)/2:bo(gt,_t);O.push(Fe(gt,de),Fe(_t,de))}else if(pt===0||pt===tt.length-2)O.push(Fe(gt,bo(gt,_t)))}else if(Zt)O.push(Fe(gt,_t.coord));else{let de=Math.abs(gt.from-wt)<Math.abs(gt.to-wt)?gt.to:gt.from;O.push(Fe(gt,de))}}let q=O[O.length-1];if(Math.abs(q.x-it.x)>bt||Math.abs(q.y-it.y)>bt)O.push(it);let ht=[];if(O.length>0)ht.push(O[0]);for(let pt=1;pt<O.length;pt++){let gt=O[pt],ft=ht[ht.length-1];if(Math.abs(gt.x-ft.x)>bt||Math.abs(gt.y-ft.y)>bt)ht.push(gt)}S.points=ht}for(let p of c){let S=p.__originalEdge;if(S&&p.points)S.points=p.points}n.edges=(n.edges??[]).filter((p)=>!p.isLayoutOnly);let et=e((p,S)=>{let R=S.x??0,O=S.y??0,P=S.width??0,G=S.height??0;if(P<=0||G<=0)return p;let nt=R-P/2,it=R+P/2,tt=O-G/2,q=O+G/2;if(p.x<nt||p.x>it||p.y<tt||p.y>q)return p;let ht=p.x-nt,pt=it-p.x,gt=p.y-tt,ft=q-p.y,wt=Math.min(ht,pt,gt,ft);if(wt===ht)return{x:nt,y:p.y};if(wt===pt)return{x:it,y:p.y};if(wt===gt)return{x:p.x,y:tt};return{x:p.x,y:q}},"nodeBoundaryClamp");for(let p of n.edges){let S=p.points;if(!S||S.length<2)continue;let{start:R,end:O}=p,P=R?a.get(R):void 0,G=O?a.get(O):void 0;if(P)S[0]=et(S[0],P);if(G)S[S.length-1]=et(S[S.length-1],G)}return n}e(wr,"routeEdgesOrthogonal");function Rr(n){return n.direction??"TB"}e(Rr,"getSwimlaneDirection");function Ar(n){let o=us(n),s=n.config.flowchart?.nodeSpacing??40,i=n.config.flowchart?.rankSpacing??100,c=n.config.swimlane?.ignoreCrossLaneEdges??!0,a=n.config.swimlane?.optimizeRanksByCrossings??!0,l=n.config.swimlane?.automaticLaneOrdering??!1,m=Rr(n),{ordered:f,coordinates:g}=Tr(o,{nodeGap:s,layerGap:i,ignoreCrossLaneEdges:c,optimizeRanksByCrossings:a,automaticLaneOrdering:l,direction:m});hs(o,f,g,{nodeGap:s,layerGap:i});for(let y of n.edges??[])delete y.points;wr(n,m);for(let y of n.edges??[])if(!y.curve||y.curve==="basis")y.curve="rounded";return Vs(n,m),zs(n),m}e(Ar,"runSwimlaneLayoutCore");async function ei(n,o){let s=o.select("g");Kt(s,n.markers,n.type,n.diagramId),on(),ln(),sn(),Dr(),ds(n);let i=gs(n);n.nodes=i.nodes,n.edges=i.edges;let{groups:c}=await Jo(s,n);Ar(n),await as(n,c)}e(ei,"render");export{ei as render};
1
+ import{e,t,u,r,h,Ne,ct,on,Qe,sn,yt,Q,Tr,X,ln,Ft,Xt,Kt}from"./index-nwsya6dj.js";import{L}from"./index-mergmj97.js";import{k}from"./index-v119nznk.js";import{Dr}from"./index-ap4q4vez.js";import"./index-qhfrazv3.js";async function Jo(n,o){let s=new L({multigraph:!0,compound:!0}),i=[...o.edges],c=r(),a=n.insert("g").attr("class","root"),l=a.insert("g").attr("class","clusters"),m=a.insert("g").attr("class","edges edgePath"),f=a.insert("g").attr("class","edgeLabels"),g=a.insert("g").attr("class","nodes"),y=new Map,I=n.node()!=null;await Promise.all(o.nodes.map(async(E)=>{if(E.isGroup)s.setNode(E.id,{...E});else{if(I){let b=await Qe(g,E,{config:c,dir:E.dir}),x=b.node()?.getBBox()??{width:0,height:0};y.set(E.id,b),E.width=x.width,E.height=x.height}s.setNode(E.id,{...E})}}));for(let E of i)if(s.setEdge(E.start,E.end,{...E},E.id),!o.edges.some((x)=>x.id===E.id))o.edges.push(E);if(globalThis.mermaidCaptureSizes){let{captureNodeSizes:E}=await (k("sg26xwts"),import("./sizeCapture-X5ZJPWSS-sg26xwts.js"));E(n,o)}return{graph:s,groups:{clusters:l,edgePaths:m,edgeLabels:f,nodes:g,rootGroups:a},nodeElements:y}}e(Jo,"createGraphWithElements");var Vo=5,nn=0.00001,rn=0.000001;function hn(n){let o=[];for(let s=0;s<n.length-1;s++)o.push({a:n[s],b:n[s+1]});return o}e(hn,"buildSegmentList");function Zo(n,o,s,i){let c=o.x-n.x,a=o.y-n.y,l=i.x-s.x,m=i.y-s.y,f=c*m-a*l;if(f===0)return null;let g=s.x-n.x,y=s.y-n.y,I=(g*m-y*l)/f,E=(g*a-y*c)/f;if(I<=rn||I>=1-rn||E<=rn||E>=1-rn)return null;return{point:{x:n.x+I*c,y:n.y+I*a},tA:I,tB:E}}e(Zo,"segmentIntersection");function Xn(n){return Math.abs(n.b.x-n.a.x)>=Math.abs(n.b.y-n.a.y)}e(Xn,"isHorizontalSeg");function Qo(n){let o=[];for(let s=0;s<n.length;s++){let i=n[s],c=hn(i.points);for(let a=s+1;a<n.length;a++){let l=n[a],m=hn(l.points);for(let[f,g]of c.entries())for(let[y,I]of m.entries()){let E=Zo(g.a,g.b,I.a,I.b);if(!E)continue;let b=Xn(g),x=Xn(I);if(b!==x?b:!1)o.push({jumpEdgeId:i.id,otherEdgeId:l.id,segIndex:f,t:E.tA,point:E.point});else o.push({jumpEdgeId:l.id,otherEdgeId:i.id,segIndex:y,t:E.tB,point:E.point})}}}return o}e(Qo,"findEdgeIntersections");function be(n){let o=Math.round(n*1000)/1000;return Number.isInteger(o)?`${o}`:`${o}`}e(be,"fmt");function $e(n){return`${be(n.x)},${be(n.y)}`}e($e,"pointToString");function ts(n){let o=n.b.x-n.a.x,s=n.b.y-n.a.y;if(Math.abs(o)>=Math.abs(s))return o>=0?1:0;return s>=0?1:0}e(ts,"getArcSweepFlag");var zr=0.001;function es(n,o){if(n.length<2)return n.map((a)=>({...a}));let s=n.map((a)=>({...a})),i=o.arrowTypeStart&&Q[o.arrowTypeStart];if(i){let a=n[0],l=n[1],m=Math.atan2(l.y-a.y,l.x-a.x);s[0].x=a.x+i*Math.cos(m),s[0].y=a.y+i*Math.sin(m)}let c=o.arrowTypeEnd&&Q[o.arrowTypeEnd];if(c){let a=n.length,l=n[a-2],m=n[a-1],f=Math.atan2(m.y-l.y,m.x-l.x);s[a-1].x=m.x-c*Math.cos(f),s[a-1].y=m.y-c*Math.sin(f)}return s}e(es,"applyMarkerOffsets");function ns(n,o,s,i,c){let a=n.point.x,l=n.point.y,m={x:a-o*n.r,y:l-s*n.r},f={x:a+o*n.r,y:l+s*n.r},g=[`L${$e(m)}`];if(c==="arc")g.push(`A${be(n.r)},${be(n.r)} 0 0 ${i} ${$e(f)}`);else g.push(`M${$e(f)}`);return g}e(ns,"emitJump");function Yn(n,o,s,i){let c=o.x-n.x,a=o.y-n.y,l=s.x-o.x,m=s.y-o.y,f=Math.hypot(c,a),g=Math.hypot(l,m);if(f<nn||g<nn)return null;let y=c/f,I=a/f,E=l/g,b=m/g,x=y*E+I*b,d=Math.max(-1,Math.min(1,x)),M=Math.acos(d);if(M<nn||Math.abs(Math.PI-M)<nn)return null;let R=Math.min(i/Math.sin(M/2),f/2,g/2);return{startX:o.x-y*R,startY:o.y-I*R,endX:o.x+E*R,endY:o.y+b*R,ctrlX:o.x,ctrlY:o.y,cutLen:R}}e(Yn,"computeRoundedCorner");function os(n,o,s){let i=n.points;if(i.length<2)return"";let c=es(i,n),a=n.curve==="rounded",l=hn(c),m=new Map;for(let g of o){let y=l[g.segIndex];if(!y)continue;let I=Math.hypot(y.b.x-y.a.x,y.b.y-y.a.y),E=m.get(g.segIndex)??[];E.push({t:g.t,point:g.point,d:g.t*I,r:s.jumpRadius}),m.set(g.segIndex,E)}let f=[`M${$e(c[0])}`];for(let g=0;g<l.length;g++){let y=l[g],I=Math.hypot(y.b.x-y.a.x,y.b.y-y.a.y),E=I===0?0:(y.b.x-y.a.x)/I,b=I===0?0:(y.b.y-y.a.y)/I,x=ts(y),d=0;if(a&&g>0){let A=Yn(c[g-1],c[g],c[g+1]??c[g],Vo);if(A)d=A.cutLen}let M=I,R=null;if(a&&g<l.length-1){if(R=Yn(c[g],c[g+1],c[g+2]??c[g+1],Vo),R)M=I-R.cutLen}let v=[...m.get(g)??[]].sort((A,F)=>A.t-F.t);for(let A of v)A.r=Math.min(A.r,A.d-d,M-A.d);for(let A=0;A<v.length-1;A++){let F=v[A+1].d-v[A].d;if(v[A].r+v[A+1].r>F){let T=F/2;v[A].r=Math.min(v[A].r,T),v[A+1].r=Math.min(v[A+1].r,T)}}for(let A of v){if(A.r<zr)continue;f.push(...ns(A,E,b,x,s.jumpStyle))}if(a&&R)f.push(`L${be(R.startX)},${be(R.startY)}`),f.push(`Q${be(R.ctrlX)},${be(R.ctrlY)} ${be(R.endX)},${be(R.endY)}`);else f.push(`L${$e(y.b)}`)}return f.join(" ")}e(os,"rewriteEdgePath");function ss(n){return/^[\d\s+,.LMelm-]*$/.test(n)}e(ss,"isStraightPath");function rs(n){if(!n)return!0;return n==="linear"||n==="rounded"||n==="step"||n==="stepBefore"||n==="stepAfter"}e(rs,"curveSupportsLineHops");function is(n){if(!n)return null;try{let o=typeof atob==="function"?atob(n):Buffer.from(n,"base64").toString(),s=JSON.parse(o);if(!Array.isArray(s))return null;let i=[];for(let c of s)if(c&&typeof c.x==="number"&&typeof c.y==="number")i.push({x:c.x,y:c.y});return i.length>=2?i:null}catch{return null}}e(is,"decodeDataPoints");function cs(n,o,s){if(!s.enabled)return;let i=n.node();if(!i)return;let c=new Map;for(let g of o)c.set(g.id,g);let a=[],l=new Map;for(let g of o){let y=typeof CSS<"u"&&CSS.escape?CSS.escape(g.id):g.id,I=i.querySelector(`path[data-id="${y}"]`);if(!I)continue;l.set(g.id,I);let b=is(I.getAttribute("data-points"))??g.points;a.push({...g,points:b})}let m=Qo(a);if(m.length===0)return;let f=new Map;for(let g of m){let y=f.get(g.jumpEdgeId)??[];y.push(g),f.set(g.jumpEdgeId,y)}for(let g of a){let y=f.get(g.id);if(!y||y.length===0)continue;let E=c.get(g.id)?.curve;if(E!==void 0&&!rs(E))continue;let b=l.get(g.id);if(!b)continue;if(E===void 0){let A=b.getAttribute("d")??"";if(!ss(A))continue}let x=b.getAttribute("style")??"",d=/stroke-dasharray\s*:\s*0\s+([\d.]+)\s+[\d.]+\s+([\d.]+)/.exec(x),M=d?Number.parseFloat(d[1]):null,R=d?Number.parseFloat(d[2]):null,v=os(g,y,s);if(b.setAttribute("d",v),M!==null&&R!==null&&typeof b.getTotalLength==="function"){let A=b.getTotalLength(),F=Math.max(0,A-M-R),T=`0 ${M} ${F} ${R}`,C=x.replace(/stroke-dasharray\s*:[^;]*;?/g,`stroke-dasharray: ${T};`).replace(/;\s*;+/g,";");b.setAttribute("style",C)}}}e(cs,"applyLineJumpsToSvg");async function as(n,o){for(let c of n.nodes)if(c.isGroup)await ct(o.clusters,c);else yt(c);let s=new Map;for(let c of n.nodes)if(c?.id)s.set(c.id,c);for(let c of n.edges){let a=c.start?s.get(c.start)??{}:{},l=c.end?s.get(c.end)??{}:{},m=Xt(o.edgePaths,{...c},{},n.type,a,l,n.diagramId);if(c.label)await Ft(o.rootGroups,c);if(c.label)ls(c,m)}let i=n.config?.swimlane?.lineHops;if(i!==!1){let c=i==="gap"?"gap":"arc",a=n.edges.filter((l)=>Array.isArray(l.points)&&l.points.length>=2).map((l)=>({id:l.id,points:l.points,curve:l.curve,arrowTypeStart:l.arrowTypeStart,arrowTypeEnd:l.arrowTypeEnd}));cs(o.edgePaths,a,{enabled:!0,jumpRadius:6,jumpStyle:c})}}e(as,"adjustLayout");function ls(n,o){let s=o?.updatedPath??o?.originalPath,i=u(),{subGraphTitleTotalMargin:c}=Ne({flowchart:i.flowchart??{}});if(n.label){let a=Tr.get(n.id),{x:l,y:m}=n;if(s){let f=h.calcLabelPosition(s);if(t.debug("Moving label "+n.label+" from (",l,",",m,") to (",f.x,",",f.y,") abc88"),o)l=f.x,m=f.y}a.attr("transform",`translate(${l}, ${m+c/2})`)}if(n?.startLabelLeft){let a=X.get(n.id).startLeft,l=n?.x,m=n?.y;if(s){let f=h.calcTerminalLabelPosition(n.arrowTypeStart?10:0,"start_left",s);l=f.x,m=f.y}a.attr("transform",`translate(${l}, ${m})`)}if(n.startLabelRight){let a=X.get(n.id).startRight,{x:l,y:m}=n;if(s){let f=h.calcTerminalLabelPosition(n.arrowTypeStart?10:0,"start_right",s);l=f.x,m=f.y}a.attr("transform",`translate(${l}, ${m})`)}if(n.endLabelLeft){let a=X.get(n.id).endLeft,{x:l,y:m}=n;if(s){let f=h.calcTerminalLabelPosition(n.arrowTypeEnd?10:0,"end_left",s);l=f.x,m=f.y}a.attr("transform",`translate(${l}, ${m})`)}if(n.endLabelRight){let a=X.get(n.id).endRight,{x:l,y:m}=n;if(s){let f=h.calcTerminalLabelPosition(n.arrowTypeEnd?10:0,"end_right",s);l=f.x,m=f.y}a.attr("transform",`translate(${l}, ${m})`)}}e(ls,"positionEdgeLabel");var kn="__swimlane_default__",Vr=21,jo=20;function Gn(n){return Math.max(n.padding??jo,jo)}e(Gn,"topLaneHorizontalPadding");function fs(n){let{x:o,y:s,width:i,height:c}=n,a=n.swimlaneContentTop;if(typeof o!=="number"||typeof s!=="number"||typeof i!=="number"||typeof c!=="number"||typeof a!=="number"||!Number.isFinite(o)||!Number.isFinite(s)||!Number.isFinite(i)||!Number.isFinite(c)||!Number.isFinite(a)||i<=0||c<=0){delete n.groupTitleRect;return}let l=s-c/2,m=Math.min(a,s+c/2),f=Math.min(Vr,Math.max(0,m-l)),g=l+f;if(g<=l){delete n.groupTitleRect;return}n.groupTitleRect={left:o-i/2,right:o+i/2,top:l,bottom:g}}e(fs,"assignTopLaneTitleRect");function ds(n){let o=n.direction,s=n.nodes??=[];for(let a of n.nodes??[])if(a.isGroup&&!a.parentId){if(a.shape="swimlane",o)a.direction=o}let i=s.filter((a)=>!a.isGroup&&!a.parentId);if(i.length===0)return;let c=s.find((a)=>a.id===kn);if(!c)c={id:kn,label:"",isGroup:!0,shape:"swimlane",padding:20,...o?{direction:o}:{}},s.push(c);else if(c.isGroup){if(c.shape="swimlane",o)c.direction=o}for(let a of i)a.parentId=kn}e(ds,"prepareLayoutForSwimlanes");function us(n){let o=new Map;for(let f of n.nodes??[])o.set(f.id,f);let s=[];for(let f of n.edges??[]){let g=typeof f.start==="string"?f.start:void 0,y=typeof f.end==="string"?f.end:void 0;if(!g||!y)continue;if(f.labelNodeId)continue;s.push({id:f.id,src:g,dst:y,ref:f})}let i=n.nodes??[],c=i.filter((f)=>f.isGroup),a=i.filter((f)=>!f.isGroup);return{nodes:[...[...c].reverse(),...a].map((f)=>f.id),edges:s,layout:n,nodeById:o}}e(us,"toGraphView");function hs(n,o,s,i){let{layout:c}=n,a=n.nodeById,l=i?.layerGap??100,m=i?.nodeGap??40,f=0;for(let E of o.layers){let b=0;for(let x of E){let d=a.get(x);if(!d){b++;continue}d.layer=f,d.order=b;let M=s.x[x]??b*m,R=s.y[x]??f*l;d.x=M,d.y=R,b++}f++}let g=c.nodes??[],y=new Map,I=[];for(let E of g){if(!E?.isGroup)continue;if(!E.parentId)I.push(E);let b=g.filter((v)=>v.parentId===E.id),x=1/0,d=-1/0,M=1/0,R=-1/0;for(let v of b){let A=v.x??s.x[v.id],F=v.y??s.y[v.id],T=v.width??0,C=v.height??0;if(A!=null&&F!=null)x=Math.min(x,A-T/2),d=Math.max(d,A+T/2),M=Math.min(M,F-C/2),R=Math.max(R,F+C/2)}if(x===1/0||M===1/0)E.x=E.x??0,E.y=E.y??0,E.width=E.width??0,E.height=E.height??0;else{let v=E.padding??20,A=E.parentId?v:2*Gn(E),F=v,T=Math.max(0,d-x)+A,C=Math.max(0,R-M)+F,O=(x+d)/2,_=(M+R)/2;E.x=O,E.y=_,E.width=T,E.height=C,y.set(E.id,{minX:x,maxX:d,minY:M,maxY:R})}}if(I.length>0&&y.size>0){let E=1/0,b=-1/0,x=0;for(let d of I){let M=d.padding??20;if(M>x)x=M;let R=y.get(d.id);if(!R)continue;E=Math.min(E,R.minY),b=Math.max(b,R.maxY)}if(E!==1/0&&b!==-1/0){let d=Math.max(0,b-E),M=36,R=Math.max(x,36),v=d+2*R,A=(E+b)/2;for(let Y of I)Y.y=A,Y.height=v,Y.swimlaneContentTop=E;let F=[...I].sort((Y,P)=>{let V=Y.x??0,z=P.x??0;return V-z}),T=[],C=[],O=[];for(let Y of F){let P=y.get(Y.id);if(!P)continue;let V=Math.max(0,P.maxX-P.minX)+2*Gn(Y),z=(P.minX+P.maxX)/2;T.push(Y.id),C.push(z),O.push(V)}let _=T.length;if(_>0){let Y=new Map;if(_===1)Y.set(T[0],O[0]);else{let P=[];for(let J=0;J<_-1;J++)P.push(C[J+1]-C[J]);let V=Array(_);V[0]=0;for(let J=0;J<_-1;J++)V[J+1]=2*P[J]-V[J];let z=0,D=Number.POSITIVE_INFINITY;for(let J=0;J<_;J++){let st=O[J];if(J%2===0)z=Math.max(z,st-V[J]);else D=Math.min(D,V[J]-st)}let W=z;if(z<=D)W=(z+D)/2;else W=z;for(let J=0;J<_;J++){let st=V[J]+(J%2===0?W:-W),xt=Math.max(O[J],st);Y.set(T[J],xt)}}for(let P of I){let V=Y.get(P.id);if(V!=null)P.width=V;fs(P)}}}}}e(hs,"writeBackToLayoutData");var jr="[EdgeLabelNodes]";function gs(n){let o=[],s=[],i=new Map;for(let l of n.nodes)i.set(l.id,l);for(let l of n.edges){if(!l.label||l.label.length===0)continue;if(l.isLayoutOnly)continue;if(l.labelNodeId)continue;let m=l.start?i.get(l.start):void 0,f=l.end?i.get(l.end):void 0;if(!m||!f){t.warn(jr,`Edge ${l.id} has missing source or target node`);continue}let g=`edge-label-${l.start}-${l.end}-${l.id}`,I=m.parentId!==f.parentId?f.parentId:m.parentId,E={id:g,label:l.label,edgeStart:l.start??"",edgeEnd:l.end??"",shape:"labelRect",width:0,height:0,isEdgeLabel:!0,isDummy:!0,parentId:I,isGroup:!1,labelStyle:Array.isArray(l.labelStyle)?l.labelStyle[0]:l.labelStyle??"",...m.dir?{dir:m.dir}:{}};o.push(E),l.labelNodeId=g,l.label=void 0,l.text=void 0;let b={id:`${l.id}-to-label`,start:l.start,end:g,type:"normal",isLayoutOnly:!0},x={id:`${l.id}-from-label`,start:g,end:l.end,type:"normal",isLayoutOnly:!0};s.push(b,x)}let c=[...n.nodes,...o],a=[...n.edges,...s];return{...n,nodes:c,edges:a}}e(gs,"createEdgeLabelNodes");var Jt=0.001;function Mo(n){let o=n.x??0,s=n.y??0,i=n.width??0,c=n.height??0;return i>0&&c>0?{cx:o,cy:s,rect:ze(o,s,i,c)}:void 0}e(Mo,"measuredNodeRect");function Io(n){if(n.isGroup)return;let o=Mo(n);if(!o)return;return{id:String(n.id??""),cx:o.cx,cy:o.cy,rect:o.rect}}e(Io,"nodeBoundsInfoFor");function ye(n,o,s=Jt){return Math.abs(n.x-o.x)<s&&Math.abs(n.y-o.y)<s}e(ye,"samePoint");function St(n,o,s=Jt){return Math.abs(n.x-o.x)<s}e(St,"sameX");function vt(n,o,s=Jt){return Math.abs(n.y-o.y)<s}e(vt,"sameY");function Dt(n,o,s=Jt){return vt(n,o,s)&&Math.abs(n.x-o.x)>s}e(Dt,"isHorizontalSegment");function Yt(n,o,s=Jt){return St(n,o,s)&&Math.abs(n.y-o.y)>s}e(Yt,"isVerticalSegment");function se(n,o,s,i){return Math.max(0,Math.min(Math.max(n,o),Math.max(s,i))-Math.max(Math.min(n,o),Math.min(s,i)))}e(se,"overlapLength");function Ie(n,o,s=Jt){if(n.horizontal&&o.horizontal&&vt(n.a,o.a,s))return se(n.a.x,n.b.x,o.a.x,o.b.x);if(n.vertical&&o.vertical&&St(n.a,o.a,s))return se(n.a.y,n.b.y,o.a.y,o.b.y);return 0}e(Ie,"sameAxisSegmentOverlapLength");function Ve(n,o=Jt){let s=[];for(let i=0;i<n.length-1;i++){let c=n[i],a=n[i+1],l=Dt(c,a,o),m=Yt(c,a,o);if(l||m)s.push({index:i,a:c,b:a,horizontal:l,vertical:m})}return s}e(Ve,"orthogonalSegmentsForPoints");function he(n,o=Jt){let s=Ve(n,o),i=0;for(let c=1;c<s.length;c++)if(s[c-1].horizontal!==s[c].horizontal)i++;return i}e(he,"countOrthogonalBends");function Et(n,o=Jt){let s=[];for(let i of n){let c=s.length>0?s[s.length-1]:void 0;if(!c||!ye(c,i,o))s.push({x:i.x,y:i.y})}return s}e(Et,"dedupeConsecutivePoints");function So(n,o=Jt){if(!n||n.length!==4)return;let[s,i,c,a]=n;if(Dt(s,i,o)&&Yt(i,c,o)&&Dt(c,a,o))return{kind:"HVH",p0:s,p1:i,p2:c,p3:a};return Yt(s,i,o)&&Dt(i,c,o)&&Yt(c,a,o)?{kind:"VHV",p0:s,p1:i,p2:c,p3:a}:void 0}e(So,"classifyThreeSegmentRoute");function Cn(n,o,s,i=0){let c=Math.min(n.x,o.x),a=Math.max(n.x,o.x),l=Math.min(n.y,o.y),m=Math.max(n.y,o.y);return a>s.left-i&&c<s.right+i&&m>s.top-i&&l<s.bottom+i}e(Cn,"segmentBoundsOverlapRect");function Co(n,o,s=0){return n.x>o.left+s&&n.x<o.right-s&&n.y>o.top+s&&n.y<o.bottom-s}e(Co,"pointInsideRect");function ps(n,o){return n.left<=o.left&&n.right>=o.right&&n.top<=o.top&&n.bottom>=o.bottom}e(ps,"rectContainsRect");function gn(n,o){return n.left<o.right&&n.right>o.left&&n.top<o.bottom&&n.bottom>o.top}e(gn,"rectsOverlap");function $n(n,o){return{left:n.left-o,right:n.right+o,top:n.top-o,bottom:n.bottom+o}}e($n,"inflateRect");function ze(n,o,s,i){return{left:n-s/2,right:n+s/2,top:o-i/2,bottom:o+i/2}}e(ze,"rectFromCenterSize");function fe(n){return Mo(n)?.rect}e(fe,"rectOfNodeBounds");function ke(n,o){switch(o){case"top":return{x:n.cx,y:n.rect.top};case"bottom":return{x:n.cx,y:n.rect.bottom};case"left":return{x:n.rect.left,y:n.cy};case"right":return{x:n.rect.right,y:n.cy}}}e(ke,"portForRectSide");function vo(n,o,s,i,c,a=Jt){let l=o==="left"||o==="right",m=i==="left"||i==="right";if(l&&m){if(o==="right"&&i==="left"&&n.x<s.x||o==="left"&&i==="right"&&n.x>s.x){if(vt(n,s,a))return[n,s];let I=(n.x+s.x)/2;return[n,{x:I,y:n.y},{x:I,y:s.y},s]}if(o===i){if(vt(n,s,a))return;let I=o==="left"?Math.min(n.x,s.x)-c:Math.max(n.x,s.x)+c;return[n,{x:I,y:n.y},{x:I,y:s.y},s]}return}if(!l&&!m){if(o===i){if(St(n,s,a))return;let E=o==="top"?Math.min(n.y,s.y)-c:Math.max(n.y,s.y)+c;return[n,{x:n.x,y:E},{x:s.x,y:E},s]}if(!(o==="bottom"&&i==="top"&&n.y<s.y||o==="top"&&i==="bottom"&&n.y>s.y))return;if(St(n,s,a))return[n,s];let I=(n.y+s.y)/2;return[n,{x:n.x,y:I},{x:s.x,y:I},s]}if(l&&!m){let y=o==="right"&&s.x>n.x||o==="left"&&s.x<n.x,I=i==="top"&&n.y<s.y||i==="bottom"&&n.y>s.y;return y&&I?[n,{x:s.x,y:n.y},s]:void 0}let f=o==="bottom"&&s.y>n.y||o==="top"&&s.y<n.y,g=i==="left"&&n.x<s.x||i==="right"&&n.x>s.x;return f&&g?[n,{x:n.x,y:s.y},s]:void 0}e(vo,"buildOrthogonalPortPath");function Lo(n,o,s,i){return o==="left"||o==="right"?[n,{x:i,y:n.y},{x:i,y:s.y},s]:[n,{x:n.x,y:i},{x:s.x,y:i},s]}e(Lo,"buildSameSideTrackPath");function vn(n){let o=new Map,s=[];for(let i of n){if(i.isEdgeLabel)continue;let c=Io(i);if(!c)continue;o.set(c.id,c),s.push({id:c.id,rect:c.rect})}return{nodeInfoById:o,realNodeRects:s}}e(vn,"collectRealNodeBounds");function Ae(n){let o=[],s=[];for(let i of n){let c=Io(i);if(!c)continue;let a={id:c.id,rect:c.rect};if(i.isEdgeLabel)s.push(a);else o.push(a)}return{realNodeRects:o,labelNodeRects:s}}e(Ae,"collectNodeRectEntries");function ms(n,{includeEdgeLabels:o=!0}={}){let s=[];for(let i of n){if(i.isGroup||!o&&i.isEdgeLabel)continue;let c=i.x??0,a=i.y??0,l=i.width??0,m=i.height??0;s.push({nodeId:i.id,...ze(c,a,l,m)})}return s}e(ms,"collectLayoutNodeRects");function Eo(n,o,s=Jt){let{start:i,end:c}=n;if(!i||!c)return;let a=o.get(i),l=o.get(c);if(!a||!l)return;return{srcId:i,dstId:c,srcInfo:a,dstInfo:l,collinearX:Math.abs(a.cx-l.cx)<s,collinearY:Math.abs(a.cy-l.cy)<s}}e(Eo,"getNodePairGeometry");function Gt(n,o,s,i=[],c=0){for(let a of s){if(i.includes(a.id))continue;if(Cn(n,o,a.rect,-c))return!0}return!1}e(Gt,"segmentHitsAnyRect");function To(n,o,s,i,c=Jt,a=0.000001){let l=vt(n,o,c),m=St(n,o,c),f=vt(s,i,c),g=St(s,i,c);if(l&&f||m&&g)return!1;if(!(l||m)||!(f||g))return!1;let y=l?{a:n,b:o}:{a:s,b:i},I=m?{a:n,b:o}:{a:s,b:i},E=y.a.y,b=Math.min(y.a.x,y.b.x),x=Math.max(y.a.x,y.b.x),d=I.a.x,M=Math.min(I.a.y,I.b.y),R=Math.max(I.a.y,I.b.y);if(d<b||d>x||E<M||E>R)return!1;let v=Math.abs(d-y.a.x)<a&&Math.abs(E-y.a.y)<a||Math.abs(d-y.b.x)<a&&Math.abs(E-y.b.y)<a,A=Math.abs(d-I.a.x)<a&&Math.abs(E-I.a.y)<a||Math.abs(d-I.b.x)<a&&Math.abs(E-I.b.y)<a;return!(v&&A)}e(To,"orthogonalSegmentsCross");function ys(n,o,s,i,c=Jt){let a=vt(n,o,c),l=St(n,o,c),m=vt(s,i,c),f=St(s,i,c);if(l&&f&&St(n,s,c))return se(n.y,o.y,s.y,i.y)>c;if(a&&m&&vt(n,s,c))return se(n.x,o.x,s.x,i.x)>c;return!1}e(ys,"sameAxisSegmentsOverlap");function pn(n,o,s,i,{epsilon:c=Jt,skipDegenerateOther:a=!1}={}){for(let l of s){if(l===i||l.isLayoutOnly)continue;let m=l.points;if(!m||m.length<2)continue;for(let f=0;f<m.length-1;f++){let g=m[f],y=m[f+1];if(a&&ye(g,y,c))continue;if(To(n,o,g,y,c)||ys(n,o,g,y,c))return!0}}return!1}e(pn,"segmentConflictsWithAnyEdge");function Ce(n,o,s,i,c=Jt){let a=vt(n,o,c),l=St(n,o,c),m=vt(s,i,c),f=St(s,i,c);if(!(a&&f||l&&m))return!1;let g=a?{a:n,b:o}:{a:s,b:i},y=a?{a:s,b:i}:{a:n,b:o},I=g.a.y,E=Math.min(g.a.x,g.b.x),b=Math.max(g.a.x,g.b.x),x=y.a.x,d=Math.min(y.a.y,y.b.y),M=Math.max(y.a.y,y.b.y);return x>E+c&&x<b-c&&I>d+c&&I<M-c}e(Ce,"orthogonalSegmentsStrictlyCross");function zn(n,o,s){let i=Math.min(o,s),c=Math.max(o,s);return n>i+Jt&&n<c-Jt}e(zn,"strictlyBetween");function xs(n,o,s){if(St(n,o)&&St(o,s))return zn(o.y,n.y,s.y);if(vt(n,o)&&vt(o,s))return zn(o.x,n.x,s.x);return!1}e(xs,"isCollinearIntermediate");function bs(n){let o=!1,s=[];for(let i=0;i<n.length;i++){let c=s[s.length-1],a=n[i],l=i+1<n.length?n[i+1]:void 0;if(c&&l){if(ye(c,l)){i++,o=!0;continue}if(xs(c,a,l)){o=!0;continue}}s.push(a)}return{points:s,changed:o}}e(bs,"simplifyPolylineOnce");function mn(n){let o=[n[0]];for(let i=1;i<n.length;i++){let c=o[o.length-1],a=n[i];if(!St(c,a)&&!vt(c,a)){let l=o.length>=2?o[o.length-2]:void 0,f=(l?St(l,c):!1)?{x:c.x,y:a.y}:{x:a.x,y:c.y};o.push(f)}o.push(a)}let s=[];for(let i of o){let c=s[s.length-1];if(!c||!ye(c,i))s.push(i)}return s}e(mn,"orthogonalizePolyline");function Se(n){if(n.length<3)return n;let o=[...n];for(let s=0;s<32;s++){let i=bs(o);if(o=i.points,!i.changed)break}return o}e(Se,"simplifyPolyline");var ut=0.001,Ur=0.5,Uo=4;function wo(n,o,s){let i=n;if(i.isLayoutOnly||!i.points||i.points.length<s)return;let c=i.start?o.get(i.start):void 0,a=i.end?o.get(i.end):void 0;return{edge:i,points:i.points,srcRect:c?fe(c):void 0,dstRect:a?fe(a):void 0}}e(wo,"endpointContextFor");function Ms(n,o,s){if(vt(n,o,ut))return{x:n.x<s.left?s.left:s.right,y:n.y};if(St(n,o,ut)){let i=n.y<s.top?s.top:s.bottom;return{x:n.x,y:i}}return{x:Math.min(s.right,Math.max(s.left,n.x)),y:Math.min(s.bottom,Math.max(s.top,n.y))}}e(Ms,"segmentEnterPoint");function Vn(n,o,s){let i=s?1:-1,c=s?0:n.length-1;while(c>=0&&c<n.length&&Co(n[c],o,Ur))c+=i;if(c<0||c>=n.length)return n;let a=c-i;if(a<0||a>=n.length)return n;let l=Ms(n[c],n[a],o);return s?[l,...n.slice(c)]:[...n.slice(0,c+1),l]}e(Vn,"clipEndpoint");function Is(n,o){for(let s of n){let i=wo(s,o,2);if(!i)continue;let c=[...i.points];if(i.srcRect)c=Vn(c,i.srcRect,!0);if(i.dstRect)c=Vn(c,i.dstRect,!1);c=Se(mn(c)),c=Ro(c,i.srcRect,i.dstRect),i.edge.points=Se(mn(c))}}e(Is,"clipEdgeEndpointsToNodeBoundaries");function jn(n,o,s,i=!1){if(vt(n,o,ut)){if(o.y<s.top-ut||o.y>s.bottom+ut)return o;if(i){if(n.x<s.left-ut)return{x:s.left,y:n.y};if(n.x>s.right+ut)return{x:s.right,y:n.y}}return{x:Math.abs(o.x-s.left)<=Math.abs(o.x-s.right)?s.left:s.right,y:n.y}}if(St(n,o,ut)){if(o.x<s.left-ut||o.x>s.right+ut)return o;if(i){if(n.y<s.top-ut)return{x:n.x,y:s.top};if(n.y>s.bottom+ut)return{x:n.x,y:s.bottom}}let c=Math.abs(o.y-s.top)<=Math.abs(o.y-s.bottom);return{x:n.x,y:c?s.top:s.bottom}}return o}e(jn,"snapEndpointToBoundary");function yn(n,o,s){let i=n[o];for(let c=o+s;c>=0&&c<n.length;c+=s){let a=n[c];if(!ye(a,i,ut))return a}return n[o+s]}e(yn,"firstDistinctAdjacent");function xn(n,o){let s=n+Uo,i=o-Uo;return s<=i?{lo:s,hi:i}:{lo:(n+o)/2,hi:(n+o)/2}}e(xn,"cornerClearanceRange");function Un(n,o,s){let{lo:i,hi:c}=xn(o,s);return Math.min(c,Math.max(i,n))}e(Un,"clampToCornerClearance");function Ss(n){let o=Math.max(...n.map((i)=>i.lo)),s=Math.min(...n.map((i)=>i.hi));if(o>s)return;return{lo:o,hi:s}}e(Ss,"intersectRanges");function Wn(n,o){return o==="left"||o==="right"?xn(n.top,n.bottom):xn(n.left,n.right)}e(Wn,"clearanceRangeForSide");function bn(n,o,s){let i=n.y>=s.top-ut&&n.y<=s.bottom+ut,c=n.x>=s.left-ut&&n.x<=s.right+ut;if(vt(n,o,ut)&&i){if(Math.abs(n.x-s.left)<ut)return"left";if(Math.abs(n.x-s.right)<ut)return"right"}if(St(n,o,ut)&&c){if(Math.abs(n.y-s.top)<ut)return"top";if(Math.abs(n.y-s.bottom)<ut)return"bottom"}return}e(bn,"terminalSideForSegment");function Ue(n){return n==="left"||n==="right"}e(Ue,"isHorizontalSide");function Cs(n,o,s,i,c){let a=[],l=s?bn(n,o,s):void 0,m=i?bn(o,n,i):void 0;if(s&&l&&Ue(l)===c)a.push(Wn(s,l));if(i&&m&&Ue(m)===c)a.push(Wn(i,m));return a.length>0?Ss(a):void 0}e(Cs,"straightClearanceRange");function Kn(n,o,s,i,c){let a=Cs(n,o,s,i,c);if(!a)return;let l=c?n.y:n.x,m=Math.min(a.hi,Math.max(a.lo,l));if(Math.abs(m-l)<ut)return;return c?[{x:n.x,y:m},{x:o.x,y:m}]:[{x:m,y:n.y},{x:m,y:o.y}]}e(Kn,"clearStraightEndpointCornerAxis");function Ro(n,o,s){if(n.length!==2)return n;let[i,c]=n;if(vt(i,c,ut))return Kn(i,c,o,s,!0)??n;if(St(i,c,ut))return Kn(i,c,o,s,!1)??n;return n}e(Ro,"clearStraightEndpointCornerConnections");function vs(n,o,s){return Ue(s)?{x:n.x,y:Un(n.y,o.top,o.bottom)}:{x:Un(n.x,o.left,o.right),y:n.y}}e(vs,"cornerClearedEndpoint");function Ls(n,o,s,i,c,a){let l=n.map((m)=>({...m}));for(let m=o;m>=0&&m<n.length;m+=s){let f=n[m];if(a&&!vt(f,i,ut))break;if(!a&&!St(f,i,ut))break;if(a)l[m].y=c.y;else l[m].x=c.x}return l}e(Ls,"moveCollinearEndpointRun");function qn(n,o,s){if(n.length<2)return n;let i=s?0:n.length-1,c=s?1:-1,a=n[i],l=yn(n,i,c);if(!l)return n;let m=bn(a,l,o);if(!m)return n;let f=Ue(m),g=vs(a,o,m);if(ye(a,g,ut))return n;return Ls(n,i,c,a,g,f)}e(qn,"clearEndpointCornerConnection");function Jn(n,o,s){let i=Math.min(n.x,o.x)>=s.left-ut&&Math.max(n.x,o.x)<=s.right+ut,c=Math.min(n.y,o.y)>=s.top-ut&&Math.max(n.y,o.y)<=s.bottom+ut;if(Math.abs(n.y-s.top)<ut&&Math.abs(o.y-s.top)<ut&&i)return"top";if(Math.abs(n.y-s.bottom)<ut&&Math.abs(o.y-s.bottom)<ut&&i)return"bottom";if(Math.abs(n.x-s.left)<ut&&Math.abs(o.x-s.left)<ut&&c)return"left";if(Math.abs(n.x-s.right)<ut&&Math.abs(o.x-s.right)<ut&&c)return"right";return}e(Jn,"borderSideForSegment");function Zn(n,o,s,i){switch(n){case"top":return St(o,s,ut)&&s.y<i.top-ut;case"bottom":return St(o,s,ut)&&s.y>i.bottom+ut;case"left":return vt(o,s,ut)&&s.x<i.left-ut;case"right":return vt(o,s,ut)&&s.x>i.right+ut}}e(Zn,"leavesOutward");function Qn(n,o,s){if(n.length<3)return n;if(s){let a=Jn(n[0],n[1],o);if(a&&Zn(a,n[1],n[2],o))return n.slice(1);return n}let i=n.length-1,c=Jn(n[i-1],n[i],o);if(c&&Zn(c,n[i-1],n[i-2],o))return n.slice(0,i);return n}e(Qn,"collapseOwnBorderStub");function Es(n,o,s){let i=n;if(o){let a=yn(i,0,1);if(a){let l=jn(a,i[0],o);if(l!==i[0])i=[l,...i.slice(1)]}i=Qn(i,o,!0)}if(s){let a=i.length-1,l=yn(i,a,-1);if(l){let m=jn(l,i[a],s,!0);if(m!==i[a])i=[...i.slice(0,a),m]}i=Qn(i,s,!1)}let c=Ro(i,o,s);if(c!==i||i.length===2)return c;if(o)i=qn(i,o,!0);if(s)i=qn(i,s,!1);return i}e(Es,"snapAndCollapseEndpoints");function to(n,o){for(let s of n){let i=wo(s,o,2);if(!i)continue;let c=Et(i.points,ut),a=Es(c,i.srcRect,i.dstRect);if(a.length<3){i.edge.points=a;continue}let l=[a[0],{...a[0]},...a.slice(1,-1),a[a.length-1],{...a[a.length-1]}];i.edge.points=l}}e(to,"prepareEdgeEndpointsForRenderer");function Ao(n){return new Map(n.map((o)=>[o.id,o]))}e(Ao,"buildNodeMap");function Ts(n,o){let s=n.parentId,i=null;while(s){let c=o.get(s);if(!c?.isGroup)break;i=c.id,s=c.parentId}return i}e(Ts,"resolveTopLevelGroupId");function eo(n,o){let s=0,i=n.parentId;while(i){let c=o.get(i);if(!c?.isGroup)break;s++,i=c.parentId}return s}e(eo,"groupDepth");function No(n){let o=1/0,s=-1/0,i=1/0,c=-1/0;for(let a of n){let{x:l,y:m}=a;if(typeof l!=="number"||typeof m!=="number")continue;let f=a.width??0,g=a.height??0;o=Math.min(o,l-f/2),s=Math.max(s,l+f/2),i=Math.min(i,m-g/2),c=Math.max(c,m+g/2)}if(o===1/0||i===1/0)return null;return{minX:o,maxX:s,minY:i,maxY:c}}e(No,"boundsForChildren");function ws(n,o){let s=n.padding??20;n.x=(o.minX+o.maxX)/2,n.y=(o.minY+o.maxY)/2,n.width=Math.max(0,o.maxX-o.minX)+s,n.height=Math.max(0,o.maxY-o.minY)+s}e(ws,"applyGroupBounds");function Rs(n){let o=Ao(n),s=n.filter((i)=>i.isGroup&&i.parentId).sort((i,c)=>eo(c,o)-eo(i,o));for(let i of s){let c=n.filter((l)=>l.parentId===i.id),a=No(c);if(a)ws(i,a)}}e(Rs,"recomputeNestedGroupBounds");function Mn(n,o){let s=n.nodes??[],i=n.edges??[],c=s.filter((f)=>!f.isGroup),a=1/0,l=-1/0;for(let f of c){let g=f[o];if(typeof g!=="number")continue;a=Math.min(a,g),l=Math.max(l,g)}if(!Number.isFinite(a)||!Number.isFinite(l))return!1;let m=e((f)=>a+l-f,"mirror");for(let f of s){let g=f[o];if(typeof g==="number")f[o]=m(g);let y=f.groupTitleRect;if(y)f.groupTitleRect=o==="x"?{...y,left:m(y.right),right:m(y.left)}:{...y,top:m(y.bottom),bottom:m(y.top)}}for(let f of i)for(let g of f.points??[])g[o]=m(g[o]);return!0}e(Mn,"mirrorAxis");function As(n){if(!(n.nodes??[]).some((s)=>!s.isGroup))return!0;return Mn(n,"y")}e(As,"applyBtDirectionTransform");function Ns(n,o="LR"){let s=n.nodes??[],i=n.edges??[],c=s.filter((D)=>!D.isGroup),a=1/0,l=1/0;for(let D of c){let W=D.x??0,J=D.y??0;if(W<a)a=W;if(J<l)l=J}if(!Number.isFinite(a)||!Number.isFinite(l))return!1;let m=36,f=0,g=0;for(let D of c)f+=D.width??0,g+=D.height??0;let y=f/c.length,I=g/c.length,E=I>0?Math.max(1,y/I):1;for(let D of c){let W=D.x??0,st=((D.y??0)-l)*E+m,xt=W-a;D.x=st,D.y=xt}for(let D of i){if(!D.points)continue;for(let W of D.points){let J=W.x,xt=(W.y-l)*E+m,Tt=J-a;W.x=xt,W.y=Tt}}Rs(s);let b=s.filter((D)=>D.isGroup&&!D.parentId);if(b.length===0){if(o==="RL")Mn(n,"x");return!0}let x=Ao(s),d=new Map;for(let D of s){if(D.isGroup)continue;let W=Ts(D,x);if(!W)continue;let J=d.get(W)??[];J.push(D),d.set(W,J)}let M=0;for(let D of b){let W=D.padding??0;if(W>M)M=W}let R=[],v=1/0,A=-1/0;for(let D of b){let W=d.get(D.id)??[],J=No(W);if(!J)continue;v=Math.min(v,J.minX),A=Math.max(A,J.maxX),R.push({lane:D,contentTop:J.minY,contentBottom:J.maxY,centerY:(J.minY+J.maxY)/2})}if(v===1/0||A===-1/0)return!0;let F=Math.max(0,A-v),T=Math.max(M,10),C=F+2*T,O=m+C,P=(v+A)/2-C/2-m,V=P+O/2,z=Math.max(M,m);R.sort((D,W)=>D.centerY-W.centerY);for(let D=0;D<R.length;D++){let W=R[D],J,st;if(D===0)J=W.contentTop-z;else J=(R[D-1].contentBottom+W.contentTop)/2;if(D===R.length-1)st=W.contentBottom+z;else{let $t=R[D+1];st=(W.contentBottom+$t.contentTop)/2}let xt=Math.max(0,st-J),Tt=(J+st)/2;W.lane.x=V,W.lane.y=Tt,W.lane.width=O,W.lane.height=xt,W.lane.swimlaneContentTop=W.contentTop,W.lane.groupTitleRect={left:P,right:P+m,top:J,bottom:st}}if(o==="RL")Mn(n,"x");return!0}e(Ns,"applyLrDirectionTransform");var xe=0.000001,Wr=8,cn=Wr,Kr=[0,cn,-cn,2*cn,-2*cn];function Os(n,o){let{nodeInfoById:s,realNodeRects:i}=vn(o);for(let c of n){if(c.isLayoutOnly)continue;let a=c.points;if(!a||a.length<4)continue;let l=So(Et(a,xe),xe);if(!l)continue;let{p3:m}=l,f=l.kind==="HVH",g=Eo(c,s,xe);if(!g)continue;let{srcId:y,dstId:I,srcInfo:E,dstInfo:b,collinearX:x,collinearY:d}=g;if(x||d)continue;let M,R=E.rect;for(let v of Kr){let A,F,T;if(f){let V=b.cy>E.cy?R.bottom:R.top,z=E.cx+v;if(z<=R.left+xe||z>=R.right-xe)continue;A={x:z,y:V},F={x:z,y:m.y},T={x:m.x,y:m.y}}else{let V=b.cx>E.cx?R.right:R.left,z=E.cy+v;if(z<=R.top+xe||z>=R.bottom-xe)continue;A={x:V,y:z},F={x:m.x,y:z},T={x:m.x,y:m.y}}let C=ye(A,F,xe),O=ye(F,T,xe);if(C&&O)continue;if(!C&&Gt(A,F,i,[y],1))continue;if(!O&&Gt(F,T,i,[I],1))continue;let _=!C&&pn(A,F,n,c,{epsilon:xe,skipDegenerateOther:!0}),Y=!O&&pn(F,T,n,c,{epsilon:xe,skipDegenerateOther:!0});if(_||Y)continue;if(C)M=[F,T];else if(O)M=[A,F];else M=[A,F,T];break}if(M)c.points=M}}e(Os,"portSwapToLShape");function Bs(n,o){let{realNodeRects:a,labelNodeRects:l}=Ae(o.values());for(let m of n){if(m.isLayoutOnly)continue;let f=m.points;if(!f||f.length<4)continue;let g=Et(f,0.001);if(g.length<4)continue;let y=g.length-1,I=g[y],E=g[y-1],b=g[y-2],x=I.x-E.x,d=I.y-E.y,M=Math.hypot(x,d);if(M>=10||M<0.001)continue;let R=E.x-b.x,v=E.y-b.y;if(Math.hypot(R,v)<0.001)continue;let F=Dt(E,I,0.001),T=Yt(E,I,0.001),C=Dt(b,E,0.001),O=Yt(b,E,0.001);if(!(F&&O||T&&C))continue;let{end:_,start:Y}=m,P=_?o.get(_):void 0;if(!P)continue;let V=P.x??0,z=P.y??0,D=fe(P);if(!D)continue;let W,J;if(O){let ot=v<0;W={x:V,y:b.y},J={x:V,y:ot?D.bottom:D.top}}else{let ot=R>0;W={x:b.x,y:z},J={x:ot?D.right:D.left,y:z}}if(Gt(W,J,a,_?[_]:[],-2))continue;if(Gt(W,J,l,[],-2))continue;if(Y){let ot=o.get(Y),dt=ot?fe(ot):void 0;if(dt&&Co(W,dt,2))continue}let st=e((ot,dt)=>`${ot.x.toFixed(3)},${ot.y.toFixed(3)}|${dt.x.toFixed(3)},${dt.y.toFixed(3)}`,"ownSegmentKey"),xt=new Set;for(let ot=0;ot<g.length-1;ot++)xt.add(st(g[ot],g[ot+1]));let Tt=e((ot,dt)=>{for(let Mt of n){if(Mt===m)continue;if(Mt.isLayoutOnly)continue;let Lt=Mt.points;if(!Lt||Lt.length<2)continue;for(let Rt=0;Rt<Lt.length-1;Rt++){let kt=Lt[Rt],re=Lt[Rt+1];if(xt.has(st(kt,re)))continue;if(Ce(ot,dt,kt,re,0.001))return!0}}return!1},"segmentCrossesOtherEdge");if(Tt(W,J))continue;if(y-3>=0){let ot=g[y-3],dt=[Y,_].filter((Mt)=>Boolean(Mt));if(Gt(ot,W,a,dt,-2))continue;if(Tt(ot,W))continue}let Ut=[...g.slice(0,y-2),W,J];m.points=Ut;let lt=m.labelNodeId;if(lt){let ot=o.get(lt);if(ot){let dt=ot.width??0,Mt=ot.height??0;if(dt>0&&Mt>0){let Lt,Rt,kt=-1;for(let re=0;re<Ut.length-1;re++){let ie=Ut[re],ce=Ut[re+1],ge=Math.hypot(ce.x-ie.x,ce.y-ie.y),_e=vt(ie,ce,0.001),Le=St(ie,ce,0.001);if(!(_e&&ge>=dt+2||Le&&ge>=Mt+2))continue;if(ge>kt)kt=ge,Lt=(ie.x+ce.x)/2,Rt=(ie.y+ce.y)/2}if(Lt!==void 0&&Rt!==void 0)ot.x=Lt,ot.y=Rt}}}}}e(Bs,"collapseShortTerminalStub");var at=0.001,qt=8,mt=Ve,_n=e((n,o)=>St(n,o,at)||vt(n,o,at),"orthogonallyAligned");function Ps(n,o){let c=e((b,x)=>{let d=b.x??0,M=b.y??0,R=x.x-d,v=x.y-M,A=(b.width??0)/2,F=(b.height??0)/2;if(Math.abs(v)*A>Math.abs(R)*F){if(v<0)F=-F;return{x:d+(v===0?0:F*R/v),y:M+F}}if(R<0)A=-A;return{x:d+A,y:M+(R===0?0:A*v/R)}},"rectIntersect"),a=e((b,x)=>{let d=Et(b.points??[]);if(d.length<2)return;let M=x?b.start:b.end,R=M?o.get(M):void 0,v=R?fe(R):void 0;if(!R||!M||!v)return;let A=x?d[0]:d[d.length-1],F=x?d[1]:d[d.length-2],T=c(R,A),C=A;if(_n(F,T))C=F;if(St(T,C,at))return{edge:b,edgeId:String(b.id??""),nodeId:M,atStart:x,orientation:"V",coord:T.x,min:Math.min(T.y,C.y),max:Math.max(T.y,C.y),boundary:T,railEnd:C,rect:v};if(vt(T,C,at))return{edge:b,edgeId:String(b.id??""),nodeId:M,atStart:x,orientation:"H",coord:T.y,min:Math.min(T.x,C.x),max:Math.max(T.x,C.x),boundary:T,railEnd:C,rect:v};return},"terminalLaneFor"),l=e((b,x)=>Math.max(0,Math.min(b.max,x.max)-Math.max(b.min,x.min)),"projectedOverlapLength"),m=e((b,x)=>{if(b.nodeId!==x.nodeId||b.orientation!==x.orientation)return!1;if(b.orientation==="H")return(Math.abs(b.boundary.x-b.rect.left)<1||Math.abs(b.boundary.x-b.rect.right)<1)&&St(b.boundary,x.boundary,1);return(Math.abs(b.boundary.y-b.rect.top)<1||Math.abs(b.boundary.y-b.rect.bottom)<1)&&vt(b.boundary,x.boundary,1)},"sameTerminalFace"),f=e((b,x)=>{if(b.nodeId!==x.nodeId||b.orientation!==x.orientation)return!1;return l(b,x)>=qt&&Math.abs(b.coord-x.coord)<0.5},"exactTerminalLaneConflict"),g=e((b,x)=>{if(b.nodeId!==x.nodeId||b.orientation!==x.orientation||b.orientation!=="H"||b.atStart===x.atStart)return!1;let d=l(b,x);if(d<qt)return!1;let M=b.rect.bottom-b.rect.top;if(d<M||d>2*M)return!1;return m(b,x)&&Math.abs(b.coord-x.coord)<16},"nearTerminalLaneConflict"),y=e((b,x)=>{let d=Et(b.edge.points??[]);if(d.length<2)return;let M=b.orientation==="V"?{x:b.boundary.x+x,y:b.boundary.y}:{x:b.boundary.x,y:b.boundary.y+x},R=b.orientation==="V"?{x:b.railEnd.x+x,y:b.railEnd.y}:{x:b.railEnd.x,y:b.railEnd.y+x};if(!e(()=>{if(Math.abs(b.boundary.y-b.rect.top)<1||Math.abs(b.boundary.y-b.rect.bottom)<1)return vt(M,b.boundary,at)&&M.x>=b.rect.left+1&&M.x<=b.rect.right-1;if(Math.abs(b.boundary.x-b.rect.left)<1||Math.abs(b.boundary.x-b.rect.right)<1)return St(M,b.boundary,at)&&M.y>=b.rect.top+1&&M.y<=b.rect.bottom-1;return!1},"boundaryStaysOnSameFace")())return;if(b.atStart){let C=d.length>1&&ye(d[1],b.railEnd,at),O=d.slice(C?2:1),_=O[0];if(_&&!_n(_,R))return;return[M,R,...O]}let A=d.length>1&&ye(d[d.length-2],b.railEnd,at),F=d.slice(0,A?-2:-1),T=F[F.length-1];if(T&&!_n(T,R))return;return[...F,R,M]},"shiftedCandidate"),I=e((b)=>{let x=b.edge,d=Et(x.points??[]);if(d.length!==2)return!1;let{start:M,end:R}=x,v=M?o.get(M):void 0,A=R?o.get(R):void 0;if(!v||!A)return!1;let F=v.x??0,T=v.y??0,C=A.x??0,O=A.y??0,[_,Y]=d;return vt(_,Y,at)&&Math.abs(T-O)<1&&Math.abs(F-C)>1||St(_,Y,at)&&Math.abs(F-C)<1&&Math.abs(T-O)>1},"laneIsStraightCollinearConnector"),E=[-7,7,-14,14,-21,21];for(let b=0;b<8;b++){let x=n.filter((M)=>!M.isLayoutOnly).flatMap((M)=>[a(M,!0),a(M,!1)]).filter((M)=>Boolean(M)),d=!1;for(let M=0;M<x.length&&!d;M++)for(let R=M+1;R<x.length&&!d;R++){let v=x[M],A=x[R];if(v.edge===A.edge||!(f(v,A)||g(v,A)))continue;let F=!f(v,A),T=[v,A].sort((C,O)=>{let _=I(C),Y=I(O);if(_!==Y)return Number(_)-Number(Y);return Number(!O.atStart)-Number(!C.atStart)});for(let C of T){for(let O of E){let _=y(C,O);if(!_)continue;let Y=a({...C.edge,points:_},C.atStart);if(!Y||x.some((P)=>P.edge!==C.edge&&(f(Y,P)||F&&g(Y,P))))continue;C.edge.points=_,d=!0;break}if(d)break}}if(!d)return}}e(Ps,"separateSharedRenderedTerminalLanes");function Fs(n,o){let{realNodeRects:c,labelNodeRects:a}=Ae(o.values()),l=e((f,g)=>{let{start:y,end:I}=f,E=mt(g);if(E.length!==g.length-1)return!1;let b=[y,I].filter((x)=>Boolean(x));for(let x of E){if(Gt(x.a,x.b,c,b,-2))return!1;if(Gt(x.a,x.b,a,[],-2))return!1}for(let x of n){if(x===f||x.isLayoutOnly)continue;let d=x.points;if(!d||d.length<2)continue;for(let M of E)for(let R of mt(Et(d))){if(Ie(M,R,0.5)>=qt)return!1;if(Ce(M.a,M.b,R.a,R.b,at))return!1}}return!0},"candidateIsSafe"),m=e((f,g)=>{if(g+4>=f.length)return;let y=f[g],I=f[g+1],E=f[g+2],b=f[g+3],x=f[g+4],d=Dt(y,I)&&Yt(I,E)&&Dt(E,b)&&Yt(b,x)&&St(y,b,at)&&St(y,x,at)&&St(I,E,at)&&(I.x-y.x)*(b.x-E.x)<0,M=Yt(y,I)&&Dt(I,E)&&Yt(E,b)&&Dt(b,x)&&vt(y,b,at)&&vt(y,x,at)&&vt(I,E,at)&&(I.y-y.y)*(b.y-E.y)<0;if(d||M)return Et([...f.slice(0,g+1),x,...f.slice(g+5)]);if(g+5>=f.length)return;let R=f[g+5],v=Yt(y,I)&&Dt(I,E)&&Yt(E,b)&&Dt(b,x)&&Yt(x,R)&&St(y,x,at)&&St(y,R,at)&&St(E,b,at)&&(E.x-I.x)*(x.x-b.x)<0,A=Dt(y,I)&&Yt(I,E)&&Dt(E,b)&&Yt(b,x)&&Dt(x,R)&&vt(y,x,at)&&vt(y,R,at)&&vt(E,b,at)&&(E.y-I.y)*(x.y-b.y)<0;if(!v&&!A)return;return Et([...f.slice(0,g+1),R,...f.slice(g+6)])},"withoutDogleg");for(let f=0;f<8;f++){let g=!1;for(let y of n){if(y.isLayoutOnly)continue;let I=Et(y.points??[]);for(let E=0;E<=I.length-5;E++){let b=m(I,E);if(!b||!l(y,b))continue;y.points=b,g=!0;break}if(g)break}if(!g)return}}e(Fs,"collapseRedundantRectangularDoglegs");function no(n,o){let{realNodeRects:a,labelNodeRects:l}=Ae(o.values()),m=n.filter((x)=>!x.isLayoutOnly),f=e((x,d,M)=>Et(x===d?M??[]:x.points??[]),"pointsFor"),g=e((x,d)=>{let M=0;for(let R=0;R<m.length;R++){let v=mt(f(m[R],x,d));for(let A=R+1;A<m.length;A++){let F=mt(f(m[A],x,d));for(let T of v)for(let C of F)if(Ce(T.a,T.b,C.a,C.b,at))M++}}return M},"strictCrossingCount"),y=e((x)=>{let d=mt(x);if(d.length!==3)return;let M=d[1];if(d[0].horizontal===M.horizontal||d[2].horizontal===M.horizontal)return;return{index:M.index,horizontal:M.horizontal,vertical:M.vertical,segment:M}},"middleRail"),I=e((x,d)=>{let M=[x.start,x.end].filter((R)=>Boolean(R));return a.filter((R)=>{if(M.includes(R.id))return!1;let v=R.rect;if(d.horizontal)return se(d.a.x,d.b.x,v.left,v.right)>=qt&&d.a.y>=v.top-2&&d.a.y<=v.bottom+2;return se(d.a.y,d.b.y,v.top,v.bottom)>=qt&&d.a.x>=v.left-2&&d.a.x<=v.right+2})},"blockingRectsFor"),E=e((x,d,M)=>{let R=x.map((A)=>({...A}));if(d.horizontal)R[d.index].y=M,R[d.index+1].y=M;else if(d.vertical)R[d.index].x=M,R[d.index+1].x=M;else return;let v=Se(Et(R));return mt(v).length===v.length-1?v:void 0},"candidateByMovingRail"),b=e((x,d,M)=>{let R=[x.start,x.end].filter((A)=>Boolean(A)),v=mt(d);if(v.length!==d.length-1)return!1;for(let A of v){if(Gt(A.a,A.b,a,R,-2))return!1;if(Gt(A.a,A.b,l,[],-2))return!1}for(let A of m){if(A===x)continue;for(let F of v)for(let T of mt(f(A)))if(Ie(F,T,0.5)>=qt)return!1}return g(x,d)<=M},"candidateIsSafe");for(let x=0;x<8;x++){let d=g(),M=!1;for(let R of m){let v=f(R),A=y(v);if(!A)continue;let F=I(R,A.segment);if(F.length===0)continue;let T=A.horizontal?[Math.min(...F.map((C)=>C.rect.top))-20,Math.max(...F.map((C)=>C.rect.bottom))+20]:[Math.min(...F.map((C)=>C.rect.left))-20,Math.max(...F.map((C)=>C.rect.right))+20];for(let C of T){let O=E(v,A.segment,C);if(!O||!b(R,O,d))continue;R.points=O,M=!0;break}if(M)break}if(!M)return}}e(no,"liftObstacleHuggingSameSideRails");function oo(n,o){let i=e((f)=>{let g=f.groupTitleRect;if(!g||typeof g.left!=="number"||typeof g.right!=="number"||typeof g.top!=="number"||typeof g.bottom!=="number"||!Number.isFinite(g.left)||!Number.isFinite(g.right)||!Number.isFinite(g.top)||!Number.isFinite(g.bottom)||g.right<=g.left||g.bottom<=g.top)return;return{left:g.left,right:g.right,top:g.top,bottom:g.bottom}},"validTitleRect"),c=e((f)=>{if(!f.isGroup||f.parentId)return;let g=f.direction,y=typeof g==="string"?g.toUpperCase():"";if(y==="LR"||y==="RL"||y==="BT")return;let I=i(f),{y:E,height:b}=f;if(!I||typeof E!=="number"||typeof b!=="number"||!Number.isFinite(E)||!Number.isFinite(b)||b<=0)return;let x=I.right-I.left,d=I.bottom-I.top;if(d<=0||x<d)return;return{node:f,rect:I}},"topLaneTitleFor"),a=e((f,g)=>{if(!f.horizontal)return!1;let y=f.a.y;if(y<=g.top+at||y>=g.bottom-at)return!1;return se(f.a.x,f.b.x,g.left,g.right)>=qt},"horizontalSegmentIntersectsTitle"),l=[...o.values()].map(c).filter((f)=>Boolean(f));if(l.length===0)return;let m=0;for(let f of n){if(f.isLayoutOnly)continue;let g=Et(f.points??[]);for(let y of mt(g))for(let I of l){if(!a(y,I.rect))continue;m=Math.max(m,I.rect.bottom-y.a.y+4)}}if(m<=at)return;for(let f of l){let g=f.node.y,y=f.node.height;if(typeof g!=="number"||typeof y!=="number"||!Number.isFinite(g)||!Number.isFinite(y)||y<=0)continue;f.node.y=g-m/2,f.node.height=y+m,f.node.groupTitleRect={...f.rect,top:f.rect.top-m,bottom:f.rect.bottom-m}}}e(oo,"liftTopLaneTitleBandsAboveRails");function so(n,o){let i=e((g)=>{let y=g.groupTitleRect;if(!y||typeof y.left!=="number"||typeof y.right!=="number"||typeof y.top!=="number"||typeof y.bottom!=="number"||!Number.isFinite(y.left)||!Number.isFinite(y.right)||!Number.isFinite(y.top)||!Number.isFinite(y.bottom)||y.right<=y.left||y.bottom<=y.top)return;return{left:y.left,right:y.right,top:y.top,bottom:y.bottom}},"validTitleRect"),c=e((g)=>{if(!g.isGroup||g.parentId)return;if(g.direction!=="LR")return;let I=i(g),{x:E,width:b}=g;if(!I||typeof E!=="number"||typeof b!=="number"||!Number.isFinite(E)||!Number.isFinite(b)||b<=0)return;let x=I.right-I.left,d=I.bottom-I.top;if(x<=0||d<x)return;return{node:g,rect:I}},"leftLaneTitleFor"),a=e((g,y)=>{if(!g.vertical)return!1;let I=g.a.x;if(I<=y.left+at||I>=y.right-at)return!1;return se(g.a.y,g.b.y,y.top,y.bottom)>=qt},"verticalSegmentIntersectsTitle"),l=e((g,y)=>{if(!g.horizontal)return!1;let I=g.a.y;if(I<=y.top+at||I>=y.bottom-at)return!1;return se(g.a.x,g.b.x,y.left,y.right)>=qt},"horizontalSegmentIntersectsTitle"),m=[...o.values()].map(c).filter((g)=>Boolean(g));if(m.length===0)return;let f=0;for(let g of n){if(g.isLayoutOnly)continue;let y=Et(g.points??[]);for(let I of mt(y))for(let E of m)if(a(I,E.rect))f=Math.max(f,E.rect.right-I.a.x+4);else if(l(I,E.rect)){let b=Math.min(I.a.x,I.b.x);f=Math.max(f,E.rect.right-b+4)}}if(f<=at)return;for(let g of m){let y=g.node.x,I=g.node.width;if(typeof y!=="number"||typeof I!=="number"||!Number.isFinite(y)||!Number.isFinite(I)||I<=0)continue;g.node.x=y-f/2,g.node.width=I+f,g.node.groupTitleRect={...g.rect,left:g.rect.left-f,right:g.rect.right-f}}}e(so,"shiftLeftLaneTitleBandsLeftOfRails");function ks(n,o){let{realNodeRects:c}=Ae(o.values()),a=n.filter((d)=>!d.isLayoutOnly),l=e((d,M=new Map)=>Et(M.get(d)??d.points??[]),"replacementPointsFor"),m=e((d=new Map)=>{let M=0;for(let R=0;R<a.length;R++){let v=mt(l(a[R],d));for(let A=R+1;A<a.length;A++){let F=mt(l(a[A],d));for(let T of v)for(let C of F)if(Ce(T.a,T.b,C.a,C.b,at))M++}}return M},"crossingCount"),f=e((d=new Map)=>a.reduce((M,R)=>M+he(l(R,d)),0),"totalBends"),g=e((d)=>{let M=l(d);if(M.length<4)return;let R=M[M.length-2],v=M[M.length-1];if(!Dt(R,v,at)&&!Yt(R,v,at))return;return{tailStart:R,terminal:v}},"terminalTailFor"),y=e((d,M)=>{let R=l(d);if(R.length<3)return;let v=R[0],A=R[1],F;if(Dt(v,A,at))F={x:A.x,y:M.tailStart.y};else if(Yt(v,A,at))F={x:M.tailStart.x,y:A.y};else return;let T=Se(Et([v,A,F,M.tailStart,M.terminal]));return mt(T).length===T.length-1?T:void 0},"candidateWithDestinationTail"),I=e((d,M)=>{let R=[d.start,d.end].filter((v)=>Boolean(v));for(let v of mt(M))if(Gt(v.a,v.b,c,R,-2))return!0;return!1},"pathHasNodeHit"),E=e((d,M,R)=>{for(let v of a){if(v===d)continue;for(let A of mt(M))for(let F of mt(l(v,R)))if(Ie(A,F,0.5)>=qt)return!0}return!1},"pathHasSharedTrack"),b=e((d,M,R)=>!I(d,M)&&!E(d,M,R),"candidateIsSafe"),x=e(()=>{let d=new Map;for(let M of a){let R=M.end;if(!R||!o.has(R))continue;if(l(M).length<4)continue;let A=d.get(R)??[];A.push(M),d.set(R,A)}return d},"edgesByDestination");for(let d=0;d<4;d++){let M=m();if(M===0)return;let R=f(),v,A=M,F=R;for(let T of x().values())for(let C=0;C<T.length;C++)for(let O=C+1;O<T.length;O++){let _=T[C],Y=T[O],P=g(_),V=g(Y);if(!P||!V)continue;let z=y(_,V),D=y(Y,P);if(!z||!D)continue;let W=new Map([[_,z],[Y,D]]);if(!b(_,z,W)||!b(Y,D,W))continue;let J=m(W),st=f(W);if(J>=M)continue;if(J>A||J===A&&st>=F)continue;v=W,A=J,F=st}if(!v)return;for(let[T,C]of v)T.points=C}}e(ks,"swapDestinationTerminalTailsToReduceCrossings");function _s(n,o){let{realNodeRects:l,labelNodeRects:m}=Ae(o.values()),f=n.filter((T)=>!T.isLayoutOnly),g=e((T,C=new Map)=>Et(C.get(T)??T.points??[]),"replacementPointsFor"),y=e((T=new Map)=>{let C=0;for(let O=0;O<f.length;O++){let _=mt(g(f[O],T));for(let Y=O+1;Y<f.length;Y++){let P=mt(g(f[Y],T));for(let V of _)for(let z of P)if(Ce(V.a,V.b,z.a,z.b,at))C++}}return C},"strictCrossingCount"),I=e((T=new Map)=>f.reduce((C,O)=>C+he(g(O,T)),0),"totalBends"),E=e((T)=>{let{start:C,end:O}=T,_=C?o.get(C):void 0,Y=O?o.get(O):void 0,P=_?fe(_):void 0,V=Y?fe(Y):void 0;return P&&V?{src:P,dst:V}:void 0},"endpointRectsFor"),b=e((T,C,O)=>{if(O.index<=0||O.index+1>=C.length-1)return;let _=E(T);if(!_)return;if(O.vertical){let Y=O.a.x,P=Math.min(_.src.left,_.dst.left),V=Math.max(_.src.right,_.dst.right),z=Y<P-at?"left":Y>V+at?"right":void 0;if(!z)return;return{edge:T,points:C,segmentIndex:O.index,axis:"vertical",side:z,coord:Y,min:Math.min(O.a.y,O.b.y),max:Math.max(O.a.y,O.b.y)}}if(O.horizontal){let Y=O.a.y,P=Math.min(_.src.top,_.dst.top),V=Math.max(_.src.bottom,_.dst.bottom),z=Y<P-at?"top":Y>V+at?"bottom":void 0;if(!z)return;return{edge:T,points:C,segmentIndex:O.index,axis:"horizontal",side:z,coord:Y,min:Math.min(O.a.x,O.b.x),max:Math.max(O.a.x,O.b.x)}}return},"externalRailForSegment"),x=e(()=>{let T=[];for(let C of f){let O=g(C);for(let _ of mt(O)){let Y=b(C,O,_);if(Y)T.push(Y)}}return T},"collectExternalRails"),d=e((T,C)=>T.edge!==C.edge&&T.axis===C.axis&&T.side===C.side&&se(T.min,T.max,C.min,C.max)>=qt,"railsInteract"),M=e((T)=>{let C=[],O=new Set;for(let _ of T){if(O.has(_))continue;let Y=[_],P=[];O.add(_);while(Y.length>0){let V=Y.pop();P.push(V);for(let z of T)if(!O.has(z)&&d(V,z))O.add(z),Y.push(z)}if(P.length>1)C.push(P)}return C},"connectedComponents"),R=e((T)=>{let C=[];for(let O of T)if(!C.some((_)=>Math.abs(_-O.coord)<at))C.push(O.coord);while(C.length<T.length){let O=Math.min(...C),_=Math.max(...C),Y=T[0].side;C.push(Y==="left"||Y==="top"?O-12*(T.length-C.length):_+12*(T.length-C.length))}return C},"uniqueCoordsFor"),v=e((T)=>{let C=T.map((Y)=>Y.coord),O=R(T),_=[];if(T.length<=6){let Y=Array(O.length).fill(!1),P=[],V=e(()=>{if(P.length===T.length){if(P.some((z,D)=>Math.abs(z-C[D])>=at))_.push([...P]);return}for(let[z,D]of O.entries()){if(Y[z])continue;Y[z]=!0,P.push(D),V(),P.pop(),Y[z]=!1}},"visit");return V(),_}for(let Y=0;Y<C.length;Y++)for(let P=Y+1;P<C.length;P++){let V=[...C];[V[Y],V[P]]=[V[P],V[Y]],_.push(V)}return _},"coordinateAssignmentsFor"),A=e((T,C)=>{let O=new Map;for(let[Y,P]of T.entries()){let V=C[Y],z=O.get(P.edge)??P.points.map((D)=>({x:D.x,y:D.y}));if(P.axis==="vertical")z[P.segmentIndex].x=V,z[P.segmentIndex+1].x=V;else z[P.segmentIndex].y=V,z[P.segmentIndex+1].y=V;O.set(P.edge,z)}let _=new Map;for(let[Y,P]of O){let V=Se(Et(P));if(mt(V).length!==V.length-1)return;_.set(Y,V)}return _},"replacementsForAssignment"),F=e((T)=>{for(let[C,O]of T){let _=[C.start,C.end].filter((Y)=>Boolean(Y));for(let Y of mt(O)){if(Gt(Y.a,Y.b,l,_,-2))return!1;if(Gt(Y.a,Y.b,m,[],-2))return!1}}for(let C=0;C<f.length;C++){let O=f[C],_=T.has(O),Y=mt(g(O,T));for(let P=C+1;P<f.length;P++){let V=f[P];if(!_&&!T.has(V))continue;let z=mt(g(V,T));for(let D of Y)for(let W of z)if(Ie(D,W,0.5)>=qt)return!1}}return!0},"candidateIsSafe");for(let T=0;T<4;T++){let C=y();if(C===0)return;let O,_=C,Y=I(),P=Number.POSITIVE_INFINITY;for(let V of M(x()))for(let z of v(V)){let D=A(V,z);if(!D||!F(D))continue;let W=y(D);if(W>=C)continue;let J=I(D),st=V.reduce((xt,Tt,$t)=>xt+Math.abs(z[$t]-Tt.coord),0);if(W>_||W===_&&(J>Y||J===Y&&st>=P))continue;O=D,_=W,Y=J,P=st}if(!O)return;for(let[V,z]of O)V.points=z}}e(_s,"reassignCrossingExternalRailChannels");function Hs(n,o){let{realNodeRects:c,labelNodeRects:a}=Ae(o.values()),l=n.filter((x)=>!x.isLayoutOnly),m=e((x,d,M)=>Et(x===d?M??[]:x.points??[]),"pointsFor"),f=e((x)=>mt(x).reduce((d,M)=>{let R=M.a.x-M.b.x,v=M.a.y-M.b.y;return d+Math.hypot(R,v)},0),"pathLength"),g=e((x,d)=>{let M=0;for(let R=0;R<l.length;R++){let v=mt(m(l[R],x,d));for(let A=R+1;A<l.length;A++){let F=mt(m(l[A],x,d));for(let T of v)for(let C of F)if(Ce(T.a,T.b,C.a,C.b,at))M++}}return M},"strictCrossingCount"),y=e((x,d)=>{if(x.horizontal){let M=x.a.y;return(Math.abs(M-d.top)<1||Math.abs(M-d.bottom)<1)&&se(x.a.x,x.b.x,d.left,d.right)>=qt}if(x.vertical){let M=x.a.x;return(Math.abs(M-d.left)<1||Math.abs(M-d.right)<1)&&se(x.a.y,x.b.y,d.top,d.bottom)>=qt}return!1},"segmentRunsAlongRectBorder"),I=e((x)=>{let d=[x.start,x.end].filter((R)=>Boolean(R)),M=[];for(let R of d){let v=o.get(R),A=v?fe(v):void 0;if(A)M.push(A)}return M},"endpointRectsFor"),E=e((x,d)=>{if(d+3>=x.length)return[];let M=x[d],R=x[d+1],v=x[d+2],A=x[d+3],F=Dt(M,R,at)&&Yt(R,v,at)&&Dt(v,A,at),T=Yt(M,R,at)&&Dt(R,v,at)&&Yt(v,A,at);if(!F&&!T)return[];if(!(F?Math.sign(R.x-M.x)!==Math.sign(A.x-v.x):Math.sign(R.y-M.y)!==Math.sign(A.y-v.y)))return[];let O=St(M,A,at)||vt(M,A,at)?[]:[{x:M.x,y:A.y},{x:A.x,y:M.y}],_=O.length===0?[[...x.slice(0,d+1),...x.slice(d+3)]]:O.map((P)=>[...x.slice(0,d+1),P,...x.slice(d+3)]),Y=new Set;return _.map((P)=>Se(Et(P))).filter((P)=>{if(mt(P).length!==P.length-1)return!1;if(!P.some((z)=>ye(z,A,at)))return!1;let V=P.map((z)=>`${z.x.toFixed(3)},${z.y.toFixed(3)}`).join("|");if(Y.has(V))return!1;return Y.add(V),!0})},"shortcutCandidatesAt"),b=e((x,d,M)=>{let R=[x.start,x.end].filter((A)=>Boolean(A)),v=I(x);for(let A of mt(d)){if(Gt(A.a,A.b,c,R,-2))return!1;if(Gt(A.a,A.b,a,[],-2))return!1;if(v.some((F)=>y(A,F)))return!1}for(let A of l){if(A===x)continue;for(let F of mt(d))for(let T of mt(m(A)))if(Ie(F,T,0.5)>=qt)return!1}return g(x,d)<=M},"candidateIsSafe");for(let x=0;x<8;x++){let d=g(),M,R,v=d,{POSITIVE_INFINITY:A,POSITIVE_INFINITY:F}=Number;for(let T of l){let C=m(T),O=he(C,at),_=f(C);for(let Y=0;Y<=C.length-4;Y++)for(let P of E(C,Y)){let V=he(P,at),z=f(P);if(!(V<O||V===O&&z<_-at)||!b(T,P,d))continue;let W=g(T,P);if(W>v||W===v&&(V>A||V===A&&z>=F))continue;M=T,R=P,v=W,A=V,F=z}}if(!M||!R)return;M.points=R}}e(Hs,"shortcutRedundantOrthogonalJogs");function Ds(n,o){let l=[];for(let H of o.values()){if(H.isGroup||H.isEdgeLabel)continue;let j=H.x??0,U=H.y??0,et=fe(H);if(!et)continue;l.push({id:String(H.id??""),cx:j,cy:U,rect:et})}if(l.length===0)return;let m=new Map(l.map((H)=>[H.id,H])),f=l.map((H)=>({id:H.id,rect:H.rect})),g=["top","bottom","left","right"],y={top:Math.min(...l.map((H)=>H.rect.top))-20,bottom:Math.max(...l.map((H)=>H.rect.bottom))+20,left:Math.min(...l.map((H)=>H.rect.left))-20,right:Math.max(...l.map((H)=>H.rect.right))+20},I=n.filter((H)=>!H.isLayoutOnly),E=new Map(I.map((H,j)=>[H,j])),b=e((H)=>{let j=H==="left"||H==="top"?-1:1,U=[];for(let et=0;et<=2;et++)U.push(y[H]+j*20*et);return U},"outwardTracksForSide"),x=e((H,j=new Map)=>Et(j.get(H)??H.points??[]),"replacementPointsFor"),d=e((H,j)=>{let U=0;for(let et of H)for(let p of j)if(Ce(et.a,et.b,p.a,p.b,at))U++;return U},"crossingCountBetweenSegments"),M=e((H,j)=>d(mt(H),mt(j)),"crossingCountBetweenPaths"),R=e((H=new Map)=>{let j=0,U=[],et=new Set,p=[],S=e((w)=>{if(!et.has(w))et.add(w),p.push(w)},"addEdge");for(let w=0;w<I.length;w++){let N=I[w],B=x(N,H);for(let G=w+1;G<I.length;G++){let nt=I[G],it=M(B,x(nt,H));if(it>0)j+=it,U.push({first:N,second:nt,count:it}),S(N),S(nt)}}return p.sort((w,N)=>(E.get(w)??0)-(E.get(N)??0)),{count:j,pairs:U,edgeSet:et,edges:p}},"crossingSnapshot"),v=e((H,j)=>{let U=new Set(j.keys());if(U.size===0)return H.count;let et=0;for(let S of H.pairs)if(U.has(S.first)||U.has(S.second))et+=S.count;let p=0;for(let S=0;S<I.length;S++){let w=I[S],N=U.has(w),B=x(w,j);for(let G=S+1;G<I.length;G++){let nt=I[G];if(!N&&!U.has(nt))continue;p+=M(B,x(nt,j))}}return H.count-et+p},"crossingCountWithReplacements"),A=e((H)=>{let j=new Map;for(let p of H.pairs){let S=j.get(p.first)??new Set;S.add(p.second),j.set(p.first,S);let w=j.get(p.second)??new Set;w.add(p.first),j.set(p.second,w)}let U=[],et=new Set;for(let p of H.edges){if(et.has(p))continue;let S=[p],w=[];et.add(p);while(S.length>0){let N=S.pop();w.push(N);for(let B of j.get(N)??[])if(!et.has(B))et.add(B),S.push(B)}if(w.sort((N,B)=>(E.get(N)??0)-(E.get(B)??0)),w.length>1)U.push(w)}return U},"crossingComponents"),F=e((H)=>[H.start,H.end].filter((j)=>Boolean(j)),"endpointIdsFor"),T=e((H)=>{let j=[];for(let U of A(H)){let et=new Set(U),p=new Set(U.flatMap((w)=>F(w))),S=[...U];for(let w of I){if(et.has(w))continue;if(F(w).some((N)=>p.has(N)))S.push(w)}S.sort((w,N)=>(E.get(w)??0)-(E.get(N)??0)),j.push(S)}return j},"pairSearchGroups"),C=e((H,j,U)=>v(H,new Map([[j,U]])),"crossingCountWithSingleReplacement"),O=e((H)=>{let j=new Map;for(let U of H.pairs)j.set(U.first,(j.get(U.first)??0)+U.count),j.set(U.second,(j.get(U.second)??0)+U.count);return j},"currentCrossingsByEdge"),_=e((H)=>H.slice(1).reduce((j,U,et)=>{let p=H[et];return j+Math.abs(U.x-p.x)+Math.abs(U.y-p.y)},0),"pathLength"),Y=e((H=new Map)=>I.reduce((j,U)=>j+he(x(U,H)),0),"totalBends"),P=e((H=new Map)=>I.reduce((j,U)=>j+_(x(U,H)),0),"totalLength"),V=e((H,j,U=new Map)=>{let et=mt(j);for(let p of I){if(p===H)continue;for(let S of et)for(let w of mt(x(p,U)))if(Ie(S,w,0.5)>=qt)return!0}return!1},"pathHasSegmentConflict"),z=e((H,j)=>{let U=[H.start,H.end].filter((et)=>Boolean(et));for(let et of mt(j))if(Gt(et.a,et.b,f,U,-2))return!0;return!1},"pathHitsNode"),D=e((H,j)=>{let U=Se(Et(j));if(mt(U).length===U.length-1)H.push(U)},"pushOrthogonalCandidate"),W=e((H)=>H==="left"||H==="right","sideIsHorizontal"),J=e((H,j,U)=>{switch(j){case"left":return Math.min(H.x,U.x)-20;case"right":return Math.max(H.x,U.x)+20;case"top":return Math.min(H.y,U.y)-20;case"bottom":return Math.max(H.y,U.y)+20}},"localTrackForSameSide"),st=e((H,j,U,et)=>{let p=U==="left"||U==="top"?-1:1,S=[J(j,U,et),y[U]];for(let w of S)for(let N=0;N<=2;N++)D(H,Lo(j,U,et,w+p*20*N))},"addSameSideCandidates"),xt=e((H,j,U,et,p)=>{for(let S of b(U))for(let w of b(p))D(H,[j,{x:S,y:j.y},{x:S,y:w},{x:et.x,y:w},et])},"addHorizontalToVerticalCandidates"),Tt=e((H,j,U,et,p)=>{for(let S of b(U))for(let w of b(p))D(H,[j,{x:j.x,y:S},{x:w,y:S},{x:w,y:et.y},et])},"addVerticalToHorizontalCandidates"),$t=e((H,j,U,et,p)=>{let S=[...b("top"),...b("bottom")];for(let w of b(U))for(let N of b(p))for(let B of S)D(H,[j,{x:w,y:j.y},{x:w,y:B},{x:N,y:B},{x:N,y:et.y},et])},"addHorizontalPairCandidates"),Ut=e((H,j,U,et,p)=>{let S=[...b("left"),...b("right")];for(let w of b(U))for(let N of b(p))for(let B of S)D(H,[j,{x:j.x,y:w},{x:B,y:w},{x:B,y:N},{x:et.x,y:N},et])},"addVerticalPairCandidates"),lt=e((H)=>{let j=new Set;return H.map((U)=>Et(U)).filter((U)=>{let et=U.map((p)=>`${p.x.toFixed(3)},${p.y.toFixed(3)}`).join("|");if(j.has(et)||U.length<2)return!1;return j.add(et),!0})},"dedupeCandidatePaths"),ot=e((H,j,U,et)=>{let p=[],S=vo(H,j,U,et,20,at);if(S)D(p,S);if(j===et)st(p,H,j,U);let w=W(j),N=W(et);if(w&&!N)xt(p,H,j,U,et);else if(!w&&N)Tt(p,H,j,U,et);else if(w)$t(p,H,j,U,et);else Ut(p,H,j,U,et);return lt(p)},"buildCandidatesForSides"),dt=e((H,j,U,et)=>{let p=[...b("left"),...b("right")],S=[...b("top"),...b("bottom")];for(let w of g){let N=ke(et,w),B=w==="top"||w==="bottom"?b(w):S;for(let G of p){D(H,[j,U,{x:G,y:U.y},{x:G,y:N.y},N]);for(let nt of B)D(H,[j,U,{x:G,y:U.y},{x:G,y:nt},{x:N.x,y:nt},N])}}},"addVerticalDepartureOuterTrackCandidates"),Mt=e((H,j,U,et)=>{let p=[...b("left"),...b("right")],S=[...b("top"),...b("bottom")];for(let w of g){let N=ke(et,w),B=w==="left"||w==="right"?b(w):p;for(let G of S){D(H,[j,U,{x:U.x,y:G},{x:N.x,y:G},N]);for(let nt of B)D(H,[j,U,{x:U.x,y:G},{x:nt,y:G},{x:nt,y:N.y},N])}}},"addHorizontalDepartureOuterTrackCandidates"),Lt=e((H)=>{let{start:j,end:U}=H,et=U?m.get(U):void 0;if(!j||!et)return[];let p=Et(H.points??[]);if(p.length<4)return[];let S=p[0],w=p[1],N=[];if(Yt(S,w,at))dt(N,S,w,et);else if(Dt(S,w,at))Mt(N,S,w,et);return N},"terminalPreservingOuterTrackCandidates"),Rt=e((H)=>{let{start:j,end:U}=H,et=j?m.get(j):void 0,p=U?m.get(U):void 0;if(!et||!p)return[];let S=[];for(let w of g){let N=ke(et,w);for(let B of g)S.push(...ot(N,w,ke(p,B),B))}return S.push(...Lt(H)),S},"candidatePathsFor"),kt=e(()=>new Map(I.map((H)=>[H,mt(x(H))])),"currentSegmentsByEdge"),re=e((H,j,U)=>{let et=new Set;for(let p of I){if(p===H)continue;let S=U.get(p)??mt(x(p));if(j.some((w)=>S.some((N)=>Ie(w,N,0.5)>=qt)))et.add(p)}return et},"sharedTrackConflictsFor"),ie=e((H,j,U,et)=>{let p=new Set;return Rt(H).map((w)=>Se(Et(w))).filter((w)=>{if(z(H,w))return!1;let N=w.map((B)=>`${B.x.toFixed(3)},${B.y.toFixed(3)}`).join("|");if(p.has(N)||w.length<2)return!1;return p.add(N),!0}).map((w)=>{let N=mt(w),B=0;for(let G of I){if(G===H)continue;B+=d(N,U.get(G)??mt(x(G)))}return{candidate:w,candidateSegments:N,crossings:j.count-(et.get(H)??0)+B,bends:he(w,at),totalBends:he(w),length:_(w)}}).filter(({crossings:w})=>w<=j.count).sort((w,N)=>w.crossings-N.crossings||w.bends-N.bends||w.length-N.length).slice(0,48).map((w)=>({path:w.candidate,segments:w.candidateSegments,sharedTrackConflicts:re(H,w.candidateSegments,U),totalBends:w.totalBends,length:w.length}))},"pairCandidatesFor"),ce=e((H,j,U,et,p,S)=>{let w=0;for(let B of H.pairs)if(B.first===j||B.second===j||B.first===et||B.second===et)w+=B.count;let N=d(U.segments,p.segments);for(let B of I){if(B===j||B===et)continue;let G=S.get(B)??mt(x(B));N+=d(U.segments,G)+d(p.segments,G)}return H.count-w+N},"pairCrossingCount"),ge=e((H,j)=>{for(let U of H.sharedTrackConflicts)if(U!==j)return!1;return!0},"conflictsOnlyWith"),_e=e((H,j)=>H.segments.some((U)=>j.segments.some((et)=>Ie(U,et,0.5)>=qt)),"candidatesShareTrack"),Le=e((H,j,U,et)=>ge(j,U.edge)&&ge(et,H.edge)&&!_e(j,et),"pairCandidatesAreCompatible"),He=e((H,j,U,et,p)=>{let S=ce(H.current,j.edge,U,et.edge,p,H.baseSegments);if(S>=H.current.count)return;return{replacements:new Map([[j.edge,U.path],[et.edge,p.path]]),crossings:S,bends:H.currentBends-(H.baseBendsByEdge.get(j.edge)??0)-(H.baseBendsByEdge.get(et.edge)??0)+U.totalBends+p.totalBends,length:H.currentLength-(H.baseLengthByEdge.get(j.edge)??0)-(H.baseLengthByEdge.get(et.edge)??0)+U.length+p.length}},"scorePairReplacement"),Tn=e((H,j)=>H.crossings<j.crossings||H.crossings===j.crossings&&(H.bends<j.bends||H.bends===j.bends&&H.length<j.length),"pairScoreIsBetter"),wn=e((H,j,U,et)=>{let p=et;for(let S of j.candidates)for(let w of U.candidates){if(!Le(j,S,U,w))continue;let N=He(H,j,S,U,w);if(N&&Tn(N,p))p=N}return p},"bestScoreForOptionPair"),Rn=e((H)=>{let j=Y(),U=P(),et=kt(),p=O(H),S=new Map(I.map((it)=>[it,he(x(it))])),w=new Map(I.map((it)=>[it,_(x(it))])),N=new Map,B=T(H);for(let it of B)for(let tt of it){if(N.has(tt))continue;let q=ie(tt,H,et,p);if(q.length>0)N.set(tt,{edge:tt,candidates:q})}let G={replacements:new Map,crossings:H.count,bends:j,length:U},nt={current:H,currentBends:j,currentLength:U,baseBendsByEdge:S,baseLengthByEdge:w,baseSegments:et};for(let it of B){let tt=new Set(it.filter((ht)=>H.edgeSet.has(ht))),q=it.map((ht)=>N.get(ht)).filter((ht)=>Boolean(ht));for(let ht=0;ht<q.length;ht++){let pt=q[ht];for(let gt=ht+1;gt<q.length;gt++){let ft=q[gt];if(!tt.has(pt.edge)&&!tt.has(ft.edge))continue;G=wn(nt,pt,ft,G)}}}return G.replacements.size>0?G.replacements:void 0},"bestPairedReplacement");for(let H=0;H<4;H++){let j=R(),U=j.count;if(U===0)return;let et,p,S=U,w=Number.POSITIVE_INFINITY;for(let B of j.edges){let G=he(x(B),at);for(let nt of Rt(B)){let it=z(B,nt),tt=!it&&V(B,nt),q=C(j,B,nt),ht=he(nt,at);if(it||tt)continue;if(!(q<U||q===U&&ht<G))continue;if(q>S||q===S&&ht>=w)continue;et=B,p=nt,S=q,w=ht}}if(et&&p){et.points=p;continue}let N=Rn(j);if(!N)return;for(let[B,G]of N)B.points=G}}e(Ds,"resolveRenderedOrthogonalCrossings");var Re=0.001,qr=8;function Xs(n,o){let{nodeInfoById:s,realNodeRects:i}=vn(o),c=["top","bottom","left","right"],a=20,l={top:Math.min(...i.map((d)=>d.rect.top))-20,bottom:Math.max(...i.map((d)=>d.rect.bottom))+20,left:Math.min(...i.map((d)=>d.rect.left))-20,right:Math.max(...i.map((d)=>d.rect.right))+20},m=e((d,M,R,v)=>{let A=[],F=vo(d,M,R,v,20,Re);if(F)A.push(F);if(M===v)A.push(Lo(d,M,R,l[M]));return A},"buildOrthogonalPathCandidates"),f=e((d,M)=>{for(let R=0;R<d.length-1;R++){let v=d[R],A=d[R+1];if(Gt(v,A,i,M,1))return!0}return!1},"pathHitsNode"),g=e((d,M,R=!1)=>{let v=0,A=Ve(d,Re),{start:F,end:T}=M;for(let C of n){if(C===M||C.isLayoutOnly)continue;let{start:O,end:_}=C;if(!R&&F&&T&&(O===F||O===T||_===F||_===T))continue;let Y=C.points;if(!Y||Y.length<2)continue;for(let P of A)for(let V of Ve(Y,Re)){if(To(P.a,P.b,V.a,V.b,Re,Re)){v++;continue}if(Ie(P,V,Re)>=qr)v++}}return v},"pathConflictCount"),y=4,I=e((d,M)=>{let R=Math.abs(d.y-M.rect.top),v=Math.abs(d.y-M.rect.bottom),A=Math.abs(d.x-M.rect.left),F=Math.abs(d.x-M.rect.right),T="top",C=R;if(v<C)T="bottom",C=v;if(A<C)T="left",C=A;if(F<C)T="right",C=F;return T},"nearestSideOfRect"),E=new Map,b=e((d,M,R)=>{let v=E.get(d)??[];v.push({side:M,edgeId:R}),E.set(d,v)},"addFaceClaim");for(let d of n){if(d.isLayoutOnly)continue;let M=d.points??[];if(M.length<1)continue;let R=d.id??"",{start:v,end:A}=d;if(v){let F=s.get(v);if(F)b(v,I(M[0],F),R)}if(A){let F=s.get(A);if(F)b(A,I(M[M.length-1],F),R)}}let x=e((d,M,R)=>E.get(d)?.some((v)=>v.edgeId!==R&&v.side===M)??!1,"faceIsClaimed");for(let d of n){if(d.isLayoutOnly)continue;let M=d.points;if(!M||M.length<2)continue;let R=he(M,Re);if(R<4)continue;let{start:v,end:A}=d;if(!v||!A)continue;let F=s.get(v),T=s.get(A);if(!F||!T)continue;let C=d.id??"",O=g(M,d,!0),_=g(M,d),Y,P=O,V=R;for(let z of c){if(x(v,z,C))continue;let D=ke(F,z);for(let W of c){if(x(A,W,C))continue;let J=ke(T,W);for(let st of m(D,z,J,W)){if(f(st,[v,A]))continue;let xt=he(st,Re);if(O>0){let Tt=g(st,d,!0);if(Tt>P||Tt===P&&xt>=V)continue;P=Tt,V=xt,Y=st;continue}if(g(st,d)>_)continue;if(xt<V)V=xt,Y=st}}}if(Y){d.points=Y;let z=E.get(v);if(z)E.set(v,z.filter((W)=>W.edgeId!==C));let D=E.get(A);if(D)E.set(A,D.filter((W)=>W.edgeId!==C));b(v,I(Y[0],F),C),b(A,I(Y[Y.length-1],T),C)}}}e(Xs,"simplifyDetouredEdges");var le=0.001,Wo=10,an=7;function ro(n,o){let s=o?0:n.length-1,i=o?1:-1,c=n[s],a=n[s+i];if(!c||!a)return;let l=a.x-c.x,m=a.y-c.y;if(Math.abs(l)+Math.abs(m)<le)return;if(Math.abs(m)<=le){let g=c.x+Math.sign(l)*Wo;return{left:Math.min(c.x,g),right:Math.max(c.x,g),top:c.y-an,bottom:c.y+an}}if(Math.abs(l)<=le){let g=c.y+Math.sign(m)*Wo;return{left:c.x-an,right:c.x+an,top:Math.min(c.y,g),bottom:Math.max(c.y,g)}}return{left:Math.min(c.x,a.x),right:Math.max(c.x,a.x),top:Math.min(c.y,a.y),bottom:Math.max(c.y,a.y)}}e(ro,"markerClearanceRectFor");function Ys(n){return{left:Math.min(n.left,n.right),right:Math.max(n.left,n.right),top:Math.min(n.top,n.bottom),bottom:Math.max(n.top,n.bottom)}}e(Ys,"normalizeRect");function io(n,o){let s=Et(o),i=ro(s,!0),c=ro(s,!1);return[i,c].some((a)=>a&&gn(n,Ys(a)))}e(io,"labelOverlapsOwnMarker");function dn(n,o){let s=[];for(let x of n){if(x.isLayoutOnly)continue;let d=x.points;if(!d||d.length<2)continue;for(let M=0;M<d.length-1;M++)s.push({edgeId:x.id,p1:d[M],p2:d[M+1]})}let i=[],c=[];for(let x of o.values()){let{isGroup:d,parentId:M}=x;if(d&&!M){let v=fe(x);if(v)c.push({id:x.id,rect:v});continue}if(d)continue;if(x.isEdgeLabel)continue;let R=fe(x);if(!R)continue;i.push({nodeId:x.id,rect:R})}let a=3,l=1,m=12,f=e((x,d)=>{let M=$n(d,a);for(let{nodeId:R,rect:v}of i){if(R===x)continue;if(gn(M,v))return!0}return!1},"labelOverlapsForeignNode"),g=e((x,d)=>{let M=$n(d,a);for(let R of s){if(R.edgeId===x)continue;if(Cn(R.p1,R.p2,M))return!0}return!1},"labelOverlapsForeignEdge"),y=e((x,d,M)=>f(x,M)||g(d,M),"labelOverlapsAnything"),I=[],E=e((x)=>{for(let{id:d,rect:M}of c)if(ps(M,x))return d;return},"findContainingLane"),b=e((x,d)=>I.some((M)=>M.labelId!==x&&gn(d,M.rect)),"overlapsPlacedLabel");for(let x of n){if(x.isLayoutOnly)continue;let d=x.labelNodeId;if(!d)continue;let M=o.get(d);if(!M)continue;let R=x.points;if(!R||R.length<2)continue;let v=M.width??0,A=M.height??0;if(v<=0||A<=0)continue;let F=[];for(let lt=0;lt<R.length-1;lt++){let ot=R[lt],dt=R[lt+1],Mt=Math.abs(ot.x-dt.x),Lt=Math.abs(ot.y-dt.y);if(Mt<le&&Lt<le)continue;if(Mt>=le&&Lt>=le)continue;F.push({idx:lt,length:Mt+Lt,orientation:Mt>=le?"horizontal":"vertical",midX:(ot.x+dt.x)/2,midY:(ot.y+dt.y)/2})}if(F.length===0)continue;let T=F.length>=3?F.filter((lt)=>lt.idx>0&&lt.idx<F.length-1):F,C=T.length>0?T:F,O=v>=A?"horizontal":"vertical",_=e((lt)=>[...lt].sort((ot,dt)=>{let Mt=ot.orientation===O,Lt=dt.orientation===O;if(Mt!==Lt)return Mt?-1:1;let Rt=ot.length>=(ot.orientation==="horizontal"?v:A)+2,kt=dt.length>=(dt.orientation==="horizontal"?v:A)+2;if(Rt!==kt)return Rt?-1:1;return dt.length-ot.length}),"rankSegments"),Y=F[0],P=F[F.length-1],V=[0.5,0.25,0.75,0.05,0.95,0.15,0.85,0.1,0.9],z=e((lt,ot)=>{let dt=R[lt.idx],Mt=R[lt.idx+1];return{midX:dt.x+(Mt.x-dt.x)*ot,midY:dt.y+(Mt.y-dt.y)*ot}},"anchorAtT"),D=e((lt,ot,dt)=>Math.min(dt,Math.max(ot,lt)),"clamp"),W=e((lt,ot)=>lt.midX>=ot.left-le&&lt.midX<=ot.right+le&&lt.midY>=ot.top-le&&lt.midY<=ot.bottom+le,"pointInsideRectInclusive"),J=e((lt)=>{let ot=ze(lt.midX,lt.midY,v,A),dt=E(ot);if(dt)return{laneId:dt,anchor:lt,rect:ot};let Mt=c.find(({rect:ge})=>W(lt,ge));if(!Mt)return;let Lt=Mt.rect.left+v/2+l,Rt=Mt.rect.right-v/2-l,kt=Mt.rect.top+A/2+l,re=Mt.rect.bottom-A/2-l;if(Lt>Rt||kt>re)return;let ie={midX:D(lt.midX,Lt,Rt),midY:D(lt.midY,kt,re)},ce=ze(ie.midX,ie.midY,v,A);return W(lt,ce)?{laneId:Mt.id,anchor:ie,rect:ce}:void 0},"placementForAnchor"),st=e((lt,ot,dt)=>lt.orientation==="horizontal"?Math.abs(ot.midX-dt.x):Math.abs(ot.midY-dt.y),"distanceAlongSegment"),xt=e((lt,ot)=>{let Mt=(lt.orientation==="horizontal"?v/2:A/2)+m;if(lt===Y){let Lt=R[lt.idx];if(st(lt,ot,Lt)+le<Mt)return!1}if(lt===P){let Lt=R[lt.idx+1];if(st(lt,ot,Lt)+le<Mt)return!1}return!0},"labelClearsTerminalEndpoints"),Tt=e((lt)=>{let ot=_(lt);for(let dt of ot)for(let Mt of V){let Lt=z(dt,Mt);if(!xt(dt,Lt))continue;let Rt=J(Lt);if(!Rt)continue;if(io(Rt.rect,R))continue;if(b(d,Rt.rect))continue;if(!y(d,x.id,Rt.rect))return{laneId:Rt.laneId,anchor:Rt.anchor}}return},"tryPool"),$t=e((lt,ot,dt=!1)=>{let Mt=_(lt);for(let Lt of Mt){let Rt={midX:Lt.midX,midY:Lt.midY};if(ot&&!xt(Lt,Rt))continue;let kt=J(Rt);if(kt&&!io(kt.rect,R)&&!b(d,kt.rect)&&!f(d,kt.rect)&&(dt||!g(x.id,kt.rect)))return{laneId:kt.laneId,anchor:kt.anchor}}return},"findLaneContainingFallback"),Ut=Tt(C)??(C.length<F.length?Tt(F):void 0)??$t(F,!0)??$t(F,!1)??$t(F,!1,!0);if(Ut){M.x=Ut.anchor.midX,M.y=Ut.anchor.midY,M.parentId=Ut.laneId;let lt=ze(Ut.anchor.midX,Ut.anchor.midY,v,A),ot=I.findIndex((dt)=>dt.labelId===d);if(ot>=0)I[ot]={labelId:d,rect:lt};else I.push({labelId:d,rect:lt})}}}e(dn,"anchorLabelsToPolyline");var Hn=0.000001,Jr=8,Ko=Jr/2,Zr=3;function co(n,o){return n<o?`${n}::${o}`:`${o}::${n}`}e(co,"pairKey");function Gs(n,o){let{nodeInfoById:s,realNodeRects:i}=vn(o),c=new Map;for(let l of o){let m=l.id;if(l.isGroup)continue;if(l.isEdgeLabel){c.set(m,{w:l.width??0,h:l.height??0});continue}}let a=e((l,m,f,g)=>{let y=co(m,f),I=0,E=e((b)=>{if(!b)return;let x=c.get(b);if(!x)return;let d=g==="x"?x.w/2:x.h/2;if(d>I)I=d},"consider");E(l.labelNodeId);for(let b of n){if(b===l)continue;if(b.isLayoutOnly)continue;let{start:x,end:d}=b;if(!x||!d)continue;if(co(x,d)!==y)continue;E(b.labelNodeId)}return I>0?I+Zr:0},"labelClearanceFor");for(let l of n){if(l.isLayoutOnly)continue;let m=l.points;if(!So(m,Hn))continue;let f=Eo(l,s,Hn);if(!f)continue;let{srcId:g,dstId:y,srcInfo:I,dstInfo:E,collinearX:b,collinearY:x}=f;if(b===x)continue;let d,M;if(b){let T=E.cy>I.cy;d={x:I.cx,y:T?I.rect.bottom:I.rect.top},M={x:E.cx,y:T?E.rect.top:E.rect.bottom}}else{let T=E.cx>I.cx;d={x:T?I.rect.right:I.rect.left,y:I.cy},M={x:T?E.rect.left:E.rect.right,y:E.cy}}if(Gt(d,M,i,[g,y],1))continue;let v=a(l,g,y,b?"x":"y"),A=v>Ko?v:Ko,F=[0,A,-A];for(let T of F){let C={...d},O={...M};if(b){if(C.x+=T,O.x+=T,C.x<=I.rect.left||C.x>=I.rect.right)continue;if(O.x<=E.rect.left||O.x>=E.rect.right)continue}else{if(C.y+=T,O.y+=T,C.y<=I.rect.top||C.y>=I.rect.bottom)continue;if(O.y<=E.rect.top||O.y>=E.rect.bottom)continue}if(Gt(C,O,i,[g,y],1))continue;if(pn(C,O,n,l,{epsilon:Hn}))continue;l.points=[C,O];break}}}e(Gs,"straightenCollinearSiblingDetours");function ao(n,o){let{realNodeRects:g,labelNodeRects:y}=Ae(o.values()),I=e((C,O)=>Ve(O,0.001).map((_)=>({..._,edge:C,interior:_.index>=1&&_.index<=O.length-3})),"segmentsFor"),E=e(()=>{let C=[];for(let O of n){if(O.isLayoutOnly)continue;let _=O.points;if(!_||_.length<2)continue;C.push(...I(O,Et(_)))}return C},"allSegments"),b=e((C,O)=>{if(C.horizontal&&O.horizontal)return se(C.a.x,C.b.x,O.a.x,O.b.x)>=8&&Math.abs(C.a.y-O.a.y)<7;if(C.vertical&&O.vertical)return se(C.a.y,C.b.y,O.a.y,O.b.y)>=8&&Math.abs(C.a.x-O.a.x)<7;return!1},"hasCrowdedParallelTrack"),x=e((C,O)=>{let{start:_,end:Y}=C,P=I(C,O);if(P.length!==O.length-1)return!1;let V=[_,Y].filter((D)=>Boolean(D)),z=C.labelNodeId?[C.labelNodeId]:[];for(let D of P){if(Gt(D.a,D.b,g,V,-2))return!1;if(Gt(D.a,D.b,y,z,-2))return!1}for(let D of n){if(D===C||D.isLayoutOnly)continue;let W=D.points;if(!W||W.length<2)continue;for(let J of P)for(let st of I(D,Et(W))){if(b(J,st))return!1;if(Ce(J.a,J.b,st.a,st.b,0.001))return!1}}return!0},"candidateIsSafe"),d=e((C,O)=>{let _=Et(C.edge.points??[]);if(_.length<4||C.index>=_.length-1)return;let Y=_.map((P)=>({...P}));if(C.horizontal)Y[C.index].y+=O,Y[C.index+1].y+=O;else if(C.vertical)Y[C.index].x+=O,Y[C.index+1].x+=O;else return;return I(C.edge,Y).length===Y.length-1?Y:void 0},"shiftedCandidate"),M=e((C,O)=>({x:C.x??(O.left+O.right)/2,y:C.y??(O.top+O.bottom)/2}),"nodeCenter"),R=e((C)=>{let O=C.edge,_=Et(O.points??[]);if(_.length!==4||C.index!==1)return;let Y=O.start?o.get(O.start):void 0,P=O.end?o.get(O.end):void 0,V=Y?fe(Y):void 0,z=P?fe(P):void 0,D=_.slice(C.index+2);if(!Y||!P||!V||!z||D.length===0)return;return{sourceCenter:M(Y,V),targetCenter:M(P,z),sourceRect:V,tail:D}},"sourceDetourContextFor"),v=e((C,O,_,Y,P,V)=>{let z=Y.y>=_.y,D=z?P.bottom:P.top,W=D+(z?20:-20);if(z&&C.b.y<=W+0.001||!z&&C.b.y>=W-0.001)return;let J=C.a.x+O;return Et([{x:_.x,y:D},{x:_.x,y:W},{x:J,y:W},{x:J,y:C.b.y},...V],0.001)},"verticalSourceDetour"),A=e((C,O,_,Y,P,V)=>{let z=Y.x>=_.x,D=z?P.right:P.left,W=D+(z?20:-20);if(z&&C.b.x<=W+0.001||!z&&C.b.x>=W-0.001)return;let J=C.a.y+O;return Et([{x:D,y:_.y},{x:W,y:_.y},{x:W,y:J},{x:C.b.x,y:J},...V],0.001)},"horizontalSourceDetour"),F=e((C,O)=>{let _=R(C);if(!_)return;if(C.vertical)return v(C,O,_.sourceCenter,_.targetCenter,_.sourceRect,_.tail);if(C.horizontal)return A(C,O,_.sourceCenter,_.targetCenter,_.sourceRect,_.tail);return},"sourceDetourCandidate"),T=[-7,7,-14,14,-21,21];for(let C=0;C<12;C++){let O=E(),_=!1;for(let Y=0;Y<O.length&&!_;Y++)for(let P=Y+1;P<O.length&&!_;P++){let V=O[Y],z=O[P];if(V.edge===z.edge||!b(V,z))continue;let D=[V,z].filter((W)=>W.interior);for(let W of D){for(let J of T){let st=d(W,J);if(st&&x(W.edge,st)){W.edge.points=st,_=!0;break}let xt=F(W,J);if(xt&&x(W.edge,xt)){W.edge.points=xt,_=!0;break}}if(_)break}}if(!_)return}}e(ao,"nudgeSharedInteriorSubpaths");function $s(n,o,s,i){let c=o.x-n.x,a=o.y-n.y,l=i.x-s.x,m=i.y-s.y,f=c*m-a*l;if(Math.abs(f)<0.0000000001)return!1;let g=s.x-n.x,y=s.y-n.y,I=(g*m-y*l)/f,E=(g*a-y*c)/f,b=0.01;return I>b&&I<1-b&&E>b&&E<1-b}e($s,"segmentsIntersect");function zs(n){let o=n.nodes??[],s=n.edges??[],i=[];if(!s.length||!o.length)return i;let c=ms(o),a=1,l=[];for(let f of s){if(f.isLayoutOnly)continue;let g=f.points;if(!g||g.length<2)continue;let{start:y,end:I,labelNodeId:E}=f,b=f.id??`${y}->${I}`;for(let x of c){if(x.nodeId===y||x.nodeId===I)continue;if(E&&x.nodeId===E)continue;for(let d=0;d<g.length-1;d++)if(Cn(g[d],g[d+1],x,-a)){i.push({type:"edge-node-overlap",edgeId:b,targetId:x.nodeId,detail:`segment ${d} passes through node "${x.nodeId}"`});break}}for(let x=0;x<g.length-1;x++)l.push({edgeId:b,start:y,end:I,p1:g[x],p2:g[x+1]})}let m=new Set;for(let f=0;f<l.length;f++)for(let g=f+1;g<l.length;g++){let y=l[f],I=l[g];if(y.edgeId===I.edgeId)continue;if(y.start===I.start||y.start===I.end||y.end===I.start||y.end===I.end)continue;if($s(y.p1,y.p2,I.p1,I.p2)){let E=y.edgeId<I.edgeId?`${y.edgeId}|${I.edgeId}`:`${I.edgeId}|${y.edgeId}`;if(!m.has(E))m.add(E),i.push({type:"edge-edge-crossing",edgeId:y.edgeId,targetId:I.edgeId,detail:`edges "${y.edgeId}" and "${I.edgeId}" cross`})}}if(i.length>0){let f=i.filter((y)=>y.type==="edge-node-overlap").length,g=i.filter((y)=>y.type==="edge-edge-crossing").length;t.warn(`[SWIMLANE_VALIDATE] ${i.length} issue(s) detected: ${f} edge-node overlap(s), ${g} edge crossing(s)`);for(let y of i)t.warn(`[SWIMLANE_VALIDATE] ${y.type}: ${y.detail}`)}return i}e(zs,"validateSwimlanesLayout");function Vs(n,o){let s=n.nodes??[],i=n.edges??[],c=s.filter((m)=>!m.isGroup);if((o==="LR"||o==="RL")&&c.length>0&&!Ns(n,o))return;if(o==="BT"&&c.length>0&&!As(n))return;for(let m of i){if(m.isLayoutOnly)continue;let f=m.points;if(!f||f.length<2)continue;m.points=Se(mn(f))}Xs(i,s),Gs(i,s),Os(i,s);let a=new Map;for(let m of s)a.set(String(m.id),m);dn(i,a),Is(i,a),Bs(i,a),ao(i,a),Ps(i,a),Fs(i,a),no(i,a),ks(i,a);let l=e(()=>{Ds(i,a),_s(i,a),Hs(i,a),dn(i,a),to(i,a),no(i,a),dn(i,a),to(i,a)},"finalizeRenderedEdges");l(),ao(i,a),l(),oo(i,a),so(i,a),oo(i,a),so(i,a)}e(Vs,"postProcessSwimlaneLayout");function Oe(n){let o=new Map(n.nodeById),s=new Set,i=[];for(let a of n.edges){if(!o.has(a.src)||!o.has(a.dst))continue;let l=`${a.id}:${a.src}->${a.dst}`;if(s.has(l))continue;s.add(l),i.push(a)}return{nodes:[...o.keys()],edges:i,layout:n.layout,nodeById:o}}e(Oe,"normalizeGraph");function Oo(n,o){return n.edges.filter((s)=>s.dst===o)}e(Oo,"incoming");function js(n){let o=new Map;for(let s of n.nodes)o.set(s,[]);for(let s of n.edges)o.get(s.src).push(s.dst);return o}e(js,"buildSuccessorMap");function Bo(n){let o=js(n);for(let s of o.values())s.sort((i,c)=>i.localeCompare(c));return o}e(Bo,"buildSortedSuccessorMap");function Po(n){let o=new Map;for(let s of n.nodes)o.set(s,0);for(let s of n.edges)o.set(s.dst,(o.get(s.dst)??0)+1);return o}e(Po,"buildInDegreeMap");function Fo(n){return[...n.entries()].filter(([,o])=>o===0).map(([o])=>o).sort((o,s)=>o.localeCompare(s))}e(Fo,"sortedZeroInDegreeNodes");function Ln(n,o=()=>!0){let s=new Map,i=new Map;for(let c of n.nodes)s.set(c,[]),i.set(c,[]);for(let c of n.edges){if(!o(c))continue;i.get(c.src).push(c.dst),s.get(c.dst).push(c.src)}return{preds:s,succs:i}}e(Ln,"buildPredecessorSuccessorMaps");function ko(n,o,s,i){let c=0;for(let l of n.nodes){if(i?.skipGroups&&n.nodeById.get(l)?.isGroup)continue;c=Math.max(c,s[l]??0)}let a=Array.from({length:c+1},()=>[]);for(let l of o){if(i?.skipGroups&&n.nodeById.get(l)?.isGroup)continue;a[Math.max(0,s[l]??0)].push(l)}return a}e(ko,"buildLayersFromRanks");function We(n){let o=Po(n),s=Fo(o),i=[],c=Bo(n);while(s.length){let a=s.shift();i.push(a);for(let l of c.get(a)??[])if(o.set(l,(o.get(l)??0)-1),(o.get(l)??0)===0){let m=0;while(m<s.length&&s[m]<l)m++;s.splice(m,0,l)}}return i.length===n.nodes.length?i:null}e(We,"topoSortIfAcyclic");function je(n){let o=new Map,s=0;for(let i of n)o.set(i,s),s++;return o}e(je,"buildLayerIndex");function _o(n){let o=Array(n.length),s=e((i,c)=>{if(c-i<=1)return 0;let a=i+c>>1,l=s(i,a)+s(a,c),m=i,f=a,g=i;while(m<a||f<c)if(f>=c||m<a&&n[m]<=n[f])o[g++]=n[m++];else o[g++]=n[f++],l+=a-m;for(let y=i;y<c;y++)n[y]=o[y];return l},"count");return s(0,n.length)}e(_o,"countInversions");function Us(n){let o=Oe(n),s=new Map;for(let y of o.nodes)s.set(y,[]);for(let y of o.edges)s.get(y.src).push(y);for(let y of s.values())y.sort((I,E)=>I.dst===E.dst?I.id.localeCompare(E.id):I.dst.localeCompare(E.dst));let i=Object.create(null);for(let y of o.nodes)i[y]=0;let c=[],a=e((y)=>{i[y]=1;for(let I of s.get(y)??[]){let E=I.dst;if(i[E]===0)a(E);else if(i[E]===1)c.push(I)}i[y]=2},"dfs"),l=[...o.nodes].sort((y,I)=>y.localeCompare(I));for(let y of l)if(i[y]===0)a(y);let m=new Set(c.map((y)=>`${y.id}:${y.src}->${y.dst}`)),f=o.edges.map((y)=>m.has(`${y.id}:${y.src}->${y.dst}`)?{id:y.id,src:y.dst,dst:y.src,weight:y.weight,ref:y.ref}:y);return{acyclic:{nodes:[...o.nodes],edges:f,layout:o.layout,nodeById:new Map(o.nodeById)},reversed:c}}e(Us,"removeCycles_DFS");function Ws(n){let o=new Map,s=e((i)=>{if(o.has(i))return o.get(i);let c=n.nodeById.get(i);if(!c)return o.set(i,null),null;let a=c.parentId;if(!a)return o.set(i,null),null;let m=s(a)??a;return o.set(i,m),m},"resolve");for(let i of n.nodes)s(i);return o}e(Ws,"buildTopLaneMap");function ve(n){let o=Ws(n);return(s)=>o.get(s)??null}e(ve,"createTopLaneResolver");function En(n){let o=[];for(let s of n.layout.nodes??[])if(s.isGroup&&!s.parentId)o.push(s.id);return[...new Set(o)].reverse()}e(En,"buildTopLaneOrder");function Ho(n,o){let s=En(n);if(!o||o.length===0)return s;let i=new Set(s),c=new Set,a=[];for(let l of o){if(!i.has(l)||c.has(l))continue;c.add(l),a.push(l)}for(let l of s){if(c.has(l))continue;a.push(l)}return a}e(Ho,"resolveTopLaneOrder");var Qr={EPSILON:0.000001},In={GRAVITY_ITERATIONS:8,MAX_CROSSING_OPTIMIZATION_PASSES:4,DEFAULT_COMPACT_SINGLE_INPUT:!0},qo={DEFAULT_LAYER_GAP:100,DEFAULT_NODE_GAP:40};function Ks(n,o){let s=Oe(n),i=o?.laneOf??(()=>null),c=o?.rankHint,{preds:a}=Ln(s);for(let T of a.values())T.sort((C,O)=>C.localeCompare(O));let l=We(s)??[...s.nodes].sort((T,C)=>T.localeCompare(C)),m=new Map;for(let[T,C]of l.entries())m.set(C,T);let f=new Map,g=new Map;for(let T of s.nodes)g.set(T,[]);for(let T of l){let C=(a.get(T)??[]).filter((O)=>f.has(O));if(C.length>0){let O=qs(T,C,{laneOf:i,rankHint:c,topoIndex:m});f.set(T,O),g.get(O).push(T)}else if(!f.has(T))f.set(T,null)}for(let T of s.nodes)if(!f.has(T))f.set(T,null);let y=new Set;for(let T of s.nodes)if((f.get(T)??null)===null)y.add(T);let I=[...y].sort((T,C)=>{let O=m.get(T)??0,_=m.get(C)??0;if(O===_)return T.localeCompare(C);return O-_}),E=Js(s),b=new Map;for(let[T,C]of E.entries())b.set(T,[...C].sort((O,_)=>O.localeCompare(_)));let x=Zs(b),d=Qs(b),M=new Map;for(let T of s.nodes)M.set(T,[]);for(let T of d)for(let C of T.nodes){let O=M.get(C);if(O)O.push(T.id);else M.set(C,[T.id])}let R=[],v=[],A=new Set,F=e((T)=>{if(A.has(T))return;A.add(T),R.push(T);for(let C of g.get(T)??[])F(C);v.push(T)},"walk");for(let T of I)F(T);for(let T of l)F(T);return{parent:f,children:g,roots:I,componentOf:x,blocks:d,nodeBlocks:M,adjacency:b,preorder:R,postorder:v,topologicalOrder:l}}e(Ks,"buildDrivingTree");function qs(n,o,s){let i=s.laneOf(n);return[...o].sort((a,l)=>{let m=s.laneOf(a),f=s.laneOf(l),g=m!=null&&m===i,y=f!=null&&f===i;if(g!==y)return g?-1:1;let I=s.rankHint?.[a],E=s.rankHint?.[l];if(I!=null&&E!=null&&I!==E)return E-I;let b=s.topoIndex.get(a)??0,x=s.topoIndex.get(l)??0;if(b!==x)return b-x;return a.localeCompare(l)})[0]}e(qs,"chooseParent");function Js(n){let o=new Map;for(let s of n.nodes)o.set(s,new Set);for(let s of n.edges)o.get(s.src).add(s.dst),o.get(s.dst).add(s.src);return o}e(Js,"buildAdjacency");function Zs(n){let o=new Map,s=0;for(let i of n.keys()){if(o.has(i))continue;let c=[i];while(c.length>0){let a=c.pop();if(o.has(a))continue;o.set(a,s);for(let l of n.get(a)??[])if(!o.has(l))c.push(l)}s++}return o}e(Zs,"assignComponents");function Qs(n){let o=new Map,s=new Map,i=[],c=[],a=0,l=e((m,f)=>{o.set(m,++a),s.set(m,a);for(let g of n.get(m)??[]){if(g===f)continue;if(!o.has(g)){if(i.push([m,g]),l(g,m),s.set(m,Math.min(s.get(m)??a,s.get(g)??a)),(s.get(g)??0)>=(o.get(m)??0))c.push(tr(m,g,i,c.length))}else if((o.get(g)??0)<(o.get(m)??0))i.push([m,g]),s.set(m,Math.min(s.get(m)??a,o.get(g)??a))}},"visit");for(let m of n.keys())if(!o.has(m))l(m,null);return c}e(Qs,"computeBlocks");function tr(n,o,s,i){let c=[],a=new Set;while(s.length>0){let l=s.pop();if(c.push(l),a.add(l[0]),a.add(l[1]),l[0]===n&&l[1]===o||l[0]===o&&l[1]===n)break}return{id:i,edges:c,nodes:[...a]}}e(tr,"popBlock");function er(n,o,s){let i=[...n.nodes],c=new Map;for(let[v,A]of i.entries())c.set(A,v);let a=i.length,l=Array(a).fill(-1),m=Array(a).fill(0),f=[],g=new Set;for(let v of i){let A=s.parent.get(v)??null,F=c.get(v);if(F==null)continue;if(A==null){if(l[F]=-1,m[F]=0,!g.has(v))g.add(v),f.push(v)}}while(f.length>0){let v=f.shift(),A=c.get(v);if(A==null)continue;let F=s.children.get(v)??[];for(let T of F){if(g.has(T))continue;let C=c.get(T);if(C==null)continue;l[C]=A,m[C]=m[A]+1,g.add(T),f.push(T)}}for(let v of i){if(g.has(v))continue;let A=c.get(v);if(A==null)continue;l[A]=-1,m[A]=0,g.add(v)}let y=Math.max(1,Math.ceil(Math.log2(Math.max(1,a)))+1),I=Array.from({length:y},()=>Array(a).fill(-1));for(let v=0;v<a;v++)I[0][v]=l[v];for(let v=1;v<y;v++)for(let A=0;A<a;A++){let F=I[v-1][A];I[v][A]=F===-1?-1:I[v-1][F]}let E=e((v,A)=>{if(v===-1||A===-1)return-1;if(m[v]<m[A])[v,A]=[A,v];let F=m[v]-m[A];for(let T=0;T<y;T++)if(F>>T&1){if(v=I[T][v],v===-1)return-1}if(v===A)return v;for(let T=y-1;T>=0;T--){let C=I[T][v],O=I[T][A];if(C===-1||O===-1)continue;if(C!==O)v=C,A=O}return I[0][v]},"lcaIndex"),b=Array.from({length:a},()=>new Map);for(let v of n.edges){let{src:A,dst:F}=v,T=o[A],C=o[F];if(T==null||C==null)continue;if(T>C)[A,F]=[F,A],[T,C]=[C,T];if(T==null||C==null||T===C)continue;let O=c.get(A),_=c.get(F);if(O==null||_==null)continue;let Y=E(O,_);if(Y===-1)continue;let P=b[Y];for(let V=T;V<C;V++)P.set(V,(P.get(V)??0)+1)}let x=new Map,d=e((v,A)=>{if(A.size===0)return;for(let[F,T]of A)v.set(F,(v.get(F)??0)+T)},"mergeInto"),M=new Set,R=e((v)=>{let A=c.get(v);M.add(v);let F=A==null?void 0:b[A],T=F?new Map(F):new Map,C=s.children.get(v)??[];for(let O of C){let _=R(O),Y=o[v];if(Y!=null){let P=x.get(v);if(!P)P=new Map,x.set(v,P);let V=_.get(Y)??0,z=o[O];if(z!=null&&z>Y)V+=1;P.set(O,V)}d(T,_)}return T},"dfs");for(let v of s.roots)if(!M.has(v))R(v);for(let v of i)if(!M.has(v))R(v);return x}e(er,"computeSubtreeCrossCounts");function nr(n,o,s){let i=new Map,c=e((a)=>{let l=s[a]??0,m=[...o.get(a)??[]];m.sort(Do(s));for(let f of m){c(f);let g=i.get(f);if(g!=null)l=Math.min(l,g)}i.set(a,l)},"annotate");for(let a of n)c(a);return i}e(nr,"annotateMinimumLayers");function Do(n){return(o,s)=>{let i=n[o]??0,c=n[s]??0;return i===c?o.localeCompare(s):i-c}}e(Do,"compareByRankThenId");function or(n,o,s,i){let c=0;for(let f of o){let g=s[f]??0;if(g>c)c=g}let a=Array.from({length:c+1},()=>[]),l=new Set,m=e((f)=>{if(l.has(f))return;l.add(f);let g=s[f]??0;if(!a[g])a[g]=[];a[g].push(f);for(let y of i(f))m(y)},"emit");for(let f of n)m(f);for(let f of o)if(!l.has(f)){let g=s[f]??0;if(!a[g])a[g]=[];a[g].push(f),l.add(f)}return a}e(or,"emitNodesInTreeOrder");function sr(n){let o=[];for(let s of n){let i=new Set,c=[];for(let a of s){if(i.has(a))continue;i.add(a),c.push(a)}o.push(c)}return o}e(sr,"deduplicateLayers");function rr(n,o,s,i){return(c)=>{let a=n.get(c)??[];if(a.length===0)return[];let l=o[c]??0,m=[],f=[],g=s.get(c);for(let y of a){let I=i.get(y)??l;if(I>l)m.push({child:y,min:I});else f.push(y)}return m.sort((y,I)=>{if(y.min===I.min)return y.child.localeCompare(I.child);return y.min-I.min}),f.sort((y,I)=>{let E=g?.get(y)??0,b=g?.get(I)??0;if(E!==b)return E-b;let x=i.get(y)??l,d=i.get(I)??l;if(x!==d)return x-d;return y.localeCompare(I)}),[...m.map((y)=>y.child),...f]}}e(rr,"createChildOrderer");function Sn(n,o,s){let i=Ks(n,{rankHint:o,laneOf:s}),{children:c,roots:a}=i;for(let I of n.nodes)if(!c.has(I))c.set(I,[]);let l=er(n,o,i),m=[...a].sort(Do(o)),f=nr(m,c,o),g=rr(c,o,l,f),y=or(m,n.nodes,o,g);return y=sr(y),y}e(Sn,"buildMultitreeLayerOrder");function ir(n,o,s){let i=new Set(n),c=new Set(o),a=je(o),l=[];for(let m of s)if(i.has(m.src)&&c.has(m.dst))l.push(a.get(m.dst));return _o(l)}e(ir,"countCrossingsBetweenAdjacent");function lo(n,o,s){let i=[];for(let a of o){let l=s[a.src],m=s[a.dst];if(l==null||m==null||l===m)continue;let{src:f,dst:g}=a,y=l,I=m;if(l>m)f=a.dst,g=a.src,y=m,I=l;for(let E=y;E<I;E++)i.push({id:`${a.id}@${E}`,src:f,dst:g,ref:a.ref})}let c=0;for(let a=0;a+1<n.length;a++)c+=ir(n[a],n[a+1],i);return c}e(lo,"totalCrossings");function cr(n,o){let s={...o},{preds:i}=Ln(n),c=ve(n),a=Sn(n,s,c),l=lo(a,n.edges,s),m=In.MAX_CROSSING_OPTIMIZATION_PASSES;for(let f=0;f<m;f++){let g=!1,y=[...n.nodes].sort((I,E)=>(s[E]??0)-(s[I]??0));for(let I of y){let E=s[I]??0;if(E===0)continue;let b=0;for(let R of i.get(I)??[])b=Math.max(b,(s[R]??0)+1);if(b>=E)continue;let x=E;s[I]=b;let d=Sn(n,s,c),M=lo(d,n.edges,s);if(M<l)l=M,g=!0;else s[I]=x}if(!g)break}return s}e(cr,"optimizeRanksByCrossings");function ar(n,o){let s=ve(n),i=[...n.nodes].sort((c,a)=>(o[c]??0)-(o[a]??0)||c.localeCompare(a));for(let c of i){let a=s(c);if(!a)continue;let l=n.edges.filter((d)=>d.src===c);if(l.length===0)continue;let m=!1,f=0;for(let d of l){let M=s(d.dst);if(M==null||M===a)m=!0;else f++}if(f===0||m)continue;let g=0,y=!1;for(let d of n.edges){if(d.dst!==c)continue;let M=s(d.src);if(!M)continue;if(M===a)y=!0;else g++}if(g>0||!y)continue;let I=o[c]??0,E=I+f,b=0;for(let d of n.edges)if(d.dst===c)b=Math.max(b,(o[d.src]??0)+1);let x=Math.max(I,b,E);if(x!==I)o[c]=x}}e(ar,"adjustCrossLaneSources");function lr(n,o){let s=Oe(n),i=We(s)??[...s.nodes].sort(),c=o?.compactSingleInput??!1,a=ve(s),l=Object.create(null);for(let f of i){let g=Oo(s,f),y=o?.ignoreCrossLaneEdges?g.filter((I)=>{let E=a(I.src),b=a(f);if(!E||!b)return!0;return E===b}):g;if(y.length===0)l[f]=0;else if(c&&y.length===1){let I=y[0].src,E=a(I),b=a(f);if(E!==b)l[f]=l[I]??0;else l[f]=(l[I]??0)+1}else{let I=-1/0;for(let E of y)I=Math.max(I,(l[E.src]??0)+1);l[f]=I===-1/0?0:I}}if(o?.optimizeRanksByCrossings??!1)l=cr(s,l);if(o?.ignoreCrossLaneEdges)ar(s,l);return{layers:Sn(s,l,a),rankOf:l,dummy:new Set}}e(lr,"assignLayers_LongestPath");function fr(n,o){let s=Oe(n),c={...lr(s,{compactSingleInput:o?.compactSingleInput,ignoreCrossLaneEdges:o?.ignoreCrossLaneEdges,optimizeRanksByCrossings:o?.optimizeRanksByCrossings}).rankOf},a=ve(s),{preds:l,succs:m}=Ln(s,(x)=>{if(o?.ignoreCrossLaneEdges){let d=a(x.src),M=a(x.dst);if(d&&M&&d!==M)return!1}return!0}),f=We(s)??[...s.nodes],g=[...f].reverse(),y=e((x,d)=>{let M=0;for(let A of l.get(x)??[])M=Math.max(M,(c[A]??0)+1);let R=Number.POSITIVE_INFINITY,v=m.get(x)??[];if(v.length>0)R=Math.min(...v.map((A)=>(c[A]??0)-1));if(!Number.isFinite(R))R=Math.max(M,d);return Math.min(Math.max(d,M),R)},"clampFeasible"),I=In.GRAVITY_ITERATIONS,E=e((x)=>{let d=!1;for(let M of x){let R=l.get(M)??[],v=m.get(M)??[];if(R.length===0&&v.length===0)continue;let A=R.length>0?R.reduce((O,_)=>O+(c[_]??0)+1,0)/R.length:c[M]??0,F=v.length>0?v.reduce((O,_)=>O+(c[_]??0)-1,0)/v.length:c[M]??0,T=Math.round((A+F)/2),C=y(M,T);if(C!==c[M])c[M]=C,d=!0}return d},"relaxOrder");for(let x=0;x<I;x++){let d=E(f),M=E(g);if(!d&&!M)break}for(let x of f){let d=0;for(let M of l.get(x)??[])d=Math.max(d,(c[M]??0)+1);if((c[x]??0)<d)c[x]=d}for(let x of g){let d=m.get(x)??[];if(d.length>0){let M=Math.min(...d.map((R)=>(c[R]??0)-1));if((c[x]??0)>M)c[x]=M}}return{layers:ko(s,f,c),rankOf:c,dummy:new Set}}e(fr,"assignLayers_Gravity");function dr(n){let o=Po(n),s=Bo(n),i=Fo(o),c=[];while(i.length>0){let a=[];for(let l of i){c.push(l);for(let m of s.get(l)??[])if(o.set(m,(o.get(m)??0)-1),(o.get(m)??0)===0)a.push(m)}i=a.sort((l,m)=>l.localeCompare(m))}return c.length===n.nodes.length?c:null}e(dr,"topoSortByGenerationIfAcyclic");function ur(n,o){let s=Oe(n),i=o?.direction==="LR"?dr(s)??[...s.nodes].sort():We(s)??[...s.nodes].sort(),c=ve(s),a=e((y)=>c(y)??y,"laneOf"),l=Object.create(null),m=new Map,f=e((y,I)=>{if(o?.ignoreCrossLaneEdges??!0)return a(y)===a(I)?1:0;return 1},"edgeWeight");for(let y of i){if(s.nodeById.get(y)?.isGroup)continue;let E=Oo(s,y),b=0;if(E.length>0)for(let R of E){let v=R.src,A=l[v]??0;b=Math.max(b,A+f(v,y))}let x=a(y),d=m.get(x)??0,M=Math.max(b,d);l[y]=M,m.set(x,M+1)}return{layers:ko(s,i,l,{skipGroups:!0}),rankOf:l,dummy:new Set}}e(ur,"assignLayers_LaneAwareCompact");function hr(n,o){let s=Oe(o),{rankOf:i}=n,c=n.layers.map((b)=>[...b]),a=new Set(n.dummy?[...n.dummy]:[]),l=0,m=new Map(s.nodeById),f=e((b)=>{let x=`placeholder-${l++}`,d={id:x,isGroup:!1,isDummy:!0,width:0,height:0};m.set(x,d),a.add(x);while(c.length<=b)c.push([]);return c[b].push(x),i[x]=b,x},"addDummyAt"),g=[...s.edges].sort((b,x)=>b.id===x.id?b.src===x.src?b.dst.localeCompare(x.dst):b.src.localeCompare(x.src):b.id.localeCompare(x.id)),y=[];for(let b of g){let x=i[b.src]??0,d=i[b.dst]??0;if(d-x<=1){y.push(b);continue}let M=b.src;for(let v=x+1,A=0;v<d;v++,A++){let F=f(v);y.push({id:`${b.id}#${A}`,src:M,dst:F,weight:b.weight,ref:b.ref}),M=F}let R=d-x-2;y.push({id:`${b.id}#${Math.max(R+1,0)}`,src:M,dst:b.dst,weight:b.weight,ref:b.ref})}let E={nodes:[...s.nodes,...[...a].filter((b)=>!s.nodes.includes(b))],edges:y,layout:s.layout,nodeById:m};return{layering:{layers:c,rankOf:i,dummy:a},graphWithDummies:E}}e(hr,"makeProperLayering");function fo(n){let o=n.length;if(o===0)return Number.POSITIVE_INFINITY;let s=[...n].sort((i,c)=>i-c);if(o%2===1)return s[(o-1)/2];return 0.5*(s[o/2-1]+s[o/2])}e(fo,"median");function uo(n){if(n.length===0)return Number.POSITIVE_INFINITY;return n.reduce((s,i)=>s+i,0)/n.length}e(uo,"barycenter");function gr(n,o,s,i){let c=new Map;for(let a of n)c.set(a,[]);for(let a of s)if(i==="down"){if(o.has(a.src)&&c.has(a.dst))c.get(a.dst).push(o.get(a.src))}else if(o.has(a.dst)&&c.has(a.src))c.get(a.src).push(o.get(a.dst));return c}e(gr,"neighborPositionsFor");function pr(n,o,s){let i=s.get(n)??0,c=s.get(o)??0;return i!==c?i-c:n.localeCompare(o)}e(pr,"currentOrderTieBreak");function ho(n,o,s){let i=new Set(n),c=new Set(o),a=je(n),l=je(o),m=[];for(let g of s)if(i.has(g.src)&&c.has(g.dst))m.push({u:a.get(g.src),v:l.get(g.dst)});m.sort((g,y)=>g.u===y.u?g.v-y.v:g.u-y.u);let f=m.map((g)=>g.v);return _o(f)}e(ho,"countCrossingsBetweenAdjacent");function un(n,o,s){return[...n].sort((i,c)=>{let a=fo(o.get(i)??[]),l=fo(o.get(c)??[]);if(a===l)return pr(i,c,s);if(!isFinite(a))return 1;if(!isFinite(l))return-1;return a-l})}e(un,"sortByHeuristic");function go(n,o,s,i,c,a){let l=je(n),m=je(o),f=gr(o,l,s,i);if(!c||!a||a.length===0)return un(o,f,m);let g=new Map;for(let E of o){let b=c(E),x=g.get(b)??[];x.push(E),g.set(b,x)}let y=[];for(let E of a){let b=g.get(E);if(!b||b.length===0)continue;let x=un(b,f,m);y.push(...x)}let I=g.get(null);if(I&&I.length>0){let E=un(I,f,m);for(let b of E){let x=uo(f.get(b)??[]),d=y.length;if(isFinite(x))for(let[M,R]of y.entries()){let v=uo(f.get(R)??[]);if(x<v){d=M;break}}y.splice(d,0,b)}}return y}e(go,"reorderLayer");function po(n,o,s,i,c){let a=[...o],l=new Set(n),m=new Set(o),f=i?new Set(i):null,g=s.filter((d)=>l.has(d.src)&&m.has(d.dst)),y=f?s.filter((d)=>m.has(d.src)&&f.has(d.dst)):void 0,I=e((d)=>{let M=ho(n,d,g);if(y&&i)M+=ho(d,i,y);return M},"crossingScore"),E=c?new Map:null;if(c&&E)for(let d of o)E.set(d,c(d));let b=!0,x=I(a);while(b){b=!1;for(let d=0;d+1<a.length;d++){if(E){let v=E.get(a[d]),A=E.get(a[d+1]);if(v!==A)continue}let M=x;[a[d],a[d+1]]=[a[d+1],a[d]];let R=I(a);if(R<M)x=R,b=!0;else[a[d],a[d+1]]=[a[d+1],a[d]]}}return a}e(po,"transposeImprove");function mr(n,o,s){let i=n.layers.map((m)=>[...m]),c=o.edges,a=ve(o),l=Ho(o,s?.laneOrder);for(let m=0;m<3;m++){for(let f=1;f<i.length;f++)i[f]=go(i[f-1],i[f],c,"down",a,l),i[f]=po(i[f-1],i[f],c,i[f+1],a);for(let f=i.length-2;f>=0;f--)i[f]=go(i[f+1],i[f],c,"up",a,l),i[f]=po(i[f+1],i[f],c,i[f-1],a)}return{layers:i}}e(mr,"orderLayers");function yr(n,o,s){let i=s?.layerGap??qo.DEFAULT_LAYER_GAP,c=s?.nodeGap??qo.DEFAULT_NODE_GAP,a=s?.laneGap??c*2,l=s?.direction??"TB",m=l==="LR"||l==="RL",f=n.layers,g=Object.create(null),y=Object.create(null),I=e((P)=>o.nodeById.get(P),"getNode"),E=e((P)=>I(P)?.width??0,"getWidth"),b=e((P)=>I(P)?.height??0,"getHeight"),x=ve(o),d=Ho(o,s?.laneOrder),M=f.map((P)=>P.reduce((V,z)=>Math.max(V,b(z)),0)),R=[];if(m)for(let P=0;P+1<f.length;P++){let V=f[P].reduce((Tt,$t)=>Math.max(Tt,E($t)),0),z=f[P+1].reduce((Tt,$t)=>Math.max(Tt,E($t)),0),D=M[P],W=M[P+1],J=D/2+W/2,st=(V+z)/2,xt=Math.max(0,st-J-i);R.push(xt)}let v=new Set;for(let P of f)for(let V of P)v.add(x(V));let A=v.has(null),F=d.filter((P)=>v.has(P)),T=[...A?[null]:[],...F],C=Object.create(null);for(let P of F)C[P]=0;if(A)C.null=0;for(let P of f){let V=Object.create(null),z=[];for(let D of P){let W=x(D);if(W===null)z.push(D);else(V[W]||=[]).push(D)}for(let[D,W]of Object.entries(V)){let J=W.reduce((st,xt)=>st+E(xt),0)+c*Math.max(0,W.length-1);C[D]=Math.max(C[D]??0,J)}if(A&&z.length){let D=z.reduce((W,J)=>W+E(J),0)+c*Math.max(0,z.length-1);C.null=Math.max(C.null??0,D)}}let O=new Map;{let P=T.map((D)=>(D===null?C.null:C[D])??0),z=-(P.reduce((D,W)=>D+W,0)+a*Math.max(0,T.length-1))/2;for(let D=0;D<T.length;D++){let W=T[D],J=P[D]??0,st=z+J/2;if(O.set(W,st),z+=J,D<T.length-1)z+=a}}let _=0;for(let[P,V]of f.entries()){let z=M[P]??0,D=new Map;for(let J of V){let st=x(J),xt=D.get(st)??[];xt.push(J),D.set(st,xt)}for(let J of T){let st=D.get(J)??[];if(st.length===0)continue;let xt=O.get(J);if(st.length===1){let Tt=st[0];g[Tt]=xt,y[Tt]=_+z/2}else{let Tt=st.map((lt)=>E(lt)),$t=Tt.reduce((lt,ot)=>lt+ot,0)+c*(st.length-1),Ut=xt-$t/2;for(let[lt,ot]of st.entries()){let dt=Tt[lt];g[ot]=Ut+dt/2,y[ot]=_+z/2,Ut+=dt+c}}}let W=R[P]??0;_+=z+i+W}let Y=new Map;for(let P of o.edges){let V=P.ref.id;if(!Y.has(V))Y.set(V,[]);Y.get(V).push(P)}for(let[,P]of Y){if(P.length===0)continue;let V=P[0].ref,{start:z,end:D}=V;if(z==null||D==null)continue;let W=Math.round(((g[z]??0)+(g[D]??0))/2),J=new Set;for(let st of P)J.add(st.src),J.add(st.dst);for(let st of J){if(st===z||st===D)continue;if(o.nodeById.get(st)?.isDummy)g[st]=W}}return{x:g,y}}e(yr,"assignCoordinates");var xr=8;function br(n){let o=2166136261;for(let s=0;s<n.length;s++)o^=n.charCodeAt(s),o=Math.imul(o,16777619);return o>>>0}e(br,"hashString");function Mr(n){let o=n>>>0;return()=>{o+=1831565813;let s=o;return s=Math.imul(s^s>>>15,s|1),s^=s+Math.imul(s^s>>>7,s|61),((s^s>>>14)>>>0)/4294967296}}e(Mr,"mulberry32");function Ir(n,o){let s=[...n],i=Mr(o);for(let c=s.length-1;c>0;c--){let a=Math.floor(i()*(c+1));[s[c],s[a]]=[s[a],s[c]]}return s}e(Ir,"deterministicShuffle");function Sr(n,o){let s=0;for(let[i,c]of n.entries())s+=Math.abs(i-(o.get(c)??i));return s}e(Sr,"sourceDistance");function mo(n,o){let s=new Map;for(let[c,a]of n.entries())s.set(a,c);let i=0;for(let{a:c,b:a,weight:l}of o){let m=s.get(c),f=s.get(a);if(m==null||f==null)continue;i+=l*Math.abs(m-f)}return i}e(mo,"laneArrangementCost");function Cr(n){let o=En(n);if(o.length<2)return[];let s=new Map(o.map((a,l)=>[a,l])),i=ve(n),c=new Map;for(let a of n.layout.edges??[]){if(a.isLayoutOnly)continue;let l=typeof a.start==="string"?a.start:void 0,m=typeof a.end==="string"?a.end:void 0;if(!l||!m||!n.nodeById.has(l)||!n.nodeById.has(m))continue;let f=i(l),g=i(m);if(!f||!g||f===g)continue;let y=s.get(f),I=s.get(g);if(y==null||I==null)continue;let[E,b]=y<=I?[f,g]:[g,f],x=`${E}\x00${b}`,d=c.get(x);if(d)d.weight++;else c.set(x,{a:E,b,weight:1})}return[...c.values()]}e(Cr,"buildWeightedLaneEdges");function yo(n,o,s){let i=[...n],c=mo(i,o),a=!0,l=0,m=Math.max(1,i.length);while(a&&l<m){a=!1,l++;for(let f=0;f+1<i.length;f++){[i[f],i[f+1]]=[i[f+1],i[f]];let g=mo(i,o);if(g<c)c=g,a=!0;else[i[f],i[f+1]]=[i[f+1],i[f]]}}return{order:i,cost:c,sourceDistance:Sr(i,s)}}e(yo,"greedySwitch");function vr(n,o){if(n.cost!==o.cost)return n.cost<o.cost;return n.sourceDistance<o.sourceDistance}e(vr,"isBetterCandidate");function Lr(n,o,s){let i=[...o].sort((c,a)=>c.a===a.a?c.b.localeCompare(a.b):c.a.localeCompare(a.a)).map(({a:c,b:a,weight:l})=>`${c}:${a}:${l}`).join("|");return br(`${n.join("|")}#${i}#${s}`)}e(Lr,"seedForRestart");function Er(n,o={}){let s=En(n);if(s.length<2)return s;let i=Cr(n);if(i.length===0)return s;let c=new Map(s.map((m,f)=>[m,f])),a=yo(s,i,c),l=Math.max(0,o.restarts??xr);for(let m=0;m<l;m++){let f=Lr(s,i,m),g=Ir(s,f),y=yo(g,i,c);if(vr(y,a))a=y}return a.order}e(Er,"optimizeTopLaneOrder");function wr(n,o){let s=o?.ignoreCrossLaneEdges??!0,i=o?.optimizeRanksByCrossings??!0,c=Oe(n),a=o?.automaticLaneOrdering?Er(c,{restarts:xr}):void 0,l=Us(c),m=l.acyclic,f=s?ur(m,{compactSingleInput:o?.compactSingleInput??In.DEFAULT_COMPACT_SINGLE_INPUT,ignoreCrossLaneEdges:!0,direction:o?.direction}):fr(m,{compactSingleInput:o?.compactSingleInput??In.DEFAULT_COMPACT_SINGLE_INPUT,ignoreCrossLaneEdges:!1,optimizeRanksByCrossings:i}),{layering:g,graphWithDummies:y}=hr(f,m),I=mr(g,y,{laneOrder:a}),E=yr(I,y,{layerGap:o?.layerGap,nodeGap:o?.nodeGap,direction:o?.direction,laneOrder:a});return{acyclic:m,reversed:l.reversed,layering:g,ordered:I,coordinates:E}}e(wr,"sugiyamaLayout");var bt=Qr.EPSILON,ti=8,Pe=15,Ge=15,fn=25,me=20,Dn=10;function xo(n,o,s){let i=n.x??0,c=n.y??0,a=o.x-i,l=o.y-c,m=Math.abs(a),f=Math.abs(l);if(m<bt&&f<bt)return s;let g=3;if(f>bt&&f*g>=m)return l>0?"bottom":"top";if(m>bt)return a>0?"right":"left";return s}e(xo,"chooseOrthogonalSide");function bo(n,o){return Math.abs(n.to-o.from)<bt||Math.abs(n.to-o.to)<bt?n.to:n.from}e(bo,"sharedLineEndpointCoord");function Fe(n,o){return n.orient==="vertical"?{x:n.coord,y:o}:{x:o,y:n.coord}}e(Fe,"pointOnLine");function Rr(n,o){let s=n.nodes??[],i=n.edges??[],c=[];for(let p of i){if(p.isLayoutOnly)continue;c.push({...p,__originalEdge:p})}let a=new Map,l=new Map,m=[],f=o==="LR";for(let p of s)a.set(p.id,p);let g=s.filter((p)=>p.isGroup&&!p.parentId);for(let p of g){let S={id:p.id},w=e((N)=>{l.set(N.id,S),s.filter((B)=>B.parentId===N.id).forEach(w)},"assignLane");w(p)}let y=s.filter((p)=>!p.isGroup&&!p.isEdgeLabel).map((p)=>{let S=p.width??10,w=p.height??10,N=p.x??0,B=p.y??0,G=ti;return{nodeId:p.id,minX:N-S/2-G,maxX:N+S/2+G,minY:B-w/2-G,maxY:B+w/2+G,visualXHalfExtent:f?w/2+G:S/2+G}}),I=e((p,S,w,N)=>{let B=m.find((G)=>G.orientation===p&&Math.abs(G.coord-S)<1);if(!B)B={id:`pipe-${p}-${S.toFixed(0)}`,orientation:p,coord:S,spanMin:w,spanMax:N,tracks:[]},m.push(B);return B.spanMin=Math.min(B.spanMin,w),B.spanMax=Math.max(B.spanMax,N),B},"getOrAddPipe"),E=e((p,S)=>{let w=p.width??10,N=p.height??10,B=p.x??0,G=p.y??0;switch(S){case"top":return{x:B,y:G-N/2};case"bottom":return{x:B,y:G+N/2};case"left":return{x:B-w/2,y:G};case"right":return{x:B+w/2,y:G}}},"portForSide"),b=e((p,S,w)=>E(p,xo(p,S,w?"bottom":"top")),"getOrthogonalPort"),x=[],d=[],M=new Set,R=1000,v=e((p,S,w)=>{if(x.length===0)return 0;let N=Math.abs(S.y-w.y)<bt,B=Math.abs(S.x-w.x)<bt;if(!N&&!B)return 0;let G=0;if(N){let nt=S.y,it=Math.min(S.x,w.x)-bt,tt=Math.max(S.x,w.x)+bt;if(tt<=it)return 0;for(let q of x){if(q.edgeIndex===p||q.orientation!=="vertical")continue;if(q.pipe.coord<it||q.pipe.coord>tt)continue;if(q.from-bt<=nt&&q.to+bt>=nt)G+=R}}else if(B){let nt=S.x,it=Math.min(S.y,w.y)-bt,tt=Math.max(S.y,w.y)+bt;if(tt<=it)return 0;for(let q of x){if(q.edgeIndex===p||q.orientation!=="horizontal")continue;if(q.pipe.coord<it||q.pipe.coord>tt)continue;if(q.from-bt<=nt&&q.to+bt>=nt)G+=R}}return G},"crossingPenalty"),A=c.map((p,S)=>{if(!p.start||!p.end)return{idx:S,crossLane:0,dx:0,dy:0};let w=a.get(p.start),N=a.get(p.end),B=l.get(p.start),G=l.get(p.end),nt=B&&G&&B.id!==G.id?1:0,it=w&&N?Math.abs((N.x??0)-(w.x??0)):0,tt=w&&N?Math.abs((N.y??0)-(w.y??0)):0;return{idx:S,crossLane:nt,dx:it,dy:tt}}).sort((p,S)=>{if(p.crossLane!==S.crossLane)return S.crossLane-p.crossLane;let w=p.dx+p.dy,N=S.dx+S.dy;if(Math.abs(w-N)>1)return w-N;return p.idx-S.idx}).map((p)=>p.idx),F=e((p,S,w,N)=>{let B=Math.min(p.x,S.x),G=Math.max(p.x,S.x),nt=Math.min(p.y,S.y),it=Math.max(p.y,S.y);return!!y.find((q)=>{if(w&&q.nodeId===w)return!1;if(N&&q.nodeId===N)return!1;if(Math.abs(p.x-S.x)>bt)return q.minY<p.y&&q.maxY>p.y&&q.maxX>B&&q.minX<G;else return q.minX<p.x&&q.maxX>p.x&&q.maxY>nt&&q.minY<it})},"isSegmentBlocked"),T=new Map,C=new Map;for(let p of c){if(!p.start||!p.end||p.start===p.end)continue;C.set(p.start,(C.get(p.start)??0)+1),C.set(p.end,(C.get(p.end)??0)+1)}let O=e((p,S)=>xo(p,S,"bottom"),"determineSide"),_=new Map;for(let[p,S]of c.entries()){if(!S.start||!S.end||S.start===S.end)continue;if(S.points&&S.points.length>0)continue;let w=a.get(S.start),N=a.get(S.end);if(!w||!N)continue;let B=(N.x??0)-(w.x??0),G=(N.y??0)-(w.y??0);_.set(p,{edgeIdx:p,srcId:S.start,dstId:S.end,srcSide:O(w,{x:N.x??0,y:N.y??0}),dstSide:O(N,{x:w.x??0,y:w.y??0}),absDx:Math.abs(B),absDy:Math.abs(G),dxSign:Math.sign(B),dySign:Math.sign(G)})}let Y=e((p)=>{if(p.srcSide==="top"||p.srcSide==="bottom")return p.absDx===0?1/0:p.absDy/p.absDx;return p.absDy===0?1/0:p.absDx/p.absDy},"preferenceStrength"),P=e((p)=>{if(p.srcSide==="top"||p.srcSide==="bottom")return p.dxSign>=0?"right":"left";return p.dySign>=0?"bottom":"top"},"secondarySide"),V=new Map;for(let p of _.values()){let S=`${p.srcId}:${p.srcSide}`;if(!V.has(S))V.set(S,[]);V.get(S).push(p)}let z=new Map,D=e((p,S)=>`${p}:${S}`,"loadKey");for(let p of _.values())z.set(D(p.srcId,p.srcSide),(z.get(D(p.srcId,p.srcSide))??0)+1),z.set(D(p.dstId,p.dstSide),(z.get(D(p.dstId,p.dstSide))??0)+1);for(let p of V.values()){if(p.length<2)continue;p.sort((S,w)=>{let N=Y(S),B=Y(w);if(Math.abs(N-B)>0.000000001)return B-N;return S.edgeIdx-w.edgeIdx});for(let S=1;S<p.length;S++){let w=p[S],N=P(w),B=z.get(D(w.srcId,w.srcSide))??0,G=z.get(D(w.srcId,N))??0;if(G>=B)continue;z.set(D(w.srcId,w.srcSide),B-1),z.set(D(w.srcId,N),G+1),w.srcSide=N}}let W=e((p)=>{let S=p?.shape;return S==="question"||S==="diamond"},"isDiamondNode"),J=new Map;for(let p of _.values()){if(!J.has(p.dstId))J.set(p.dstId,new Set);J.get(p.dstId).add(p.dstSide)}for(let p of _.values()){if(!W(a.get(p.srcId)))continue;let S=J.get(p.srcId);if(!S?.has(p.srcSide))continue;let w=P(p);if(S.has(w)||(z.get(D(p.srcId,w))??0)>0)continue;let N=z.get(D(p.srcId,p.srcSide))??0;z.set(D(p.srcId,p.srcSide),Math.max(0,N-1)),z.set(D(p.srcId,w),1),p.srcSide=w}for(let p of _.values()){let{edgeIdx:S,srcId:w,dstId:N,srcSide:B,dstSide:G}=p,nt=a.get(w),it=a.get(N),tt=`${w}:${B}:src`,q=B==="top"||B==="bottom"?it.x??0:it.y??0;if(!T.has(tt))T.set(tt,[]);T.get(tt).push({edgeIdx:S,oppositeCoord:q});let ht=`${N}:${G}:dst`,pt=G==="top"||G==="bottom"?nt.x??0:nt.y??0;if(!T.has(ht))T.set(ht,[]);T.get(ht).push({edgeIdx:S,oppositeCoord:pt})}let st=new Map,xt=8;for(let[p,S]of T){if(S.length<2)continue;S.sort((_t,Zt)=>_t.oppositeCoord-Zt.oppositeCoord);let w=p.split(":"),N=w.slice(0,-2).join(":"),B=w[w.length-2],G=w[w.length-1],nt=a.get(N);if(!nt)continue;let tt=B==="left"||B==="right"?nt.height??10:nt.width??10,q=nt.shape,pt=q==="question"||q==="diamond"?tt*0.3:tt,ft=Math.min(20,Math.max(xt,pt/(S.length+1))),zt=-(ft*(S.length-1))/2;for(let[_t,Zt]of S.entries()){let de=zt+_t*ft,An=`${Zt.edgeIdx}:${G}`;st.set(An,de)}}let Tt=e((p)=>Boolean(c[p]?.labelNodeId),"edgeHasLabelNode"),$t=e((p,S)=>{if(!p)return!1;return(T.get(`${p}:${S}:src`)??[]).some(({edgeIdx:w})=>Tt(w))||(T.get(`${p}:${S}:dst`)??[]).some(({edgeIdx:w})=>Tt(w))},"faceHasLabelNode"),Ut=e((p,S,w)=>{if(S==="top"||S==="bottom")return{x:p.x+w,y:p.y};else return{x:p.x,y:p.y+w}},"applyPortOffset"),lt=e((p,S,w)=>{let N=_.get(p),B={x:w.x??0,y:w.y??0},G={x:S.x??0,y:S.y??0},nt=N?.srcSide??O(S,B),it=N?.dstSide??O(w,G),tt=N?E(S,N.srcSide):b(S,B,!0),q=N?E(w,N.dstSide):b(w,G,!1),ht=st.get(`${p}:src`),pt=st.get(`${p}:dst`);if(ht!==void 0)tt=Ut(tt,nt,ht);if(pt!==void 0)q=Ut(q,it,pt);return{pSrcPort:tt,pDstPort:q,srcSide:nt,dstSide:it}},"portsForEdge");for(let p of A){let S=c[p];if(d[p]=[],!S.start||!S.end)continue;if(S.points&&S.points.length>0)continue;if(S.start===S.end)continue;let w=a.get(S.start),N=a.get(S.end);if(!w||!N)continue;let{pSrcPort:B,pDstPort:G,srcSide:nt,dstSide:it}=lt(p,w,N),tt={...B},q={...G},ht=nt==="top"||nt==="bottom",pt=it==="top"||it==="bottom";if(ht){let K=B.y>(w.y??0);tt.y=K?B.y+me:B.y-me}else{let K=B.x>(w.x??0);tt.x=K?B.x+me:B.x-me}if(pt){let K=G.y>(N.y??0);q.y=K?G.y+me:G.y-me}else{let K=G.x>(N.x??0);q.x=K?G.x+me:G.x-me}let gt=e((K,Z)=>{for(let rt of y){if(Z.includes(rt.nodeId))continue;if(K.x>rt.minX&&K.x<rt.maxX&&K.y>rt.minY&&K.y<rt.maxY)return{inside:!0,obstacle:rt}}return{inside:!1}},"isPointInObstacle"),ft=e((K,Z,rt,It,Pt)=>{if(Pt){let Vt=K.y>(Z.y??0);return{x:(rt.x??0)>=K.x?It.maxX+Pe:It.minX-Pe,y:Vt?It.maxY+Ge:It.minY-Ge,leavesPositiveSide:Vt}}let At=K.x>(Z.x??0),Ht=(rt.y??0)>=K.y;return{x:At?It.maxX+Pe:It.minX-Pe,y:Ht?It.maxY+Ge:It.minY-Ge,leavesPositiveSide:At}},"obstacleDetour"),wt=[],zt=[S.start,S.end],_t=gt(tt,zt);if(_t.inside&&_t.obstacle){let K=_t.obstacle;if(ht){let Z=ft(B,w,N,K,!0);tt.x=Z.x,tt.y=Z.y;let rt=Z.leavesPositiveSide?Math.min(K.minY-2,B.y+me):Math.max(K.maxY+2,B.y-me);wt=[{x:B.x,y:rt},{x:Z.x,y:rt},{x:Z.x,y:Z.y}]}else{let Z=ft(B,w,N,K,!1),rt=Z.leavesPositiveSide?Math.min(K.minX-2,B.x+me):Math.max(K.maxX+2,B.x-me);tt.x=Z.x,tt.y=Z.y,wt=[{x:rt,y:B.y},{x:rt,y:Z.y},{x:Z.x,y:Z.y}]}}let Zt=[],de=gt(q,zt);if(de.inside&&de.obstacle){let K=de.obstacle;if(pt){let Z=ft(G,N,w,K,!0);q.x=Z.x,q.y=Z.y,Zt=[{x:Z.x,y:Z.y},{x:G.x,y:Z.y}]}else{let Z=ft(G,N,w,K,!1);q.x=Z.x,q.y=Z.y,Zt=[{x:Z.x,y:Z.y},{x:Z.x,y:G.y}]}}if(wt.length===0&&Zt.length===0){let K=Pe,Z=Math.abs(tt.x-q.x)<K,rt=Math.abs(tt.y-q.y)<K,It=st.get(`${p}:src`)!==void 0||st.get(`${p}:dst`)!==void 0,Pt=(T.get(`${S.start??""}:${nt}:src`)?.length??0)+(T.get(`${S.start??""}:${nt}:dst`)?.length??0),At=(T.get(`${S.end??""}:${it}:src`)?.length??0)+(T.get(`${S.end??""}:${it}:dst`)?.length??0),Ht=Pt>1||At>1,Vt=C.get(S.start??"")??0,Ct=C.get(S.end??"")??0,ee=Pt>1&&$t(S.start,nt)||At>1&&$t(S.end,it),pe=Pt<=1||Vt<=2,Wt=At<=1||Ct<=2;if((Z||rt)&&!It&&(!Ht||Ht&&!ee&&pe&&Wt)){if(!F(B,G,S.start,S.end)){S.points=[{...B},{...tt},{...q},{...G}],M.add(p);let Nt=rt?"horizontal":"vertical",oe=rt?B.y:B.x,Ot=rt?Math.min(B.x,G.x):Math.min(B.y,G.y),Bt=rt?Math.max(B.x,G.x):Math.max(B.y,G.y),ae={id:`fast-path-${Nt}-${oe.toFixed(0)}-${p}`,orientation:Nt,coord:oe,spanMin:Ot,spanMax:Bt,tracks:[]};x.push({edgeIndex:p,segmentIndex:0,orientation:Nt,pipe:ae,trackIndex:0,from:Ot,to:Bt});continue}}}let An=I("vertical",tt.x,tt.y,tt.y);tt.x=An.coord;let Or=I("vertical",q.x,q.y,q.y);q.x=Or.coord;let Ee=Math.min(tt.x,q.x)-50,Te=Math.max(tt.x,q.x)+50,De=Math.min(tt.y,q.y)-50,Xe=Math.max(tt.y,q.y)+50;for(let K of y){let Z=Math.min(tt.x,q.x),rt=Math.max(tt.x,q.x),It=Math.min(tt.y,q.y),Pt=Math.max(tt.y,q.y);if(K.minX<rt&&K.maxX>Z&&K.minY<Pt&&K.maxY>It)Ee=Math.min(Ee,K.minX-fn),Te=Math.max(Te,K.maxX+fn),De=Math.min(De,K.minY-fn),Xe=Math.max(Xe,K.maxY+fn)}for(let K of y){if(K.maxX<Ee||K.minX>Te||K.maxY<De||K.minY>Xe)continue;let Z=Pe;I("horizontal",K.minY-Z,Ee,Te),I("horizontal",K.maxY+Z,Ee,Te);let rt=Ge;I("vertical",K.minX-rt,De,Xe),I("vertical",K.maxX+rt,De,Xe)}I("horizontal",tt.y,Ee,Te),I("horizontal",q.y,Ee,Te);let Br=m.filter((K)=>K.orientation==="horizontal"&&K.coord>=De&&K.coord<=Xe),Pr=m.filter((K)=>K.orientation==="vertical"&&K.coord>=Ee&&K.coord<=Te),Ke=e((K,Z)=>`${K.toFixed(1)},${Z.toFixed(1)}`,"getKey"),qe=Ke(tt.x,tt.y),Xo=Ke(q.x,q.y),Je=new Map,Nn=new Map,On=new Map,Ze=new Set,Be=[];Je.set(qe,0),On.set(qe,"n"),Be.push({key:qe,f:Math.hypot(q.x-tt.x,q.y-tt.y),pt:tt}),Ze.add(qe);let Qt=[],we=e((K,Z)=>F(K,Z,S.start,S.end),"checkSegmentBlocked"),Bn={x:q.x,y:tt.y},Fr=we(tt,Bn),kr=we(Bn,q),_r=Fr||kr,Pn={x:tt.x,y:q.y},Hr=we(tt,Pn),Xr=we(Pn,q),Yr=Hr||Xr;if(!_r)if(Math.abs(tt.y-q.y)<bt||Math.abs(tt.x-q.x)<bt)Qt=[tt,q];else Qt=[tt,Bn,q];else if(!Yr)if(Math.abs(tt.x-q.x)<bt)Qt=[tt,q];else Qt=[tt,Pn,q];if(Qt.length===0)while(Be.length>0){Be.sort((Ct,ee)=>Ct.f-ee.f);let K=Be.shift();if(Ze.delete(K.key),K.key===Xo){let Ct=Xo,ee=q;Qt=[ee];while(Nn.has(Ct)){let pe=Nn.get(Ct);Qt.unshift(pe),ee=pe,Ct=Ke(pe.x,pe.y)}break}let Z=K.pt.x,rt=K.pt.y,It=Pr.sort((Ct,ee)=>Ct.coord-ee.coord),Pt=It.findIndex((Ct)=>Math.abs(Ct.coord-Z)<1),At=Br.sort((Ct,ee)=>Ct.coord-ee.coord),Ht=At.findIndex((Ct)=>Math.abs(Ct.coord-rt)<1),Vt=[];if(Pt>0)Vt.push({x:It[Pt-1].coord,y:rt});if(Pt>=0&&Pt<It.length-1)Vt.push({x:It[Pt+1].coord,y:rt});if(Ht>0)Vt.push({x:Z,y:At[Ht-1].coord});if(Ht>=0&&Ht<At.length-1)Vt.push({x:Z,y:At[Ht+1].coord});for(let Ct of Vt){let ee=Math.min(Z,Ct.x),pe=Math.max(Z,Ct.x),Wt=Math.min(rt,Ct.y),ne=Math.max(rt,Ct.y);if(y.some((ue)=>{if(ue.nodeId===S.start||ue.nodeId===S.end)return!1;if(ee!==pe)return ue.minY<rt&&ue.maxY>rt&&ue.maxX>ee&&ue.minX<pe;else return ue.minX<Z&&ue.maxX>Z&&ue.maxY>Wt&&ue.minY<ne}))continue;let Nt=Ke(Ct.x,Ct.y),oe=Math.abs(Ct.x-Z)+Math.abs(Ct.y-rt),Ot=v(p,K.pt,Ct),Bt=0,ae=q.x-tt.x,Ye=q.y-tt.y,tn=Ct.x-Z,Fn=Ct.y-rt;if(Ye>10&&Fn<-5||Ye<-10&&Fn>5)Bt=Math.abs(Fn)*100;if(ae>10&&tn<-5||ae<-10&&tn>5)Bt+=Math.abs(tn)*50;let Yo=0,Go=On.get(K.key)??"n",$o=Math.abs(tn)>bt?"h":"v";if(Go!=="n"&&Go!==$o)Yo=50;let Gr=oe+Ot+Bt+Yo,en=(Je.get(K.key)??1/0)+Gr,zo=Math.abs(q.x-Ct.x)+Math.abs(q.y-Ct.y);if(en<(Je.get(Nt)??1/0))if(Nn.set(Nt,K.pt),Je.set(Nt,en),On.set(Nt,$o),!Ze.has(Nt))Be.push({key:Nt,f:en+zo,pt:Ct}),Ze.add(Nt);else{let ue=Be.findIndex(($r)=>$r.key===Nt);if(ue!==-1)Be[ue].f=en+zo}}}if(Qt.length===0)Qt=[tt,{x:tt.x,y:q.y},q];if(Qt.length>4){let K=Qt[0],Z=Qt[Qt.length-1],rt=Math.min(K.x,Z.x),It=Math.max(K.x,Z.x),Pt=Math.min(K.y,Z.y),At=Math.max(K.y,Z.y);for(let Wt of Qt)rt=Math.min(rt,Wt.x),It=Math.max(It,Wt.x),Pt=Math.min(Pt,Wt.y),At=Math.max(At,Wt.y);let Ht=It>Math.max(K.x,Z.x),Vt=rt<Math.min(K.x,Z.x);if(f){let Wt=Ge;if(Ht){let ne=Math.max(K.x,Z.x),jt=Math.min(K.y,Z.y),Nt=Math.max(K.y,Z.y),oe=y.filter((Ot)=>Ot.minX<ne&&Ot.maxX>ne&&Ot.minY<Nt&&Ot.maxY>jt);if(oe.length>0){let Ot=Math.max(K.x,Z.x);for(let Bt of oe){let ae=(Bt.minX+Bt.maxX)/2;if(Bt.visualXHalfExtent===void 0||isNaN(Bt.visualXHalfExtent))continue;let Ye=ae+Bt.visualXHalfExtent+Wt;Ot=Math.max(Ot,Ye)}if(!isNaN(Ot))It=Ot}}if(Vt){let ne=y.filter((jt)=>jt.minX<Math.min(K.x,Z.x)+Wt&&jt.minY<Math.max(K.y,Z.y)&&jt.maxY>Math.min(K.y,Z.y));if(ne.length>0){let jt=Math.min(K.x,Z.x);for(let Nt of ne){let Ot=(Nt.minX+Nt.maxX)/2-Nt.visualXHalfExtent-Wt;jt=Math.min(jt,Ot)}rt=jt}}}let Ct=e((Wt)=>{let ne=Z.y>K.y,jt=y.filter((Ot)=>{let Bt=Math.min(K.x,Z.x)<Ot.maxX&&Math.max(K.x,Z.x)>Ot.minX,ae=Math.min(K.y,Z.y)<Ot.maxY&&Math.max(K.y,Z.y)>Ot.minY;return Bt&&ae}),Nt=jt;if(f&&jt.length>0){let Ot=jt.filter((Bt)=>Bt.minX<Wt&&Bt.maxX>Wt);if(Ot.length>0)Nt=Ot}if(Nt.length===0)return Z.y;let oe=Pe;if(ne){let Bt=Math.max(...Nt.map((ae)=>ae.maxY))+oe;if(Bt<Z.y-bt)return Bt}else{let Bt=Math.min(...Nt.map((ae)=>ae.minY))-oe;if(Bt>Z.y+bt)return Bt}return Z.y},"findBestReturnY"),ee=e((Wt)=>{let ne=Ct(Wt),jt={x:Wt,y:K.y},Nt={x:Wt,y:ne},oe={x:Z.x,y:ne},Ot=we(K,jt),Bt=we(jt,Nt),ae=we(Nt,oe),Ye=ne!==Z.y?we(oe,Z):!1;if(!Ot&&!Bt&&!ae&&!Ye){if(Math.abs(ne-Z.y)<bt)return[K,jt,Nt,Z];return[K,jt,Nt,oe,Z]}return null},"trySimplifyWithDetourX"),pe=Ht&&!Vt?ee(It):Vt&&!Ht?ee(rt):null;if(pe)Qt=pe}let te=[B,...wt,...Qt,...Zt.reverse(),G];if(te.length>=3){let K=te[te.length-1],Z=te[te.length-2],rt=te[te.length-3],It=Math.abs(rt.y-Z.y)<bt&&Math.abs(Z.y-K.y)<bt,Pt=Math.abs(rt.x-Z.x)<bt&&Math.abs(Z.x-K.x)<bt;if(It){let At=Math.sign(Z.x-rt.x),Ht=Math.sign(K.x-rt.x);if(At!==0&&At===Ht&&Math.abs(Z.x-rt.x)>Math.abs(K.x-rt.x))te.splice(-2,1)}else if(Pt){let At=Math.sign(Z.y-rt.y),Ht=Math.sign(K.y-rt.y);if(At!==0&&At===Ht&&Math.abs(Z.y-rt.y)>Math.abs(K.y-rt.y))te.splice(-2,1)}}let Me=[te[0]];for(let K=1;K<te.length-1;K++){if(K===1){Me.push(te[K]);continue}let Z=Me[Me.length-1],rt=te[K],It=te[K+1];if(Math.abs(Z.y-rt.y)<bt&&Math.abs(rt.y-It.y)<bt){let Pt=rt.x>Z.x,At=It.x>rt.x;if(Pt!==At){Me.push(rt);continue}continue}if(Math.abs(Z.x-rt.x)<bt&&Math.abs(rt.x-It.x)<bt){let Pt=rt.y>Z.y,At=It.y>rt.y;if(Pt!==At){Me.push(rt);continue}continue}Me.push(rt)}Me.push(te[te.length-1]);for(let K=0;K<Me.length-1;K++){let Z=Me[K],rt=Me[K+1],It=Math.abs(Z.x-rt.x)<bt?"vertical":"horizontal",Pt=It==="vertical"?Z.x:Z.y,At=It==="vertical"?Math.min(Z.y,rt.y):Math.min(Z.x,rt.x),Ht=It==="vertical"?Math.max(Z.y,rt.y):Math.max(Z.x,rt.x),Vt=I(It,Pt,At,Ht),Ct={edgeIndex:p,segmentIndex:K,orientation:It,pipe:Vt,trackIndex:0,from:At,to:Ht};if(x.push(Ct),d[p].push(x.length-1),!Vt.tracks[0])Vt.tracks[0]={index:0,coord:Vt.coord,segments:[]};Vt.tracks[0].segments.push({edgeIndex:p,segmentIndex:K,from:At,to:Ht})}}let ot=e((p,S)=>p.from<S.to&&S.from<p.to,"segmentsOverlap"),dt=e((p,S,w,N)=>{let B=!N.segments.some((nt)=>(nt.edgeIndex!==S.edgeIndex||nt.segmentIndex!==S.segmentIndex)&&ot(nt,p)),G=!w.segments.some((nt)=>(nt.edgeIndex!==p.edgeIndex||nt.segmentIndex!==p.segmentIndex)&&ot(nt,S));if(B&&G)return p.trackIndex=N.index,S.trackIndex=w.index,w.segments=[...w.segments.filter((nt)=>nt.edgeIndex!==p.edgeIndex||nt.segmentIndex!==p.segmentIndex),{edgeIndex:S.edgeIndex,segmentIndex:S.segmentIndex,from:S.from,to:S.to}],N.segments=[...N.segments.filter((nt)=>nt.edgeIndex!==S.edgeIndex||nt.segmentIndex!==S.segmentIndex),{edgeIndex:p.edgeIndex,segmentIndex:p.segmentIndex,from:p.from,to:p.to}],!0;return!1},"trySwapSegmentsAcrossTracks"),Mt=e((p)=>{let S=p.tracks.length;return p.tracks[S]={index:S,coord:p.coord,segments:[]},S},"createNewTrack"),Lt=e((p,S)=>{let w=p.pipe.tracks[p.trackIndex];w.segments=w.segments.filter((B)=>B.edgeIndex!==p.edgeIndex||B.segmentIndex!==p.segmentIndex),p.trackIndex=S,p.pipe.tracks[S].segments.push({edgeIndex:p.edgeIndex,segmentIndex:p.segmentIndex,from:p.from,to:p.to})},"moveSegmentToTrack"),Rt=e((p,S)=>{let w=d[p.edgeIndex];for(let N of w){let B=x[N];if(B.pipe===p.pipe)Lt(B,S)}},"moveSegmentChainToTrack"),kt=e((p)=>{let S=d[p.edgeIndex],w=S.indexOf(x.indexOf(p)),N=[];if(w>0)N.push(x[S[w-1]]);if(w<S.length-1)N.push(x[S[w+1]]);return N},"getAdjacentSegmentsAlongEdge"),re=e((p,S)=>{if(p.orientation===S.orientation)return!1;let w=p.orientation==="horizontal"?p:S,N=p.orientation==="horizontal"?S:p;return N.pipe.coord>w.from&&N.pipe.coord<w.to&&w.pipe.coord>N.from&&w.pipe.coord<N.to},"haveAnyCrossing"),ie=e((p,S)=>{for(let w of p.tracks)if(!w.segments.some((B)=>(B.edgeIndex!==S.edgeIndex||B.segmentIndex!==S.segmentIndex)&&ot(B,S)))return w.index;return-1},"findAvailableTrack"),ce=e((p,S)=>{if(p.trackIndex===S.trackIndex)return ot(p,S);let w=kt(p),N=kt(S);return w.some((B)=>N.some((G)=>re(B,G)))},"segmentsConflict"),ge=e((p,S,w)=>{if(dt(p,S,p.pipe.tracks[p.trackIndex],S.pipe.tracks[S.trackIndex]))return;let N=ie(p.pipe,S);w(S,N!==-1?N:Mt(p.pipe))},"resolveTrackConflict"),_e=e((p)=>{let S=0;for(let w=0;w<p.length;w++)for(let N=w+1;N<p.length;N++){let B=p[w],G=p[N];if(B.pipe!==G.pipe)continue;if(ce(B,G))S++,ge(B,G,Rt)}return S},"resolveHandleConflicts"),Le=new Map,He=e((p)=>{if(Le.has(p))return Le.get(p);let S=d[p];if(S.length===0){let it={dest:0,deviation:0,base:0,delta:0};return Le.set(p,it),it}let N=x[S[0]].pipe.coord,B=N;for(let it=1;it<S.length;it++){let tt=x[S[it]];if(tt.orientation==="horizontal"){let{from:q,to:ht}=tt;B=Math.abs(q-N)>Math.abs(ht-N)?q:ht;break}}let G=Math.abs(B-N),nt={dest:B,deviation:G,base:N,delta:B-N};return Le.set(p,nt),nt},"getDestInfo"),Tn=e(()=>{let p=0,S=new Map;for(let[N,B]of c.entries()){if(d[N].length===0)continue;if(!B.start)continue;if(!S.has(B.start))S.set(B.start,[]);S.get(B.start).push(N)}let w=e((N)=>{let B=c[N];if(!B.start||!B.end)return 0;let G=a.get(B.start),nt=a.get(B.end);if(!G||!nt)return 0;let it=(nt.x??0)-(G.x??0),tt=(nt.y??0)-(G.y??0);return Math.abs(it)+Math.abs(tt)},"getEdgeDistance");for(let N of S.values()){N.sort((G,nt)=>{let it=He(G),tt=He(nt);if(Math.abs(it.deviation-tt.deviation)>1)return it.deviation-tt.deviation;if(Math.abs(it.dest-tt.dest)>1)return it.dest-tt.dest;let q=w(G),ht=w(nt);if(Math.abs(q-ht)>1)return ht-q;let pt=d[G].length,gt=d[nt].length;if(pt!==gt)return pt-gt;if(pt===1){let ft=d[G][0],wt=d[nt][0];if(x[ft]&&x[wt]){let zt=x[ft],_t=x[wt],Zt=Math.abs(zt.to-zt.from),de=Math.abs(_t.to-_t.from);if(Math.abs(Zt-de)>1)return Zt-de}}return 0});let B=N.map((G)=>x[d[G][0]]);p+=_e(B)}return p},"fixSourceHandleCrossings"),wn=e(()=>{let p=0,S=new Map;for(let[w,N]of c.entries()){if(d[w].length===0)continue;if(!N.end)continue;if(!S.has(N.end))S.set(N.end,[]);S.get(N.end).push(w)}for(let w of S.values()){w.sort((B,G)=>{let nt=e((q)=>{let ht=d[q];if(ht.length<2)return 0;let pt=x[ht[ht.length-2]];return Math.abs(pt.to-pt.from)},"getDist"),it=nt(B),tt=nt(G);if(Math.abs(it-tt)>0.1)return it-tt;return B-G});let N=w.map((B)=>x[d[B][d[B].length-1]]);p+=_e(N)}return p},"fixTargetHandleCrossings"),Rn=e(()=>{let p=0;for(let S of m){let w=[];for(let N of S.tracks)for(let B of N.segments){let G=d[B.edgeIndex].find((nt)=>x[nt].segmentIndex===B.segmentIndex);if(G!==void 0)w.push(x[G])}w.sort((N,B)=>N.edgeIndex-B.edgeIndex||N.segmentIndex-B.segmentIndex);for(let N=0;N<w.length;N++)for(let B=N+1;B<w.length;B++){let G=w[N],nt=w[B];if(ce(G,nt))p++,ge(G,nt,Lt)}}return p},"fixPipeCrossings"),H=0,j=10;while(H<j){let p=0;if(p+=Tn(),p+=wn(),p+=Rn(),p===0)break;H++}let U=new Map;for(let p of m){let S=[];p.tracks.forEach((N)=>{N.segments.forEach((B)=>{S.push({edgeIndex:B.edgeIndex,segmentIndex:B.segmentIndex,trackIndex:N.index,from:B.from,to:B.to})})}),S.sort((N,B)=>N.from-B.from);let w=[];if(S.length>0){let N=[S[0]],B=S[0].to;for(let G=1;G<S.length;G++){let nt=S[G];if(nt.from<B)N.push(nt),B=Math.max(B,nt.to);else w.push(N),N=[nt],B=nt.to}w.push(N)}for(let N of w){let B=new Set;N.forEach((ft)=>B.add(ft.trackIndex));let G=new Map;N.forEach((ft)=>{let wt=He(ft.edgeIndex);G.set(ft.trackIndex,(G.get(ft.trackIndex)??0)+wt.delta)});let nt=[...B].filter((ft)=>(G.get(ft)??0)<-1),it=[...B].filter((ft)=>(G.get(ft)??0)>1),tt=[...B].filter((ft)=>Math.abs(G.get(ft)??0)<=1);nt.sort((ft,wt)=>(G.get(wt)??0)-(G.get(ft)??0)),it.sort((ft,wt)=>(G.get(ft)??0)-(G.get(wt)??0));let q=e((ft,wt)=>{N.filter((zt)=>zt.trackIndex===ft).forEach((zt)=>{let _t=M.has(zt.edgeIndex)?p.coord:wt;U.set(`${zt.edgeIndex}-${zt.segmentIndex}`,_t)})},"assignCoord"),ht=0;for(let ft of nt)ht++,q(ft,p.coord-ht*Dn);if(tt.length===0&&B.size>0){let ft=[...B].sort((_t,Zt)=>Math.abs(G.get(_t)??0)-Math.abs(G.get(Zt)??0))[0],wt=nt.indexOf(ft);if(wt!==-1)nt.splice(wt,1);let zt=it.indexOf(ft);if(zt!==-1)it.splice(zt,1);tt.push(ft)}let pt=0;for(let ft of tt){if(pt===0)q(ft,p.coord);else{let wt=pt%2===1?1:-1,zt=Math.ceil(pt/2);q(ft,p.coord+wt*zt*Dn*0.5)}pt++}let gt=0;for(let ft of it)gt++,q(ft,p.coord+gt*Dn)}}for(let[p,S]of c.entries()){let w=d[p]??[];if(w.length===0)continue;let N=[],B=a.get(S.start),G=a.get(S.end),{pSrcPort:nt,pDstPort:it}=lt(p,B,G),tt=w.map((pt)=>{let gt=x[pt],ft=U.get(`${gt.edgeIndex}-${gt.segmentIndex}`)??gt.pipe.coord;return{orient:gt.orientation,coord:ft,from:gt.from,to:gt.to}});N.push(nt);for(let pt=0;pt<tt.length;pt++){let gt=tt[pt],ft=N[N.length-1],wt=gt.orient==="vertical"?ft.y:ft.x,zt=gt.orient==="vertical"?ft.x:ft.y,_t=tt[pt+1],Zt=pt<tt.length-1;if(Math.abs(zt-gt.coord)>bt)N.push(Fe(gt,wt));if(Zt&&_t.orient===gt.orient){if(Math.abs(gt.coord-_t.coord)>bt){let de=gt.orient==="vertical"?(wt+_t.from)/2:bo(gt,_t);N.push(Fe(gt,de),Fe(_t,de))}else if(pt===0||pt===tt.length-2)N.push(Fe(gt,bo(gt,_t)))}else if(Zt)N.push(Fe(gt,_t.coord));else{let de=Math.abs(gt.from-wt)<Math.abs(gt.to-wt)?gt.to:gt.from;N.push(Fe(gt,de))}}let q=N[N.length-1];if(Math.abs(q.x-it.x)>bt||Math.abs(q.y-it.y)>bt)N.push(it);let ht=[];if(N.length>0)ht.push(N[0]);for(let pt=1;pt<N.length;pt++){let gt=N[pt],ft=ht[ht.length-1];if(Math.abs(gt.x-ft.x)>bt||Math.abs(gt.y-ft.y)>bt)ht.push(gt)}S.points=ht}for(let p of c){let S=p.__originalEdge;if(S&&p.points)S.points=p.points}n.edges=(n.edges??[]).filter((p)=>!p.isLayoutOnly);let et=e((p,S)=>{let w=S.x??0,N=S.y??0,B=S.width??0,G=S.height??0;if(B<=0||G<=0)return p;let nt=w-B/2,it=w+B/2,tt=N-G/2,q=N+G/2;if(p.x<nt||p.x>it||p.y<tt||p.y>q)return p;let ht=p.x-nt,pt=it-p.x,gt=p.y-tt,ft=q-p.y,wt=Math.min(ht,pt,gt,ft);if(wt===ht)return{x:nt,y:p.y};if(wt===pt)return{x:it,y:p.y};if(wt===gt)return{x:p.x,y:tt};return{x:p.x,y:q}},"nodeBoundaryClamp");for(let p of n.edges){let S=p.points;if(!S||S.length<2)continue;let{start:w,end:N}=p,B=w?a.get(w):void 0,G=N?a.get(N):void 0;if(B)S[0]=et(S[0],B);if(G)S[S.length-1]=et(S[S.length-1],G)}return n}e(Rr,"routeEdgesOrthogonal");function Ar(n){return n.direction??"TB"}e(Ar,"getSwimlaneDirection");function Nr(n){let o=us(n),s=n.config.flowchart?.nodeSpacing??40,i=n.config.flowchart?.rankSpacing??100,c=n.config.swimlane?.ignoreCrossLaneEdges??!0,a=n.config.swimlane?.optimizeRanksByCrossings??!0,l=n.config.swimlane?.automaticLaneOrdering??!1,m=Ar(n),{ordered:f,coordinates:g}=wr(o,{nodeGap:s,layerGap:i,ignoreCrossLaneEdges:c,optimizeRanksByCrossings:a,automaticLaneOrdering:l,direction:m});hs(o,f,g,{nodeGap:s,layerGap:i});for(let y of n.edges??[])delete y.points;Rr(n,m);for(let y of n.edges??[])if(!y.curve||y.curve==="basis")y.curve="rounded";return Vs(n,m),zs(n),m}e(Nr,"runSwimlaneLayoutCore");async function ei(n,o){let s=o.select("g");Kt(s,n.markers,n.type,n.diagramId),sn(),ln(),on(),Dr(),ds(n);let i=gs(n);n.nodes=i.nodes,n.edges=i.edges;let{groups:c}=await Jo(s,n);Nr(n),await as(n,c)}e(ei,"render");export{ei as render};