agentic-mermaid 0.5.1 → 0.5.3

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 (155) hide show
  1. package/AGENT_NATIVE.md +63 -375
  2. package/CHANGELOG.md +39 -0
  3. package/README.md +87 -50
  4. package/assets/hero.png +0 -0
  5. package/dist/agent-core.d.ts +7 -7
  6. package/dist/agent-core.js +1 -1
  7. package/dist/agent.d.ts +7 -7
  8. package/dist/agent.js +1 -1
  9. package/dist/agentic-mermaid-mcp.js +1 -1
  10. package/dist/am.js +1 -1
  11. package/dist/browser-lazy/chunks/agentic-producer-core-CC6OOLDW.js +1 -0
  12. package/dist/browser-lazy/chunks/architecture-QUFVKYJR.js +13 -0
  13. package/dist/browser-lazy/chunks/block-6J3Q63BO.js +11 -0
  14. package/dist/browser-lazy/chunks/builtin-backends-7SOZZHPF.js +12 -0
  15. package/dist/browser-lazy/chunks/c4-SQVBZAKJ.js +10 -0
  16. package/dist/browser-lazy/chunks/{chunk-MSP3S2VS.js → chunk-2GPK4VFF.js} +1 -1
  17. package/dist/browser-lazy/chunks/chunk-2SH76OTH.js +1 -0
  18. package/dist/browser-lazy/chunks/chunk-2UIA2IME.js +3 -0
  19. package/dist/browser-lazy/chunks/chunk-4LHYF3BS.js +1 -0
  20. package/dist/browser-lazy/chunks/{chunk-HR5TE7TE.js → chunk-5B2Z7575.js} +1 -1
  21. package/dist/browser-lazy/chunks/{chunk-REBVEXI2.js → chunk-5X6MJX3H.js} +1 -1
  22. package/dist/browser-lazy/chunks/chunk-AMJLVPUB.js +4 -0
  23. package/dist/browser-lazy/chunks/chunk-BU5LHXNJ.js +3 -0
  24. package/dist/browser-lazy/chunks/chunk-BY2CPG6B.js +1 -0
  25. package/dist/browser-lazy/chunks/{chunk-HDKHAM2V.js → chunk-CN7WTBWB.js} +1 -1
  26. package/dist/browser-lazy/chunks/chunk-CQE4HQEW.js +1 -0
  27. package/dist/browser-lazy/chunks/{chunk-KXPF5KIU.js → chunk-DF6765YX.js} +3 -3
  28. package/dist/browser-lazy/chunks/chunk-E2WMJZNM.js +1 -0
  29. package/dist/browser-lazy/chunks/chunk-FAIMVOX5.js +6 -0
  30. package/dist/browser-lazy/chunks/chunk-GVOEAY52.js +1 -0
  31. package/dist/browser-lazy/chunks/chunk-HLWUNUCM.js +1 -0
  32. package/dist/browser-lazy/chunks/chunk-ICC7HBJX.js +1 -0
  33. package/dist/browser-lazy/chunks/{chunk-FBL4ONAL.js → chunk-J35HAQQF.js} +15 -15
  34. package/dist/browser-lazy/chunks/chunk-J7FFAFQF.js +1 -0
  35. package/dist/browser-lazy/chunks/chunk-NO7ZIVRU.js +1 -0
  36. package/dist/browser-lazy/chunks/chunk-OZ443IVJ.js +16 -0
  37. package/dist/browser-lazy/chunks/{chunk-2J5K6NIP.js → chunk-PQGPS2YV.js} +1 -1
  38. package/dist/browser-lazy/chunks/{chunk-SBXYR7Z3.js → chunk-QA6GJQ4X.js} +1 -1
  39. package/dist/browser-lazy/chunks/chunk-RIVTHZAQ.js +1 -0
  40. package/dist/browser-lazy/chunks/chunk-SZELX2EJ.js +1 -0
  41. package/dist/browser-lazy/chunks/chunk-TYZOZXUJ.js +22 -0
  42. package/dist/browser-lazy/chunks/{chunk-E7UIB4SZ.js → chunk-UL6NDWLL.js} +1 -1
  43. package/dist/browser-lazy/chunks/chunk-VQYYGAXP.js +1 -0
  44. package/dist/browser-lazy/chunks/chunk-VWVZGQE2.js +1 -0
  45. package/dist/browser-lazy/chunks/{chunk-GMTB5UTY.js → chunk-X2UYKWKM.js} +3 -3
  46. package/dist/browser-lazy/chunks/{chunk-LLPBKBIG.js → chunk-YCEICNM6.js} +1 -1
  47. package/dist/browser-lazy/chunks/chunk-Z3FDIVLN.js +20 -0
  48. package/dist/browser-lazy/chunks/class-5QA4SCTS.js +13 -0
  49. package/dist/browser-lazy/chunks/er-7ZSKGN7Y.js +11 -0
  50. package/dist/browser-lazy/chunks/eventmodeling-2BPLHWRN.js +19 -0
  51. package/dist/browser-lazy/chunks/flowchart-NEIMZTB5.js +4 -0
  52. package/dist/browser-lazy/chunks/gantt-RDPIFYAF.js +11 -0
  53. package/dist/browser-lazy/chunks/{gitgraph-W26QIMTY.js → gitgraph-N4Y5RYB7.js} +4 -4
  54. package/dist/browser-lazy/chunks/ishikawa-LD3YBDJN.js +6 -0
  55. package/dist/browser-lazy/chunks/journey-6YQR5DJX.js +16 -0
  56. package/dist/browser-lazy/chunks/kanban-PLMJ7NBW.js +20 -0
  57. package/dist/browser-lazy/chunks/{mindmap-5A3MVHNH.js → mindmap-K2UBFO3Y.js} +6 -6
  58. package/dist/browser-lazy/chunks/{packet-AL6VDOMY.js → packet-CUW4QY6Y.js} +5 -5
  59. package/dist/browser-lazy/chunks/pie-7F7UUCG3.js +15 -0
  60. package/dist/browser-lazy/chunks/{quadrant-RJ56XFBR.js → quadrant-TOONO2WC.js} +5 -5
  61. package/dist/browser-lazy/chunks/radar-J6JVWVAX.js +16 -0
  62. package/dist/browser-lazy/chunks/render-core-BZOM3K7D.js +3 -0
  63. package/dist/browser-lazy/chunks/requirement-CMAKDJPO.js +19 -0
  64. package/dist/browser-lazy/chunks/{sankey-WKTBEZSS.js → sankey-AWXQEP3F.js} +8 -8
  65. package/dist/browser-lazy/chunks/sequence-Q2RJRB4L.js +5 -0
  66. package/dist/browser-lazy/chunks/state-WRBFQEDX.js +4 -0
  67. package/dist/browser-lazy/chunks/{timeline-PRV5PWGP.js → timeline-D2KILFXM.js} +4 -4
  68. package/dist/browser-lazy/chunks/{treemap-BVME3JLI.js → treemap-N3VYX5D4.js} +4 -4
  69. package/dist/browser-lazy/chunks/{xychart-XBI2RNHD.js → xychart-G73OGK66.js} +5 -5
  70. package/dist/browser-lazy/chunks/{zenuml-GQKPRQFJ.js → zenuml-H4BXNYXR.js} +8 -8
  71. package/dist/browser-lazy/index.d.ts +10 -0
  72. package/dist/browser-lazy/index.js +1 -1
  73. package/dist/browser.global.js +539 -539
  74. package/dist/chunk-7CRDX2QR.js +2 -0
  75. package/dist/{chunk-AVS4T4NO.js → chunk-DQDKA5ND.js} +2 -2
  76. package/dist/chunk-EHCMJUMD.js +52 -0
  77. package/dist/{chunk-AWZBTOV6.js → chunk-GVCHLSHH.js} +2 -2
  78. package/dist/{chunk-6JBQYHWB.js → chunk-H3NCS2XZ.js} +2 -2
  79. package/dist/{chunk-ORYXYGDV.js → chunk-JZOJ4YGS.js} +2 -2
  80. package/dist/{chunk-AIWXP4OF.js → chunk-NKNFOREZ.js} +2 -2
  81. package/dist/{chunk-PNL435CH.js → chunk-OMY6NRQD.js} +17 -17
  82. package/dist/{chunk-YISEN5SO.js → chunk-UA234O4M.js} +2 -2
  83. package/dist/{cli-BOEN5YAF.js → cli-YGGTJZH7.js} +2 -2
  84. package/dist/{index-Cr3xjRw9.d.ts → index-EeXqJXr5.d.ts} +3 -3
  85. package/dist/index.d.ts +4 -4
  86. package/dist/index.js +1 -1
  87. package/dist/{mcp-cli-NM3P4VPC.js → mcp-cli-63DYXTVD.js} +2 -2
  88. package/dist/{paint-certification-C33LRvWT.d.ts → paint-certification-6rwQjIv_.d.ts} +22 -2
  89. package/dist/{server-FY5Z7F32.js → server-5NEOHOFS.js} +2 -2
  90. package/dist/{svg-styles-C_v2tnxG.d.ts → svg-styles-BdnoM7AT.d.ts} +1 -1
  91. package/dist/svg-styles.d.ts +1 -1
  92. package/dist/svg-styles.js +1 -1
  93. package/dist/svg.d.ts +4 -4
  94. package/dist/svg.js +1 -1
  95. package/dist/{types-DxOTIgwg.d.ts → types-BcS52Mjt.d.ts} +11 -1
  96. package/dist/zenuml/chunks/{appearance-FTQ2722O.js → appearance-UOQ5KA6O.js} +1 -1
  97. package/dist/zenuml/chunks/{builtin-backends-QLY75JCL.js → builtin-backends-KDKE7YHO.js} +3 -3
  98. package/dist/zenuml/chunks/chunk-42DXZ5C6.js +4 -0
  99. package/dist/zenuml/chunks/{chunk-GDLMM3YO.js → chunk-7TVYPTDW.js} +1 -1
  100. package/dist/zenuml/chunks/{chunk-6OONHTSD.js → chunk-OXQWRSBM.js} +10 -10
  101. package/dist/zenuml/chunks/{chunk-LYIRUTCM.js → chunk-QWX77U7G.js} +1 -1
  102. package/dist/zenuml/chunks/{chunk-4VRUBLG4.js → chunk-RLJEI7YN.js} +10 -10
  103. package/dist/zenuml/chunks/{chunk-YFCDP4ZS.js → chunk-RZ6XK5CD.js} +1 -1
  104. package/dist/zenuml/chunks/{render-core-DNCYYOIB.js → render-core-V5RQ737O.js} +3 -3
  105. package/dist/zenuml/chunks/{zenuml-URQ4HIMD.js → zenuml-EA2ZFRUX.js} +9 -9
  106. package/dist/zenuml.d.ts +2 -2
  107. package/dist/zenuml.js +1 -1
  108. package/docs/MCP-DIRECTORY-LISTINGS.md +1 -1
  109. package/docs/README.md +59 -110
  110. package/docs/api.md +3 -1
  111. package/docs/config.md +37 -0
  112. package/docs/getting-started.md +27 -44
  113. package/examples/styles/readme-hero.md +25 -0
  114. package/examples/styles/readme-hero.mmd +13 -0
  115. package/examples/styles/readme-hero.style.json +7 -0
  116. package/package.json +1 -1
  117. package/server.json +2 -2
  118. package/dist/browser-lazy/chunks/agentic-producer-core-MGU4FD6J.js +0 -1
  119. package/dist/browser-lazy/chunks/architecture-KZTC3672.js +0 -13
  120. package/dist/browser-lazy/chunks/block-J5PD6HQM.js +0 -11
  121. package/dist/browser-lazy/chunks/builtin-backends-GSGJPT5A.js +0 -12
  122. package/dist/browser-lazy/chunks/c4-VNQSIA5M.js +0 -10
  123. package/dist/browser-lazy/chunks/chunk-4C2BVM5Y.js +0 -1
  124. package/dist/browser-lazy/chunks/chunk-5GE2SFLQ.js +0 -4
  125. package/dist/browser-lazy/chunks/chunk-6YGQR6R4.js +0 -16
  126. package/dist/browser-lazy/chunks/chunk-7AHX3HH7.js +0 -1
  127. package/dist/browser-lazy/chunks/chunk-B5PDJUJG.js +0 -3
  128. package/dist/browser-lazy/chunks/chunk-CXQWSLJV.js +0 -1
  129. package/dist/browser-lazy/chunks/chunk-DWDYWUAS.js +0 -1
  130. package/dist/browser-lazy/chunks/chunk-EUBVLDYV.js +0 -29
  131. package/dist/browser-lazy/chunks/chunk-NQF75XGM.js +0 -3
  132. package/dist/browser-lazy/chunks/chunk-P7DO3MRP.js +0 -13
  133. package/dist/browser-lazy/chunks/chunk-QQ2U2KAY.js +0 -1
  134. package/dist/browser-lazy/chunks/chunk-SJYDRC6G.js +0 -1
  135. package/dist/browser-lazy/chunks/chunk-UUTB6MDK.js +0 -1
  136. package/dist/browser-lazy/chunks/chunk-WEREIH5P.js +0 -1
  137. package/dist/browser-lazy/chunks/chunk-WHNTP27R.js +0 -6
  138. package/dist/browser-lazy/chunks/chunk-YXGB25MZ.js +0 -1
  139. package/dist/browser-lazy/chunks/class-FNDNJGYH.js +0 -13
  140. package/dist/browser-lazy/chunks/er-P263BDFG.js +0 -11
  141. package/dist/browser-lazy/chunks/eventmodeling-XX3VCGSC.js +0 -19
  142. package/dist/browser-lazy/chunks/flowchart-GTLWJA3P.js +0 -4
  143. package/dist/browser-lazy/chunks/gantt-SRIHFAIC.js +0 -11
  144. package/dist/browser-lazy/chunks/ishikawa-NTHJ7BUO.js +0 -6
  145. package/dist/browser-lazy/chunks/journey-3T62IEHN.js +0 -16
  146. package/dist/browser-lazy/chunks/kanban-U6DQ7LWQ.js +0 -20
  147. package/dist/browser-lazy/chunks/pie-4QYMTQ7W.js +0 -15
  148. package/dist/browser-lazy/chunks/radar-L5B4CNEL.js +0 -16
  149. package/dist/browser-lazy/chunks/render-core-CIGKBI2T.js +0 -3
  150. package/dist/browser-lazy/chunks/requirement-5QVLRI6Z.js +0 -19
  151. package/dist/browser-lazy/chunks/sequence-G6DQHPR7.js +0 -5
  152. package/dist/browser-lazy/chunks/state-6DEA5BXE.js +0 -4
  153. package/dist/chunk-XCEEF3NJ.js +0 -2
  154. package/dist/chunk-YQKNJNU4.js +0 -52
  155. package/dist/zenuml/chunks/chunk-7QDAZ2HL.js +0 -4
@@ -0,0 +1 @@
1
+ import{a as e,c as t}from"./chunk-NMQQMRIR.js";import{a as i,b as r,c as n,e as o,f as a}from"./chunk-ICC7HBJX.js";import{$ as s,A as l,B as d,C as h,D as g,E as u,F as f,G as c,H as p,I as y,J as m,K as x,L as b,M as w,O as M,P as S,Q as v,R as k,S as E,T as N,U as P,V as C,W as I,X as L,Y as R,Z as O,_ as $,a as z,aa as A,b as B,ba as F,ca as T,da as _,ea as H,f as D,fa as W,ga as j,h as X,ha as V,i as U,ia as G,j as Y,ja as q,k as K,ka as Q,l as Z,la as J,ma as ee,na as et,oa as ei,p as er,pa as en,q as eo,qa as ea,r as es,ra as el,s as ed,sa as eh,t as eg,ta as eu,u as ef,ua as ec,v as ep,va as ey,w as em,wa as ex,x as eb,xa as ew,y as eM,ya as eS,z as ev}from"./chunk-4LHYF3BS.js";import{b as ek}from"./chunk-CQE4HQEW.js";import{a as eE,b as eN,c as eP,d as eC,h as eI}from"./chunk-SZELX2EJ.js";import{A as eL,B as eR,k as eO,l as e$,m as ez,n as eA,o as eB,p as eF,r as eT,s as e_,t as eH,u as eD,v as eW,w as ej,x as eX,y as eV,z as eU}from"./chunk-HLWUNUCM.js";import{L as eG,P as eY,ja as eq,ka as eK,la as eQ}from"./chunk-X2UYKWKM.js";import{c as eZ,d as eJ,e as e0,h as e1,l as e2,m as e5,n as e6}from"./chunk-NO7ZIVRU.js";import{A as e4,C as e8,G as e3,La as e9,Mb as e7,Nb as te,Oa as tt,Ob as ti,Q as tr,R as tn,Sb as to,Ua as ta,Wa as ts,Wb as tl,Yb as td,Z as th,Zb as tg,bb as tu,t as tf,yb as tc}from"./chunk-Z3FDIVLN.js";function tp(e){throw Error(`LAYOUT_HINT_INVALID: ${e}`)}var ty=class extends Error{constructor(e,t,i){super(i),this.pass=e,this.contract=t,this.name="LayoutPassContractError"}pass;contract;code="LAYOUT_PASS_CONTRACT_VIOLATION"},tm=class extends ty{constructor(e,t,i,r,n){super(e,"metric-budget",`Layout pass '${e}' worsened ${t} from ${i} to ${r} (allowance ${n})`),this.metric=t,this.before=i,this.after=r,this.allowance=n,this.name="LayoutMetricBudgetError"}metric;before;after;allowance;code="LAYOUT_METRIC_BUDGET_EXCEEDED"},tx=e=>{let t=[...e.nodes],i=e=>{for(let r of e)t.push(r),i(r.children??[])};return i(e.groups??[]),t},tb=["unreadableTitles","edgeCrossings","labelConflicts","totalBends","nonCanonicalEndpointRate","peerBarycenterDelta","area"];function tw(e,t){let i=new Map,r=e=>{for(let t of e)i.set(t.id,t),r(t.children)};r(e.subgraphs);let n=t=>{for(let r of t)r.nodeIds=i.get(r.id).nodeIds.filter(t=>e.nodes.has(t)&&!i.has(t)),n(r.children)};n(t.groups)}function tM(e,t){let i=[];if(![e.width,e.height].every(Number.isFinite)||e.width<0||e.height<0)return["non-finite or negative canvas"];let r=(t,r,n,o,a)=>{![r,n,o,a].every(Number.isFinite)||o<0||a<0?i.push(`${t}: non-finite or negative geometry`):(r<-.5||n<-.5||r+o>e.width+.5||n+a>e.height+.5)&&i.push(`${t}: outside canvas`)};for(let t of e.nodes)r(`node ${t.id}`,t.x,t.y,t.width,t.height);let n=e=>{r(`group ${e.id}`,e.x,e.y,e.width,e.height),e.children.forEach(n)};for(let o of(e.groups.forEach(n),e.edges)){for(let e of("invisible"!==o.style&&o.points.length<2&&i.push(`edge ${o.source}->${o.target}: missing route`),!o.label||o.labelPosition&&o.labelBlock||i.push(`label ${o.source}->${o.target}: missing retained geometry`),o.points))r(`edge ${o.source}->${o.target}`,e.x,e.y,0,0);if(void 0!==o.label&&o.labelPosition&&o.labelBlock){let e=eI(o,t);e&&r(`label ${o.source}->${o.target}`,e.x,e.y,e.w,e.h)}}for(let t of e.notes??[])r(`note ${t.id}`,t.x,t.y,t.width,t.height);if(e.title?.block){let t=e.title,i=t.block;r("diagram title",t.x-i.width/2,t.y-i.height/2,i.width,i.height)}return i}function tS(e,t){let i,r,n,o=tM(e,t);return o.length?o:(i=[],r=(e,t,i,r)=>{let n=0,o=1;for(let[a,s,l,d]of[[e.x,t.x-e.x,i.x,i.x+i.width],[e.y,t.y-e.y,i.y,i.y+r]]){if(0===s){if(a<=l||a>=d)return!1;continue}let e=(l-a)/s,t=(d-a)/s;if((n=Math.max(n,Math.min(e,t)))>=(o=Math.min(o,Math.max(e,t))))return!1}return n<o},n=o=>{if(!o.concurrencyRegion){let n=o.labelBlock??eN(e8(o.label,o.labelContent),t,"group"),a=o.headerHeight??t.groupHeaderFontSize+16+n.height-n.lineHeight;if(!Number.isFinite(a)||a<0)i.push(`group-header ${o.id}: invalid retained height`);else if(a>0&&o.width>0){for(let t of e.edges)if("invisible"!==t.style){for(let e=1;e<t.points.length;e++)if(r(t.points[e-1],t.points[e],o,a)){i.push(`group-header ${o.id}: edge ${t.source}->${t.target} segment ${e} enters reserved band`);break}}}}o.children.forEach(n)},e.groups.forEach(n),i)}function tv(e,t,i,r=!1){return tk(e,t,i,r)}function tk(e,t,i,r=!1,n="final"){try{var o;let a=i.produce(),s=function(e,t,i){let r=[],n=(e,t,n,o)=>{if(!n)return;let a=e3(t,"formatted","node"===o?i.nodeTextTransform:"edge"===o?i.edgeTextTransform:i.groupTextTransform),s=n.prepared,l=s.lines.length===a.lines.length&&s.lines.every((e,t)=>e.length===a.lines[t].length&&e.every((e,i)=>{let r=a.lines[t][i];return e.text===r.text&&e.bold===r.bold&&e.italic===r.italic&&e.underline===r.underline&&e.strikethrough===r.strikethrough&&e.sourceStart===r.sourceStart&&e.sourceEnd===r.sourceEnd&&e.clusters?.length===r.clusters?.length&&(e.clusters?.every((e,t)=>{let i=r.clusters[t];return e.text===i.text&&e.sourceStart===i.sourceStart&&e.sourceEnd===i.sourceEnd})??!0)}));(s.source!==a.source||s.display!==a.display||s.transform!==a.transform||s.lineStarts.length!==a.lineStarts.length||s.lineStarts.some((e,t)=>e!==a.lineStarts[t])||!l)&&r.push(`${e}: changed retained prepared text`)},o=new Map,a=new Map,s=new Map,l=new Map,d=(e,t="")=>{for(let i of e)o.set(i.id,t),s.set(i.id,i),d(i.children,i.id)},h=(e,t="")=>{for(let i of e)a.has(i.id)&&r.push(`group ${i.id}: duplicate identity`),a.set(i.id,t),l.set(i.id,i),h(i.children,i.id)};for(let[i,n]of(d(e.subgraphs),h(t.groups),o))a.get(i)!==n&&r.push(`group ${i}: missing or changed parent`);for(let e of a.keys())o.has(e)||r.push(`group ${e}: unexpected identity`);let g=new Set,u=new Map(t.nodes.map(e=>[e.id,e]));for(let i of t.nodes)if(g.has(i.id)&&r.push(`node ${i.id}: duplicate identity`),g.add(i.id),e.nodes.has(i.id))if(i.label!==e.nodes.get(i.id).label)r.push(`node ${i.id}: changed label`);else{let t=e.nodes.get(i.id);n(`node ${i.id}`,e8(t.label,t.labelContent),i.labelBlock,"node")}else r.push(`node ${i.id}: unexpected identity`);for(let t of e.nodes.keys())g.has(t)||a.has(t)||r.push(`node ${t}: missing identity`);for(let[e,t]of s){let i=l.get(e);if(!i)continue;i.label!==t.label&&r.push(`group ${e}: changed label`),n(`group ${e}`,e8(t.label,t.labelContent),i.labelBlock,"group");let a=l.get(o.get(e)??"");for(let n of(a&&(i.x<a.x-.5||i.y<a.y-.5||i.x+i.width>a.x+a.width+.5||i.y+i.height>a.y+a.height+.5)&&r.push(`group ${e}: outside authored parent ${a.id}`),t.nodeIds)){if(s.has(n))continue;let t=u.get(n);t&&(t.x<i.x-.5||t.y<i.y-.5||t.x+t.width>i.x+i.width+.5||t.y+t.height>i.y+i.height+.5)&&r.push(`member ${n}: outside authored group ${e}`)}}let f=new Set;for(let[i,o]of t.edges.entries()){let t=o.edgeIndex??i,a=e.edges[t];if(f.has(t)&&r.push(`edge ${t}: duplicate identity`),f.add(t),!a){r.push(`edge ${t}: unexpected identity`);continue}void 0!==a.label&&n(`edge ${t}`,e8(a.label,a.labelContent),o.labelBlock,"edge"),(o.source!==a.source||o.target!==a.target||(o.id??"")!==(a.id??"")||(o.label??"")!==(a.label??"")||o.style!==a.style||o.hasArrowStart!==a.hasArrowStart||o.hasArrowEnd!==a.hasArrowEnd||(o.startMarker??"arrow")!==(a.startMarker??"arrow")||(o.endMarker??"arrow")!==(a.endMarker??"arrow"))&&r.push(`edge ${t}: changed endpoints, identity, label, shaft or markers`)}return e.edges.forEach((e,t)=>{f.has(t)||r.push(`edge ${t}: missing identity`)}),r}(e,a,t);if(r&&s.length)throw TypeError(`Owned layout changed authored meaning: ${s.join("; ")}`);let l=[...s,..."placement"===n?tM(a,t):tS(a,t)],d=0===l.length?H(e,a,t):void 0;d&&l.push(...j(d).map(e=>`${e.metric}: ${e.detail}`));let h=0===l.length&&(i.preferNext?.(a)??!1);return{attempt:{strategy:i.strategy,violations:l},...0===l.length&&d?{certified:{positioned:a,strategy:i.strategy,score:(o=d.metrics,{unreadableTitles:+!!h,labelConflicts:o.labelConflicts,edgeCrossings:o.edgeCrossings,totalBends:o.totalBends,nonCanonicalEndpointRate:1-o.portEndpointRate,peerBarycenterDelta:Math.round(1e3*o.peerBarycenterDelta)/1e3,area:a.width*a.height})}}:{}}}catch(e){if(r||e instanceof ty||e instanceof eG||e instanceof ti)throw e;return{attempt:{strategy:i.strategy,violations:[e instanceof Error?e.message:String(e)]}}}}function tE(e,t){for(let i of tb){if(t.score[i]<e.score[i])return{selected:t,reason:i};if(t.score[i]>e.score[i])return{selected:e,reason:i}}return{selected:e,reason:"candidate-order"}}function tN(e,t,i,r,n="final"){let o=[],a=i.slice(0,4),s=r?[r,...a]:a,l,d,h=!1,g=[],u=(e,t)=>({selected:e,reason:t,compared:g,attempts:o.length});for(let[i,r]of s.entries()){if(l&&"routing"===d&&!1===r.qualityAlternative)continue;h&&(tu("layout-candidate","candidate-rejected",o.length+1),h=!1);let a=tk(e,t,r,!1,n);o.push(a.attempt);let f=a.certified;if(f){if(g.push({strategy:f.strategy,score:f.score}),l){let e=tE(l,f);return u(e.selected,e.reason)}let t=s.slice(i+1);if(f.score.unreadableTitles&&t.length>0){l=f,d="readability";continue}if(0===f.score.edgeCrossings&&0===f.score.labelConflicts)return u(f,"first-certified");if(!ef(e))return u(f,"work-budget");if(!t.some(e=>!1!==e.qualityAlternative))return u(f,"no-alternative");l=f,d="routing";continue}if(l)return u(l,"alternative-invalid");h=!0}if(l)return u(l,"no-alternative");throw new te(o)}function tP(e,t){let{selected:i,reason:r,compared:n,attempts:o}=t;return tw(e,i.positioned),i.positioned.certification={status:"passed",strategy:i.strategy,attempts:o,hardViolations:0,preference:{selectedScore:i.score,reason:r,compared:n}},i.positioned}function tC(e,t,i){let r=e.labelBlock??eE(e8(e.label,e.labelContent),i);return{x:t.x-(r.width+16)/2,y:t.y-(r.height+16)/2,width:r.width+16,height:r.height+16}}function tI(e){let t=[e[0],e[e.length-1]],i=-1;for(let r=1;r<e.length;r++){let n=e[r-1],o=e[r],a=Math.hypot(o.x-n.x,o.y-n.y);a>i&&(i=a,t=[n,o])}return{x:(t[0].x+t[1].x)/2,y:(t[0].y+t[1].y)/2}}function tL(e){return Math.max(8,.75*e.edgeLabelFontSize)}function tR(e){return Math.max(12,e.edgeLabelFontSize)}function tO(e){let t=(e.lineWidth??1)*2;return Math.max(18,e.edgeLabelFontSize+eJ.width+2*t)}function t$(e){return tO(e)+(3*e0.dash+2*e0.gap)}function tz(e,t,i){return Math.abs(i.x-t.x)>=Math.abs(i.y-t.y)?e.width/2:e.height/2}function tA(e,t,i,r,n,o){let a,s,l=(a=o.lineWidth??1,s="thick"===e.style?2*a:a,Math.max(18,o.edgeLabelFontSize+eJ.width+2*s));if(e.hasArrowStart&&1===i){let e=t[0],i=tz(n,e,t[1]);if(Math.hypot(r.x-e.x,r.y-e.y)<i+l)return!1}if(e.hasArrowEnd&&i===t.length-1){let e=t[t.length-1],i=tz(n,t[t.length-2],e);if(Math.hypot(r.x-e.x,r.y-e.y)<i+l)return!1}return!0}function tB(e,t,i,r,n,o){if(!e.label)return[];let a=eA(t);if(0===a)return[];let s=a/2,l=[],d=[.5,.45,.55,.4,.6,.35,.65,.3,.7,.25,.75,.2,.8,1/6,5/6],h=0;for(let a=1;a<t.length;a++){var g;let u=t[a-1],f=t[a],c=Math.hypot(f.x-u.x,f.y-u.y);if(0===c)continue;let p=eF(r).isHorizontal?.01>Math.abs(u.y-f.y):.01>Math.abs(u.x-f.x),y=e.hasArrowStart&&1===a||e.hasArrowEnd&&a===t.length-1,m=tC(e,{x:0,y:0},n),x=(g=a,{start:e.hasArrowStart&&1===g?tO(n):tR(n),end:e.hasArrowEnd&&g===t.length-1?t$(n):tR(n)}),b=[...d,...function(e,t,i,r){let n=Math.hypot(i.x-t.x,i.y-t.y);if(0===n)return[];let o=tz(e,t,i),a=(o+r.start)/n,s=1-(o+r.end)/n;return a>s?[]:[(a+s)/2]}(m,u,f,x)].filter((e,t,i)=>e>=0&&e<=1&&i.findIndex(t=>.001>Math.abs(t-e))===t),w=.01>Math.abs(u.x-f.x),M=Math.min(m.height/2+3,(w?m.width:m.height)/2-1),S=o?[0,M/4,-M/4,M/2,-M/2,M,-M]:[0];for(let r=0;r<b.length;r++){let d=b[r];for(let g of S){let m={x:u.x+(f.x-u.x)*d+(w?g:0),y:u.y+(f.y-u.y)*d+(w?0:g)},b=tC(e,m,n);if(i.some(e=>eX(b,e,2))||!tA(e,t,a,m,b,n))continue;let M=function(e,t,i,r,n){let o=tz(e,i,r);return Math.hypot(t.x-i.x,t.y-i.y)>=o+n.start&&Math.hypot(t.x-r.x,t.y-r.y)>=o+n.end}(b,m,u,f,x),S=w?b.y>=Math.min(u.y,f.y)&&b.y+b.height<=Math.max(u.y,f.y):b.x>=Math.min(u.x,f.x)&&b.x+b.width<=Math.max(u.x,f.x);(!o||M&&S&&o(e,m))&&l.push({point:m,box:b,order:r,rank:0,pathDistance:h+c*d,routeMidpointDistance:Math.abs(h+c*d-s),segmentMidpointDistance:Math.abs(c*(d-.5)),straightRunPenalty:p&&M?0:p?2:10,terminalSegmentPenalty:+!!y})}}h+=c}return l.sort((e,t)=>e.straightRunPenalty-t.straightRunPenalty||e.terminalSegmentPenalty-t.terminalSegmentPenalty||e.segmentMidpointDistance-t.segmentMidpointDistance||e.routeMidpointDistance-t.routeMidpointDistance||e.order-t.order||e.pathDistance-t.pathDistance),l.map((e,t)=>({...e,rank:t}))}function tF(e,t,i,r,n){return tB(e,t,i,r,n)[0]?.point??eB(t)}function tT(e,t){let i=0,r=[];for(let e=1;e<t.length;e++){let n=Math.hypot(t[e].x-t[e-1].x,t[e].y-t[e-1].y);r.push(n),i+=n}let n=1/0,o=0,a=0;for(let i=1;i<t.length;i++){let s=t[i-1],l=t[i],d=l.x-s.x,h=l.y-s.y,g=d*d+h*h,u=g?((e.x-s.x)*d+(e.y-s.y)*h)/g:0;u=Math.max(0,Math.min(1,u));let f=s.x+u*d,c=s.y+u*h,p=Math.hypot(e.x-f,e.y-c);p<n&&(n=p,o=a+u*r[i-1]),a+=r[i-1]}return i?o/i:.5}function t_(e,t,i,r,n=!1,o){let a=e.filter(({edge:e})=>e.label);if(0===a.length)return!0;if(1===a.length){let e=a[0],n=tB(e.edge,e.points,t,i,r,o);if(o&&0===n.length)return!1;e.edge.labelPosition=n[0]?.point??eB(e.points)}else{let e=a.map(({edge:e,points:n})=>tB(e,n,t,i,r,o));if(e.some(e=>0===e.length)){if(o)return!1;for(let{edge:e,points:n}of a)e.labelPosition=tF(e,n,t,i,r)}else{let n=tL(r),s,l=1/0,d=[],h=t=>{if(t===e.length){let e,t,r,n,o,a,h,g=(e=eF(i),r=Math.max(...t=d.map(t=>t.point[e.main]))-Math.min(...t),n=d.reduce((e,t)=>e+t.straightRunPenalty,0),o=d.reduce((e,t)=>e+t.terminalSegmentPenalty,0),a=d.reduce((e,t)=>e+t.segmentMidpointDistance,0),h=d.reduce((e,t)=>e+t.routeMidpointDistance,0),1e4*n+100*r+1e3*o+4*a+.25*d.reduce((e,t)=>e+t.rank,0)+.1*h);g<l&&(l=g,s=d.slice());return}for(let i of e[t])d.some(e=>eX(i.box,e.box,n))||(d.push(i),h(t+1),d.pop())};if(h(0),s)for(let e=0;e<a.length;e++)a[e].edge.labelPosition=s[e].point;else{if(o)return!1;for(let{edge:e,points:n}of a)e.labelPosition=tF(e,n,t,i,r)}}}if(!n)return!0;let s=[],l=tL(r);for(let{edge:e}of a)e.labelPosition&&s.push(tC(e,e.labelPosition,r));for(let e=0;e<a.length;e++){let{edge:n,points:o}=a[e],d=n.labelPosition;(function(e,t,i,r,n,o=[],a=0){if(!e.label||!e.labelPosition)return;let s=function(e,t){let i=eF(t),r=e.map(e=>e[i.main]),n=(Math.min(...r)+Math.max(...r))/2,o=null;for(let t=1;t<e.length;t++){let r=e[t-1],a=e[t],s=Math.min(r[i.main],a[i.main]),l=Math.max(r[i.main],a[i.main]);if(n<s-1e-6||n>l+1e-6)continue;let d=a[i.main]-r[i.main];if(1e-6>=Math.abs(d))continue;let h=(n-r[i.main])/d,g={[i.main]:n,[i.cross]:r[i.cross]+h*(a[i.cross]-r[i.cross])};if(.01>Math.abs(r[i.cross]-a[i.cross]))return g;o??=g}return o}(t,r);if(!s)return;let l=Math.abs(tT(e.labelPosition,t)-.5);if(Math.abs(tT(s,t)-.5)>=l-1e-6)return;let d=tC(e,s,n);if(i.some(e=>eX(d,e,2))||o.some(e=>eX(d,e,a)))return;let h=eF(r);for(let i=1;i<t.length;i++){let r=t[i-1],o=t[i],a=Math.min(r[h.main],o[h.main]),l=Math.max(r[h.main],o[h.main]);if(!(1e-6>=Math.abs(o[h.main]-r[h.main]))&&!(s[h.main]<a-1e-6||s[h.main]>l+1e-6)){if(!tA(e,t,i,s,d,n))return;break}}e.labelPosition=s})(n,o,t,i,r,s.filter((t,i)=>i!==e),l),n.labelPosition&&n.labelPosition!==d&&(s[e]=tC(n,n.labelPosition,r))}return!0}function tH(e,t,i,r){let n=new Map;if(eU("APL_NO_CORANK_FANIN"))return n;let o=e$(r.edges),a=new Map(e.map(e=>[e.id,e])),s=e=>!!e&&em.has(e.shape)&&!Q(e,i),l=e=>!!e&&"rectangle"===e.shape&&!Q(e,i),d=new Map;for(let e of t)e.source!==e.target&&V(e,a,r.direction)&&(d.has(e.target)||d.set(e.target,[]),d.get(e.target).push(e));for(let[e,t]of d){if(t.length<2||t.length>6||!s(a.get(e)))continue;let i=t.filter(e=>!!e.label);if(0===i.length||i.length===t.length)continue;let d=t[0].style;if(t.some(e=>e.style!==d))continue;let h=t.map(e=>a.get(e.source)).filter(e=>!!e);if(h.length!==t.length||new Set(h.map(e=>e.id)).size!==h.length||!h.every(l)||!G(h,r.direction,28))continue;let g=!0;for(let e=0;e<h.length&&g;e++)for(let t=0;t<h.length;t++)if(e!==t&&o(h[e].id,h[t].id)){g=!1;break}g&&n.set(e,t)}return n}function tD(e,t,i,r,n,o){let a=4e6,s=y(t,i,r,o,e=>(a-=e)>=0);if(!s)return!1;let l=P({nodes:t,edges:i,groups:r},o),d=new Set(e.map(({edge:e})=>e)),h=t.find(t=>t.id===e[0].edge.source),g=J(r).filter(e=>ee(h,e)),u=(e,t)=>{let i=eI({...e,labelPosition:t},o),r=i&&l.clearPaintRect(i,eC(e,o.lineWidth??1),e);return!!r&&g.every(e=>r.x>e.x&&r.y>e.y&&r.x+r.w<e.x+e.width&&r.y+r.h<e.y+e.height)&&s.clear(e,t,new Map,void 0,d)},f=()=>e.every(({edge:e})=>!e.label||!!e.labelPosition&&s.clear(e,e.labelPosition,new Map));return e.every(({edge:e,points:t})=>{if(!e.label)return!0;if(!e.labelPosition||!u(e,e.labelPosition))return!1;let i=eI(e,o);return t.some((e,r)=>{if(!r)return!1;let n=t[r-1];return n.x===e.x&&n.x>=i.x&&n.x<=i.x+i.w&&i.y>=Math.min(n.y,e.y)&&i.y+i.h<=Math.max(n.y,e.y)||n.y===e.y&&n.y>=i.y&&n.y<=i.y+i.h&&i.x>=Math.min(n.x,e.x)&&i.x+i.w<=Math.max(n.x,e.x)})})&&f()||t_(e,t,n,o,!1,u)&&f()}function tW(e,t){return J(t).filter(t=>ee(e,t)).map(e=>e.id).join("\0")}function tj(e,t,i,r,n,o,a){if(t.length<2||t.length>3||"rectangle"!==e.shape&&"diamond"!==e.shape)return;let s="diamond"!==e.shape&&Q(e,n),l=[...t].sort((e,t)=>eW(r.get(e.target),o)-eW(r.get(t.target),o)),d=l.map(e=>r.get(e.target)).filter(Boolean);if(d.length!==l.length)return;let h=s?tW(e,n):"";if(d.every(t=>"rectangle"===t.shape&&(s?tW(t,n)===h:"diamond"===e.shape||!Q(t,n)))&&G(d,o,40)&&d.every(t=>i.every(i=>i.source!==t.id&&(i.target!==t.id||i.source===e.id)))){for(let e=0;e<d.length;e++)for(let t=0;t<d.length;t++)if(e!==t&&a(d[e].id,d[t].id))return;return l}}function tX(e,t,i){if(e.length>ed||t.length>eg)return!1;let r=ed-e.length,n=e=>e.every(e=>--r>=0&&n(e.children));return n(i)}var tV=(e,t)=>e.points.length!==t.points.length||e.points.some((e,i)=>e.x!==t.points[i].x||e.y!==t.points[i].y);function tU(){return{remaining:ed*eg}}function tG(e,t,i,r,n,o,a=tU()){let s=e.map((e,t)=>e.x!==i[t].x||e.y!==i[t].y),l=t.map((e,t)=>tV(e,r[t]));if(!s.some(Boolean)&&!l.some(Boolean))return!0;let d=()=>--a.remaining>=0,h=new Map,g=e=>(h.has(e)||h.set(e,p(e,o,d)),h.get(e)),y=new Map,m=e=>{if(!y.has(e)){let t=Z(e,{fill:e.inlineStyle?.fill??o.nodeFillColor??"var(--_node-fill)",stroke:e.inlineStyle?.stroke??o.nodeBorderColor??"var(--_node-stroke)",strokeWidth:tn("stroke-width",e.inlineStyle?.["stroke-width"]??String(o.nodeLineWidth??eZ.innerBox))},o.cornerRadius);y.set(e,ts({kind:"shape",id:e.id,role:"node",geometry:u(t.geometry),paint:t.paint,...t.childPaints?{childPaints:t.childPaints}:{}}))}return y.get(e)};try{let o,a,h;for(let t=0;t<e.length;t++){if(!s[t])continue;let i=m(e[t]);if(!f(i))return!1;for(let r=0;r<e.length;r++){if(r===t||s[r]&&r<t)continue;if(!d())return!1;let n=m(e[r]);if(!f(n)||c(i,n))return!1}}for(let n=0;n<e.length;n++){let o=e[n];for(let e=0;e<t.length;e++){let a=t[e];if(!s[n]&&!l[e]||"invisible"===a.style)continue;if(!d()||a.source===o.id&&ev(a,o)>ev(r[e],i[n])||a.target===o.id&&ev(a,void 0,o)>ev(r[e],void 0,i[n]))return!1;let h=g(a);if(!h)return!1;let u=m(o);if(!f(u))return!1;if(a.source!==o.id&&a.target!==o.id){for(let e of h.shafts)if(!d()||c(u,e))return!1}for(let e of h.markers)if(("start"===e.position?a.source:a.target)!==o.id&&(!d()||!f(e.bounds)||c(u,e.bounds)))return!1;if(h.label&&(!d()||c(u,h.label)))return!1}}return o=e.filter((e,t)=>e.x!==i[t].x||e.y!==i[t].y),a=t.filter((e,t)=>"invisible"!==e.style&&tV(e,r[t])),h=e=>{if(!d())return!1;if(!e.concurrencyRegion&&0!==e.width){let t=e.headerHeight??e.height;if(!Number.isFinite(e.width)||e.width<0||!Number.isFinite(t)||t<0)return!1;if(t>0&&e.width>0){let i=e9({x0:e.x,y0:e.y,x1:e.x+e.width,y1:e.y+t},tt(u({kind:"rect",x:e.x,y:e.y,width:e.width,height:t})));if(!f(i))return!1;for(let e of o){if(!d())return!1;let t=m(e);if(!f(t))return!1;let r=e9(t,{x0:e.x,y0:e.y,x1:e.x+e.width,y1:e.y+e.height});if(!f(r)||c(r,i))return!1}for(let e of a){let t=g(e);if(!t)return!1;for(let e of t.shafts)if(!d()||c(e,i))return!1;for(let e of t.markers)if(!d()||!f(e.bounds)||c(e.bounds,i))return!1}}}return e.children.every(h)},n.every(h)}catch{return!1}}function tY(e,t){return{nodes:e.map(e=>({...e})),edges:t.map(e=>({...e,points:e.points.map(e=>({...e})),...e.labelPosition?{labelPosition:{...e.labelPosition}}:{}}))}}function tq(e,t,i,r){e.forEach((e,t)=>{e.x!==i[t].x&&(e.x=i[t].x),e.y!==i[t].y&&(e.y=i[t].y)}),t.forEach((e,t)=>{let i=r[t];tV(i,e)&&(e.points=i.points),(i.labelPosition?.x!==e.labelPosition?.x||i.labelPosition?.y!==e.labelPosition?.y)&&(e.labelPosition=i.labelPosition),i.routeCertificate!==e.routeCertificate&&(e.routeCertificate=i.routeCertificate)})}function tK(e,t,i){for(let r of i)if(r!==e){for(let e=1;e<r.points.length;e++)if(function(e,t,i,r=2){let n=i.x-r,o=i.x+i.w+r,a=i.y-r,s=i.y+i.h+r;if(.01>Math.abs(e.x-t.x)){let i=Math.min(e.y,t.y),r=Math.max(e.y,t.y);return e.x>=n&&e.x<=o&&r>=a&&i<=s}if(.01>Math.abs(e.y-t.y)){let i=Math.min(e.x,t.x),r=Math.max(e.x,t.x);return e.y>=a&&e.y<=s&&r>=n&&i<=o}return!1}(r.points[e-1],r.points[e],t))return!0}return!1}function tQ(e,t){for(let i=1;i<e.length;i++)for(let r=1;r<t.length;r++){let n=e[i-1],o=e[i],a=t[r-1],s=t[r],l=(o.x-n.x)*(s.y-a.y)-(o.y-n.y)*(s.x-a.x);if(1e-9>Math.abs(l))continue;let d=((a.x-n.x)*(s.y-a.y)-(a.y-n.y)*(s.x-a.x))/l,h=((a.x-n.x)*(o.y-n.y)-(a.y-n.y)*(o.x-n.x))/l;if(d>.001&&d<.999&&h>.001&&h<.999)return!0}return!1}function tZ(e,t,i){let r=new Map(t.map(e=>[e.edge,e])),n=new Set,o=e.map((e,t)=>{let i=r.get(e);return i?(n.add(t),{...e,points:i.points,labelPosition:i.label}):e}),{nodes:a,style:s}=i;return $({nodes:a,edges:o},s,n).total<=$({nodes:a,edges:e},s,n).total}function tJ(e,t,i,r){let n=new Map(t.map(e=>[e.edge,e.points])),o=new Set,a=e.map((e,t)=>{let i=n.get(e);return i?(o.add(t),{...e,points:i}):e});for(let t of o){let r=e[t],n=a[t];if(K(r,n.points,a,i,n))return"marker-blocked"}if(r?.labelClearance&&!tZ(e,t,r.labelClearance))return!1;let s=F(a,o)-F(e,o);if(!r?.allowCrossingsForOverlap)return s<=0;let l=T(e,o)-T(a,o);return!(l<0)&&(s<=0||s<=l)}function t0(e,t,i){if(!t)return;let r=i?0:e.length-1,n=i?1:-1,o=e[r];if(!o)return!1;for(let i=r+n;i>=0&&i<e.length;i+=n){let r=e[i];if(r.x!==o.x||r.y!==o.y)return er(t,o,r)}return!1}function t1(e,t,i){let r={...e,points:e.points.filter((t,i)=>0===i||t.x!==e.points[i-1].x||t.y!==e.points[i-1].y).map(e=>({...e}))};return l(r,t,i),t&&(r.points=es(r.points,t,!0)),i&&(r.points=es(r.points,i,!1)),r}function t2(e,t,i,r){if(e.length<2||void 0===i&&void 0===r)return e;let n=e.map(e=>({...e})),o=t?"x":"y";for(let[e,t,a]of[[i,0,1],[r,n.length-1,n.length-2]]){if(void 0===e)continue;let i=n[t],r=n[a];i[o]+=e,r[o]===i[o]-e&&(r[o]+=e)}return n}function t5(e,t,i){let r=[];for(let n of i)e>=n.x&&e<=n.x+n.width&&t>=n.y&&t<=n.y+n.height&&(r.push(n),r.push(...t5(e,t,n.children)));return r}function t6(e,t,i,r,n){let o="LR"===n,a="RL"===n,s=o||a,l=new Set(t5(t,i,r).map(e=>e.id)),d=t5(s?e:t,s?i:e,r).find(e=>!l.has(e.id));return d?o?d.x-12:a?d.x+d.width+12:"BT"===n?d.y+d.height+12:d.y-12:e}function t4(e,t){let i=new Set(e),r=new Map(e.map((e,t)=>[e,t])),n=new Map(e.map(e=>[e,new Set])),o=new Map(e.map(e=>[e,0])),a=(e,t)=>{let i=new Set,r=[e];for(;r.length>0;){let e=r.pop();if(e===t)return!0;if(!i.has(e))for(let t of(i.add(e),n.get(e)??[]))r.push(t)}return!1};for(let e of t){if(e.source===e.target||!i.has(e.source)||!i.has(e.target))continue;let t=e.source,r=e.target,s=n.get(t);s.has(r)||a(r,t)||(s.add(r),o.set(r,(o.get(r)??0)+1))}let s=(e,t)=>(r.get(e)??0)-(r.get(t)??0),l=e.filter(e=>(o.get(e)??0)===0).sort(s),d=e=>{let t=l.length;for(l.push(e);t>0;){let i=t-1>>>1;if(0>=s(l[i],e))break;l[t]=l[i],t=i}l[t]=e},h=[];for(;l.length>0;){let e=l[0],t=l.pop();if(l.length){let e=0;for(;2*e+1<l.length;){let i=2*e+1;if(i+1<l.length&&0>s(l[i+1],l[i])&&i++,0>=s(t,l[i]))break;l[e]=l[i],e=i}l[e]=t}for(let t of(h.push(e),Array.from(n.get(e)??[]).sort(s))){let e=(o.get(t)??0)-1;o.set(t,e),0===e&&d(t)}}if(h.length<e.length){let t=new Set(h);h.push(...e.filter(e=>!t.has(e)).sort(s))}return h}function t8(e,t,i,r,n="TB",o,a){let s=a??eN(t,r,"node");if("state-fork"===i||"state-join"===i){let e=o?.forkWidth??70,t=o?.forkHeight??10;return"LR"===n||"RL"===n?{width:t,height:e}:{width:e,height:t}}if("state-choice"===i)return{width:36,height:36};if("state-history"===i)return{width:32,height:32};let l=s.width+2*r.nodePaddingX,d=s.height+2*r.nodePaddingY;if("service"===i&&(l=Math.max(l+34,120),d=Math.max(d+6,48)),"diamond"===i){let e=Math.max(l,d)+r.diamondExtraPadding;l=e,d=e}if("circle"===i||"doublecircle"===i){let e=Math.ceil(Math.sqrt(l*l+d*d))+8;d=l="doublecircle"===i?e+12:e}return"ellipse"===i&&(l=Math.ceil(l*Math.SQRT2),d=Math.ceil(d*Math.SQRT2)),"hexagon"===i&&(l+=r.nodePaddingX),("trapezoid"===i||"trapezoid-alt"===i||"lean-r"===i||"lean-l"===i)&&(l+=r.nodePaddingX),"asymmetric"===i&&(l+=12),"cylinder"===i&&(d+=14),"state-start"===i||"state-end"===i?{width:28,height:28}:{width:l=Math.max(l,60),height:d=Math.max(d,36)}}function t3(e,t){let i=new Map;if(eU("APL_NO_CORANK_FANIN"))return i;let r=new Map;for(let t=0;t<e.edges.length;t++){let i=e.edges[t];i.source!==i.target&&(r.has(i.target)||r.set(i.target,[]),r.get(i.target).push(t))}for(let[n,o]of r){if(o.length<2)continue;let r=o.filter(t=>!!e.edges[t].label),a=o.filter(t=>!e.edges[t].label);if(0===r.length||0===a.length)continue;let s=e.nodes.get(n)?.shape;if(void 0===s||!em.has(s))continue;let l=t=>e.nodes.get(t)?.shape==="rectangle";if(!o.every(t=>l(e.edges[t].source)))continue;let d=0,h=0;for(let i of r){let r=eN(e8(e.edges[i].label,e.edges[i].labelContent),t,"edge");r.text,d=Math.max(d,r.width+8),h=Math.max(h,r.height+6)}for(let e of a)i.set(e,{width:d,height:h})}return i}function t9(e){return{text:" ",width:e.width,height:e.height,layoutOptions:{"elk.edgeLabels.inline":"true","elk.edgeLabels.placement":"CENTER"}}}function t7(e,t){return t>ep({})&&function(e){let t=new Map,i=new Map;for(let{source:r,target:n}of e){if(r===n)return!0;t.set(r,t.get(r)??0),t.set(n,(t.get(n)??0)+1),i.set(r,[...i.get(r)??[],n])}let r=[...t].filter(([,e])=>0===e).map(([e])=>e),n=0;for(let e=r.pop();void 0!==e;e=r.pop())for(let o of(n++,i.get(e)??[])){let e=t.get(o)-1;t.set(o,e),0===e&&r.push(o)}return n<t.size}(e.edges)?{"elk.spacing.edgeNode":String(t)}:{}}function ie(e,t,i){var r;let n,o,a,s,l,h,g,{hook:u,corridor:f}=function(e,t){let i=ep(e),r=0;for(let[n,o]of t.edges.entries()){if("invisible"===o.style)continue;let a={...o,inlineStyle:eQ(n,t)},s=ep(e,a,"start"),l=ep(e,a,"end");i=Math.max(i,s,l),r=Math.max(r,(o.hasArrowStart?s-(e.edgeBendRadius??0):0)+(o.hasArrowEnd?l-(e.edgeBendRadius??0):0))}return{hook:i,corridor:r}}(i,e);t={...t,layerSpacing:Math.max(t.layerSpacing??eO.layerSpacing,f),markerPortExtents:t.preserveSubgraphChildOrder||t.stateVisual?void 0:function(e,t){let i=new Map;for(let r=0;r<e.edges.length;r++){let n=e.edges[r],o=e.nodes.get(n.target);if(!o||"rectangle"!==o.shape||o.semanticShape||"invisible"===n.style||n.source===n.target)continue;let a=i.get(o.id)??{count:0,span:0,known:!0};a.count++;let s="thick"===n.style?2:1,l=t.lineWidth*s,d=(Number.isFinite(l)&&l>0?X({...n,curve:void 0,points:[{x:0,y:0},{x:100,y:0}],inlineStyle:eQ(r,e)},{...t,lineWidth:Number(tr(l))/s,edgeBendRadius:0}):void 0)?.find(e=>"end"===e.position);!n.hasArrowEnd||d?.bounds&&Object.values(d.bounds).every(Number.isFinite)?d?.bounds&&(a.span=Math.max(a.span,d.bounds.y1-d.bounds.y0)):a.known=!1,i.set(o.id,a)}let r=new Map;for(let[e,t]of i)t.count<2||!t.known||t.span<=0||r.set(e,{count:t.count,span:t.span});return r}(e,i)};let c=new Set,p=new Set;for(let t of e.subgraphs)p.add(t.id),function e(t,i,r){for(let e of t.nodeIds)i.add(e);for(let n of t.children)r.add(n.id),e(n,i,r)}(t,c,p);let y=new Map;for(let t of e.edges)t.source===t.target&&y.set(t.source,(y.get(t.source)??0)+1);let m=Math.max(0,...y.values());m>4&&(t={...t,layerSpacing:Math.max(t.layerSpacing,t.layerSpacing+(m-4)*16)});let x=t.disableCorankFanIn?new Map:t3(e,i),b=function(e){let t=new Map;for(let i of e)!function e(i){for(let e of i.nodeIds)t.set(e,i.id);for(let t of i.children)e(t)}(i);return t}(e.subgraphs),w=function(e){let t=new Map;for(let i of e)!function e(i,r){for(let e of i.nodeIds)t.set(e,r);for(let t of i.children)e(t,r)}(i,i.id);return t}(e.subgraphs),M=function(e){let t=new Map;for(let i of e)!function e(i,r){let n=[...r,i.id];for(let e of i.nodeIds)t.set(e,n);for(let t of i.children)e(t,n)}(i,[]);return t}(e.subgraphs),S=function(e){let t=new Map;for(let i of e)!function e(i,r){for(let n of(t.set(i.id,r),i.children))e(n,i.id)}(i,void 0);return t}(e.subgraphs),v=function(e){let t=new Map;for(let i of e)!function e(i,r){let n=[...r,i.id];for(let r of(t.set(i.id,n),i.children))e(r,n)}(i,[]);return t}(e.subgraphs),k=e=>b.get(e)??S.get(e),E=e=>M.get(e)??v.get(e)?.slice(0,-1)??[],N=il(e,t),P=function(e,t){let i=d(e),r=new Set,n=new Set,o=function(e){let t=new Set,i=(e,r)=>{let n=r||void 0!==e.direction;if(n)for(let i of e.nodeIds)t.add(i);for(let t of e.children)i(t,n)};for(let t of e)i(t,!1);return t}(e.subgraphs),a=new Set;for(let t=0;t<e.edges.length;t++){let o=e.edges[t],s=i[t]??"primary-forward";"primary-forward"===s&&o.label&&a.add(`${o.source}\0${o.target}`),"primary-forward"!==s&&(r.add(o.source),r.add(o.target)),"primary-forward"!==s&&"feedback"!==s&&(n.add(o.source),n.add(o.target))}let s=[],l=[],h=e=>e.replace(/[^A-Za-z0-9_\-]/g,"_"),g=(e,t,i)=>{l.push({edgeIndex:e,routeClass:t,reason:i})};for(let l=0;l<e.edges.length;l++){let d=e.edges[l],u=i[l]??"primary-forward";if(d.source===d.target){g(l,u,"self-loop");continue}if(t.has(d.source)||t.has(d.target)){g(l,u,"subgraph-endpoint");continue}if(!e.nodes.has(d.source)||!e.nodes.has(d.target)){g(l,u,"missing-node");continue}if("primary-forward"!==u&&"feedback"!==u){g(l,u,"unsupported-route-class");continue}if("primary-forward"===u&&(r.has(d.source)||r.has(d.target))){g(l,u,"unsafe-non-primary-incident");continue}if("feedback"===u&&d.label){g(l,u,"unsupported-route-class");continue}if("feedback"===u&&a.has(`${d.target}\0${d.source}`)){g(l,u,"labeled-reciprocal-primary");continue}if("feedback"===u&&(!ii(e.nodes.get(d.source))||!ii(e.nodes.get(d.target)))){g(l,u,"unsupported-shape");continue}if(n.has(d.source)||n.has(d.target)){g(l,u,"unsafe-non-primary-incident");continue}if(o.has(d.source)||o.has(d.target)){g(l,u,"direction-override-node");continue}let f=function(e,t){let i=function(e){switch(e){case"RL":return{source:"W",target:"E"};case"BT":return{source:"N",target:"S"};case"TD":case"TB":return{source:"S",target:"N"};default:return{source:"E",target:"W"}}}(e);return"feedback"===t?{source:i.target,target:i.source}:i}(e.direction,u);s.push({nodeId:d.source,portId:`rp_${h(d.source)}_${l}_s`,side:f.source,edgeIndex:l,sourceId:d.source,targetId:d.target,endpoint:"source",slotIndex:0,routeClass:u,labeled:!!d.label,constraint:"FIXED_SIDE"}),s.push({nodeId:d.target,portId:`rp_${h(d.target)}_${l}_t`,side:f.target,edgeIndex:l,sourceId:d.source,targetId:d.target,endpoint:"target",slotIndex:0,routeClass:u,labeled:!!d.label,constraint:"FIXED_SIDE"})}let u=new Map;for(let e of s){let t=u.get(e.nodeId)??[];t.push(e),u.set(e.nodeId,t)}for(let t of u.values()){var f;t.sort((e,t)=>ir(e.side)-ir(t.side)||e.edgeIndex-t.edgeIndex||io(e.endpoint)-io(t.endpoint));let i=new Map;for(let e of t){let t=i.get(e.side)??0;e.slotIndex=t,i.set(e.side,t+1)}let r=(f=e.nodes.get(t[0].nodeId),f?.shape==="rectangle"&&function(e){if(e.length<2||!e.every(e=>"primary-forward"===e.routeClass&&!e.labeled))return!1;let t=e[0].side;if(!e.every(e=>e.side===t))return!1;let i=new Map;for(let t of e){let e=`${t.sourceId}\0${t.targetId}`;i.set(e,(i.get(e)??0)+1)}return!![...i.values()].some(e=>e>=2)&&(!!e.every(e=>"target"===e.endpoint)||!!e.every(e=>"source"===e.endpoint)&&e.every(e=>(i.get(`${e.sourceId}\0${e.targetId}`)??0)>=2))}(t));for(let e of t)r?(e.constraint="FIXED_ORDER",e.orderReason="primary-duplicate-face"):(e.constraint="FIXED_SIDE",e.orderReason=void 0)}let c=new Map;for(let e of s)c.set(it(e.edgeIndex,e.endpoint),e);return{byEndpoint:c,byNode:u,relaxations:l}}(e,p),C=new Map,I=new Map,L,R=t=>{L??=new Set([...e.nodes.keys(),...p,...[...P.byEndpoint.values()].map(e=>e.portId)]);let i=t;for(;L.has(i);)i+="_";return L.add(i),i},O=(e,t,i)=>{let r=R(`${e}_${i}_${t}`),n=C.get(e)??[];return n.push({id:r,direction:i}),C.set(e,n),r},$=(e,t)=>{let r=p.has(e.source)&&E(e.target).includes(e.source),n=p.has(e.target)&&E(e.source).includes(e.target),o=r?v.get(e.source):E(e.source),a=n?v.get(e.target):E(e.target),s=ig(o,a),l=s?o.indexOf(s)+1:0,d=r?O(e.source,t,"in"):P.byEndpoint.get(it(t,"source"))?.portId??e.source,h=n?O(e.target,t,"out"):P.byEndpoint.get(it(t,"target"))?.portId??e.target,g=0,u=(r,n,o,a=!1)=>{let s=a?function(e,t,i,r,n,o){let a={id:`e${e}`,sources:[i],targets:[r]};if(t.label&&!eU("APL_DECOUPLE_LABELS")){let e=eN(e8(t.label,t.labelContent),n,"edge");a.labels=[{text:e.text,width:e.width+8,height:e.height+6,layoutOptions:{"elk.edgeLabels.inline":"true","elk.edgeLabels.placement":"CENTER"}}]}else!t.label&&o?.has(e)&&(a.labels=[t9(o.get(e))]);return a}(t,e,n,o,i,x):{id:`e${t}_internal_${g}`,sources:[n],targets:[o]},l={...s,id:R(s.id),hierarchySegment:{edgeIndex:t,order:g++}},d=I.get(r??null)??[];d.push(l),I.set(r??null,d)};for(let e of o.slice(l).reverse()){let i=O(e,t,"out");u(e,d,i),d=i}let f=a.slice(l).map(e=>({scope:e,port:O(e,t,"in")}));u(s,d,f[0]?.port??h,!0);for(let e=0;e<f.length;e++){let t=f[e];u(t.scope,t.port,f[e+1]?.port??h)}},z=new Map;z.set(null,[]);for(let t=0;t<e.edges.length;t++){let i=e.edges[t],r=k(i.source),n=k(i.target);if(r&&r===n)z.has(r)||z.set(r,[]),z.get(r).push({index:t,edge:i});else if(r||n)if(N)$(i,t);else{let e=ig(E(i.source),E(i.target));e?(z.has(e)||z.set(e,[]),z.get(e).push({index:t,edge:i})):z.get(null).push({index:t,edge:i})}else z.get(null).push({index:t,edge:i})}let A={id:"root",layoutOptions:{"elk.algorithm":"layered","elk.direction":tg(e.direction),"elk.spacing.nodeNode":String(t.nodeSpacing),"elk.layered.spacing.nodeNodeBetweenLayers":String(t.layerSpacing),"elk.spacing.edgeEdge":"12","elk.layered.spacing.edgeEdgeBetweenLayers":"12","elk.layered.spacing.edgeNodeBetweenLayers":String(u),...t7(e,u),"elk.padding":`[top=${t.padding},left=${t.padding},bottom=${t.padding},right=${t.padding}]`,"elk.edgeRouting":"ORTHOGONAL","elk.layered.nodePlacement.bk.fixedAlignment":"BALANCED","elk.contentAlignment":"H_CENTER V_CENTER","elk.layered.thoroughness":String(eO.thoroughness),"elk.layered.highDegreeNodes.treatment":"true","elk.layered.highDegreeNodes.threshold":"8","elk.layered.compaction.postCompaction.strategy":"LEFT_RIGHT_CONSTRAINT_LOCKING","elk.layered.considerModelOrder.strategy":"NODES_AND_EDGES","elk.layered.cycleBreaking.strategy":"MODEL_ORDER","elk.layered.feedbackEdges":"true","elk.layered.crossingMinimization.forceNodeModelOrder":"true","elk.layered.wrapping.strategy":"OFF","elk.hierarchyHandling":N?"SEPARATE":"INCLUDE_CHILDREN"},children:[],edges:[]},B=!t.preserveSubgraphChildOrder,F=new Map(e.subgraphs.map(e=>[e.id,e]));for(let d of(r=!!t.preserveSubgraphChildOrder,n=[],o=new Set,a=e=>{o.has(e)||(o.add(e),n.push(e))},s=()=>{for(let t of e.nodes.keys()){let e=w.get(t);e?a(e):c.has(t)||p.has(t)||a(t)}},l=()=>{for(let t of e.subgraphs)a(t.id)},r?(l(),s()):(s(),l()),t4(n,e.edges.map(e=>({source:w.get(e.source)??e.source,target:w.get(e.target)??e.target}))))){let r=F.get(d);if(r){A.children.push(function e(t,i,r,n,o,a,s,l,d,h,g,u,f="TB"){let c=ih(t,n),p=t.concurrencyRegion?r.stateVisual?.dividerMargin??0:0,y=t.direction??f,m={"elk.algorithm":"layered","elk.padding":`[top=${c+n.groupPaddingY+p},left=${n.groupPaddingX+p},bottom=${n.groupPaddingY+p},right=${n.groupPaddingX+p}]`,"elk.edgeRouting":"ORTHOGONAL","elk.contentAlignment":"H_CENTER V_CENTER","elk.spacing.edgeEdge":"12","elk.layered.spacing.edgeEdgeBetweenLayers":"12","elk.layered.spacing.edgeNodeBetweenLayers":String(o),...t7(i,o),"elk.layered.nodePlacement.bk.fixedAlignment":"BALANCED","elk.layered.spacing.nodeNodeBetweenLayers":String(r.layerSpacing),"elk.spacing.nodeNode":String(r.nodeSpacing)};(t.direction||u)&&(m["elk.direction"]=tg(y));let x=id(t,n);x>0&&u&&(m["elk.nodeSize.constraints"]="MINIMUM_SIZE",m["elk.nodeSize.minimum"]=`(${x}, 0)`);let b={id:t.id,layoutOptions:m,labels:t.label?[{text:t.label}]:void 0,children:[],edges:[],...void 0!==t.headerMinHeight&&0===t.nodeIds.length&&0===t.children.length?{width:Math.max(x,2*n.groupPaddingX),height:c+2*n.groupPaddingY}:{}},w=s.get(t.id)??[];if(w.length>0){let e=c>0,t=eF(i.direction);b.ports=w.map(i=>{let r="in"===i.direction?t.targetSide:t.sourceSide,n="N"===r?"in"===i.direction?"W":"E":r;return{id:i.id,...e&&("N"===r||"BT"===y)?{layoutOptions:{"elk.port.side":ia(n)}}:{}}}),e&&(b.layoutOptions["elk.portConstraints"]="FIXED_SIDE")}for(let e of h?t4(t.nodeIds,i.edges):t.nodeIds){let t=i.nodes.get(e);t&&b.children.push(is(e,t,n,d,y,r.stateVisual,r.nodeSizes?.get(e),r.markerPortExtents?.get(e)))}for(let f of t.children)b.children.push(e(f,i,r,n,o,a,s,l,d,h,g,u,y));for(let{index:e,edge:i}of a.get(t.id)??[]){let t={id:`e${e}`,sources:[d.byEndpoint.get(it(e,"source"))?.portId??i.source],targets:[d.byEndpoint.get(it(e,"target"))?.portId??i.target]};if(i.label&&!eU("APL_DECOUPLE_LABELS")){let e=eN(e8(i.label,i.labelContent),n,"edge");t.labels=[{text:e.text,width:e.width+8,height:e.height+6,layoutOptions:{"elk.edgeLabels.inline":"true","elk.edgeLabels.placement":"CENTER"}}]}else!i.label&&g.has(e)&&(t.labels=[t9(g.get(e))]);b.edges.push(t)}for(let e of l.get(t.id)??[])b.edges.push(e);return b}(r,e,t,i,u,z,C,I,P,B,x,N,e.direction));continue}let n=e.nodes.get(d);!n||c.has(d)||p.has(d)||A.children.push(is(d,n,i,P,e.direction,t.stateVisual,t.nodeSizes?.get(d),t.markerPortExtents?.get(d)))}for(let{index:e,edge:t}of z.get(null)){let r={id:`e${e}`,sources:[P.byEndpoint.get(it(e,"source"))?.portId??t.source],targets:[P.byEndpoint.get(it(e,"target"))?.portId??t.target]};if(t.label&&!eU("APL_DECOUPLE_LABELS")){let e=eN(e8(t.label,t.labelContent),i,"edge");r.labels=[{text:e.text,width:e.width+8,height:e.height+6,layoutOptions:{"elk.edgeLabels.inline":"true","elk.edgeLabels.placement":"CENTER"}}]}else!t.label&&x.has(e)&&(r.labels=[t9(x.get(e))]);A.edges.push(r)}for(let e of I.get(null)??[])A.edges.push(e);return function(e,t,i){if(!i)return;let r=new Map,n=e=>{for(let t of e.children??[])r.set(t.id,{node:t,parent:e}),n(t)};n(e);let o=e=>{let i=r.get(e);return i&&t.nodes.has(e)||tp(`unknown node "${e}"`),i},a=new Set;if(i.ranks)for(let[e,t]of Object.entries(i.ranks)){let{node:i,parent:r}=o(e);(!Number.isSafeInteger(t)||t<0||t>1e4)&&tp(`rank for "${e}" must be an integer in [0,10000]`),a.add(r),r.layoutOptions={...r.layoutOptions,"elk.partitioning.activate":"true"},i.layoutOptions={...i.layoutOptions,"elk.partitioning.partition":String(t)}}for(let e of a)for(let t of e.children??[])t.layoutOptions={"elk.partitioning.partition":"0",...t.layoutOptions};let s=new Set;for(let e of i.adjacent??[]){e.length<2&&tp("adjacent needs two or more nodes");let t=e.map(o),i=t[0].parent;for(let r of(t.some(e=>e.parent!==i)&&tp("adjacent nodes need the same container"),e))s.has(r)&&tp("a node cannot repeat in adjacency groups"),s.add(r);let r=i.children,n=Math.min(...t.map(e=>r.indexOf(e.node)));i.children=[...r.slice(0,n),...t.map(e=>e.node),...r.slice(n).filter(t=>!e.includes(t.id))],i.layoutOptions={...i.layoutOptions,"elk.layered.crossingMinimization.forceNodeModelOrder":"true"}}let l=eR(t.edges),d=new Set((i.shortEdges??[]).map(e=>{let t=l.get(e);return void 0===t&&tp(`unknown edge "${e}"`),t})),h=e=>{for(let t of e.edges??[]){let e=/^e(\d+)(?:_|$)/.exec(t.id);e&&d.has(Number(e[1]))&&(t.layoutOptions={...t.layoutOptions,"elk.layered.priority.shortness":"100","elk.layered.priority.direction":"100"})}e.children?.forEach(h)};h(e)}(A,e,t.layoutHints),N&&C.size>0&&(h=e=>"RIGHT"===e||"LEFT"===e,(g=e=>{let t=h(e.layoutOptions?.["elk.direction"]),i=!1;for(let r of e.children??[])void 0!==r.children&&(!i&&C.has(r.id)&&(i=h(r.layoutOptions?.["elk.direction"])!==t||(r.ports??[]).some(e=>{let i=e.layoutOptions?.["elk.port.side"];return t?"NORTH"===i||"SOUTH"===i:"EAST"===i||"WEST"===i})),g(r));i&&e.layoutOptions?.["elk.layered.crossingMinimization.forceNodeModelOrder"]==="true"&&(e.layoutOptions["elk.layered.crossingMinimization.forceNodeModelOrder"]="false",e.layoutOptions["elk.layered.considerModelOrder.strategy"]??="NODES_AND_EDGES")})(A)),A}function it(e,t){return`${e}:${t}`}function ii(e){return e?.shape==="rectangle"||e?.shape==="diamond"}function ir(e){return({N:0,E:1,S:2,W:3})[e]}function io(e){return+("source"!==e)}function ia(e){switch(e){case"N":return"NORTH";case"E":return"EAST";case"S":return"SOUTH";case"W":return"WEST"}}function is(e,t,i,r,n="TB",o,a,s){let l=a??t8(e,e8(t.label,t.labelContent),t.shape,i,n,o,t.labelBlock),d="LR"===n||"RL"===n,h=d?l.height:l.width;if(!a&&s){let e=Math.max(s.span,Math.min(i.cornerRadius??0,(d?l.width:l.height)/2));if(!(h/(s.count+1)>e)){let t=(s.count+1)*(e+1);Number.isFinite(t)&&t>h&&(h=t)}}let g={id:e,width:d?l.width:h,height:d?h:l.height,labels:[{text:t.label}]},u=r.byNode.get(e);if(u&&u.length>0){let e=u.some(e=>"FIXED_ORDER"===e.constraint)?"FIXED_ORDER":"FIXED_SIDE";g.layoutOptions={...g.layoutOptions??{},"elk.portConstraints":e},g.ports=u.map(e=>({id:e.portId,width:0,height:0,layoutOptions:{"elk.port.side":ia(e.side),"elk.port.index":String(e.slotIndex)}}))}return g}function il(e,t){let i=e=>void 0!==e.direction||e.children.some(i);return!0===t.separateHierarchy||e.subgraphs.some(i)}function id(e,t){if(!e.label||e.concurrencyRegion||void 0===e.headerMinHeight&&0===e.nodeIds.length&&0===e.children.length)return 0;let i=eN(e8(e.label,e.labelContent),t,"group").width;return Math.ceil((e.titleOffset??t.groupLabelPaddingX)+i+t.groupLabelPaddingX)}function ih(e,t,i=eN(e8(e.label,e.labelContent),t,"group")){if(e.concurrencyRegion)return 0;let r=t.groupHeaderFontSize+16+i.height-i.lineHeight;if(void 0===e.headerMinHeight)return r;if(!Number.isFinite(e.headerMinHeight)||e.headerMinHeight<=0)throw RangeError("Invalid internal group header minimum");return Math.max(r,e.headerMinHeight)}function ig(e,t){let i;for(let r=0;r<Math.min(e.length,t.length)&&e[r]===t[r];r++)i=e[r];return i}function iu(e,t=!1){let i=new Set;for(let r of e){if(r.source===r.target||t&&!r.label)continue;let e=JSON.stringify([r.source,r.target]);if(i.has(e))return!0;i.add(e)}return!1}var ic=[{id:"extractEdgesRecursively",after:[],mutates:["extract"],determinism:"pure-order",run:e=>{e.elkResult&&function(e,t,i,n,o,a){let s=new Map,l=new Map,d=(e,t,i)=>{for(let r of(l.set(e.id,{x:t,y:i}),e.children??[]))d(r,t+(r.x??0),i+(r.y??0))};d(e,0,0),function e(t,i,r,n,o){if(t.edges)for(let e of t.edges){let t,a=e.hierarchySegment,s=a?.edgeIndex??parseInt(e.id.substring(1),10);if(isNaN(s))continue;let l=e.container?o.get(e.container):void 0,d=l?.x??r,h=l?.y??n,g=[];if(e.sections&&e.sections.length>0){let t=e.sections[0];if(g.push({x:t.startPoint.x+d,y:t.startPoint.y+h}),t.bendPoints)for(let e of t.bendPoints)g.push({x:e.x+d,y:e.y+h});g.push({x:t.endPoint.x+d,y:t.endPoint.y+h})}if(e.labels&&e.labels.length>0){let i=e.labels[0];null!=i.x&&null!=i.y&&(t={x:i.x+(i.width??0)/2+d,y:i.y+(i.height??0)/2+h})}let u=i.get(s)??[];u.push({order:a?.order??0,points:g,labelPosition:t}),i.set(s,u)}if(t.children)for(let a of t.children)e(a,i,r+(a.x??0),n+(a.y??0),o)}(e,s,0,0,l);let h=0;for(let[e,n]of s){let o,s=t.edges[e];if(!s)continue;let l=[];for(let e of n.sort((e,t)=>e.order-t.order)){let t=l.at(-1),i=t?r([t,...e.points]).slice(1):r(e.points),n=i[0],o=i[1],a=t&&n&&1e-6>Math.abs(t.x-n.x)&&1e-6>Math.abs(t.y-n.y),s=t&&n&&o&&(t.x===n.x&&n.x===o.x&&n.y>=Math.min(t.y,o.y)&&n.y<=Math.max(t.y,o.y)||t.y===n.y&&n.y===o.y&&n.x>=Math.min(t.x,o.x)&&n.x<=Math.max(t.x,o.x));l.push(...a||s?i.slice(1):i)}s.label&&l.length>=2&&(o=n.find(e=>e.labelPosition)?.labelPosition??eB(l));let d=function(e,t,i=0){if(e.length<2)return e;let r=!1;for(let t=1;t<e.length;t++){let i=Math.abs(e[t].x-e[t-1].x),n=Math.abs(e[t].y-e[t-1].y);if(i>1&&n>1){r=!0;break}}if(!r)return e;let n=[e[0]];for(let r=1;r<e.length;r++){let o=n[n.length-1],a=e[r],s=Math.abs(a.x-o.x),l=Math.abs(a.y-o.y);if(s>1&&l>1)if(t){let e=i%2==0,r=12*Math.floor(i/2),s=e?t.rightX+r:t.leftX-r;n.push({x:s,y:o.y}),n.push({x:s,y:a.y})}else{let e=(o.y+a.y)/2;n.push({x:o.x,y:e}),n.push({x:a.x,y:e})}n.push(a)}return n}(l,a,h);d!==l&&h++,s.label&&d!==l&&d.length>=2&&(o=eB(d)),i.push({source:s.source,target:s.target,...void 0!==s.id?{id:s.id}:{},label:s.label,...s.labelContent?{labelContent:s.labelContent}:{},style:s.style,hasArrowStart:s.hasArrowStart,hasArrowEnd:s.hasArrowEnd,startMarker:s.startMarker,endMarker:s.endMarker,...s.curve?{curve:s.curve}:{},...s.animate?{animate:!0}:{},...s.animation?{animation:s.animation}:{},points:d,labelPosition:o,inlineStyle:eQ(e,t),...s.id&&t.classAssignments.has(s.id)?{classNames:t.classAssignments.get(s.id).split(/\s+/).filter(Boolean)}:{},edgeIndex:e})}}(e.elkResult,e.graph,e.edges,0,0,e.margins),ip(e,e.style)}},{id:"alignLayerNodes",after:["extractEdgesRecursively"],mutates:["positions","edges"],determinism:"in-place",enabled:e=>!!e.elkResult||e.mergeEdges,mayChangeMetrics:{bends:"improve-only",straight:"improve-only"},run:e=>{!function(e,t,i){if(0===e.length)return;let r="LR"===i||"RL"===i,n=new Set,o=new Map;for(let e of t)for(let t of(n.add(`${e.source}:${e.target}`),n.add(`${e.target}:${e.source}`),new Set([e.source,e.target]))){let i=o.get(t)??[];i.push(e),o.set(t,i)}let a=new Map(e.map(e=>[e.id,e])),s=.6*eO.layerSpacing,l=[...e].sort((e,t)=>r?e.x-t.x:e.y-t.y),d=[],h=[l[0]];for(let e=1;e<l.length;e++){let t=(r?l[e].x:l[e].y)-(r?l[e-1].x:l[e-1].y),i=h.some(t=>n.has(`${t.id}:${l[e].id}`));t<=s&&!i?h.push(l[e]):(d.push(h),h=[l[e]])}d.push(h);let g=new Map,u=(e,i)=>{let n=r?i:e.x,o=r?e.y:i;for(let i of t)if(i.source!==e.id&&i.target!==e.id)for(let t=1;t<i.points.length;t++){let r=i.points[t-1],a=i.points[t],s=Math.min(r.x,a.x),l=Math.max(r.x,a.x),d=Math.min(r.y,a.y),h=Math.max(r.y,a.y);if(l>n+.5&&s<n+e.width-.5&&h>o+.5&&d<o+e.height-.5)return!0}return!1};for(let e of d){if(e.length<=1)continue;let t=e.map(e=>r?e.x:e.y),i=Math.min(...t),n=Math.max(...t);if(n-i<=1)continue;let s=(i+n)/2;if(e.some(e=>Math.abs(s-(r?e.x:e.y))>.5&&u(e,s)))continue;let l=new Map(e.flatMap(e=>{let t=s-(r?e.x:e.y);return Math.abs(t)>.5?[[e.id,t]]:[]})),d=new Map(e.map(e=>[e.id,{...e,...r?{x:e.x+(l.get(e.id)??0)}:{y:e.y+(l.get(e.id)??0)}}])),h=new Set,f=!1;for(let e of l.keys())for(let t of o.get(e)??[]){if(h.has(t)||"invisible"===t.style)continue;h.add(t);let e={...t,points:t2(t.points,r,g.get(t.source),g.get(t.target))},i={...t,points:t2(t.points,r,l.get(t.source)??g.get(t.source),l.get(t.target)??g.get(t.target))},n,o;for(let r of[!0,!1]){let s=r?t.source:t.target,l=a.get(s),h=d.get(s)??l,g=t0(e.points,l,r),u;!0===g?u=t0(i.points,h,r):(n??=t1(e,a.get(t.source),a.get(t.target)),o??=t1(i,d.get(t.source)??a.get(t.source),d.get(t.target)??a.get(t.target)),g=t0(n.points,l,r),u=t0(o.points,h,r)),!0===g&&!0!==u&&(f=!0)}}if(!f)for(let t of e){let e=s-(r?t.x:t.y);Math.abs(e)>.5&&(r?t.x=s:t.y=s,g.set(t.id,e))}}if(0!==g.size)for(let e of t)e.points=t2(e.points,r,g.get(e.source),g.get(e.target))}(e.nodes,e.edges,e.graph.direction)}},{id:"equalizePeerNodeDimensions",after:["alignLayerNodes"],mutates:["positions","dimensions"],determinism:"in-place",enabled:e=>!!e.elkResult||e.mergeEdges,run:e=>{!function(e,t,i,r,n){let o=e$(r.edges),a=new Map(e.map(e=>[e.id,e])),s=new Map,l=new Map;for(let e of t)V(e,a,r.direction)&&(s.has(e.target)||s.set(e.target,[]),s.get(e.target).push(e),l.has(e.source)||l.set(e.source,[]),l.get(e.source).push(e));let d=[],h=e=>{if(e.length<2||e.length>5||!e.every(e=>"rectangle"===e.shape)||e.some(e=>Q(e,i))||!G(e,r.direction))return;let t=e.map(e=>e.id).sort().join("\0");d.some(e=>e.map(e=>e.id).sort().join("\0")===t)||d.push(e)};for(let e of s.values()){let i=e[0]?.target,r=e.map(e=>a.get(e.source)).filter(Boolean);i&&r.every(e=>t.every(t=>t.source!==e.id||t.target===i))&&h(r)}for(let e of l.values()){let i=e[0]?.source,r=e.map(e=>a.get(e.target)).filter(Boolean);if(!i||!r.every(e=>t.every(t=>t.target!==e.id||t.source===i)&&t.every(t=>t.source!==e.id)))continue;let n=!0;for(let e=0;e<r.length;e++)for(let t=0;t<r.length;t++)e!==t&&o(r[e].id,r[t].id)&&(n=!1);n&&h(r)}let g=!1,u,f=eF(r.direction);for(let t of d){let i=Math.max(...t.map(e=>e.width)),n=Math.max(...t.map(e=>e.height));if(t.every(e=>.5>Math.abs(e.width-i)&&.5>Math.abs(e.height-n)))continue;u??=e.map(e=>({...e}));let o=[...t].sort((e,t)=>e_(e,r.direction)-e_(t,r.direction)),a=Math.min(...o.map(e=>e_(e,r.direction))),l=Math.min(...o.map(e=>eT(e,r.direction))),d=[];for(let e of o)d.push({node:e,x:f.isHorizontal?l:a,y:f.isHorizontal?a:l}),a+=(f.isHorizontal?n:i)+24;let h=new Set(t.map(e=>e.id)),c=(e,t,i,r)=>e<r-.01&&i<t-.01,p=e=>{let t=f.isHorizontal?e.x:e.y;return[t,t+(f.isHorizontal?e.width:e.height)]},y=e=>{let t=f.isHorizontal?e.y:e.x;return[t,t+(f.isHorizontal?e.height:e.width)]},m=d.map(({node:e,x:t,y:r})=>({id:e.id,x:t,y:r,width:i,height:n,orig:p(e)})),x=0,b=new Set;for(let t of m){let[i,r]=p(t),[n,o]=y(t),[a,s]=t.orig;for(let t of e){if(h.has(t.id))continue;let[e,l]=p(t),[d,g]=y(t);c(i,r,e,l)&&!c(a,s,e,l)&&c(n,o,d,g)&&(b.add(t.id),x=Math.max(x,r+24-e))}}let w=new Set,M=e=>{if(!(w.has(e)||h.has(e)))for(let t of(w.add(e),s.get(e)??[]))M(t.source)};for(let e of b)M(e);let S=e.filter(e=>w.has(e.id)),v=new Map(S.map(e=>[e.id,p(e)])),k=[...t,...S].map(e=>({n:e,x:e.x,y:e.y,w:e.width,h:e.height}));if(x>0)for(let e of S)e[f.main]+=x;for(let{node:e,x:t,y:r}of d)e.x=t,e.y=r,e.width=i,e.height=n;let E=new Set([...h,...w]);if([...t,...S].some(t=>{let[i,r]=p(t),[n,o]=y(t),[a,s]=v.get(t.id)??m.find(e=>e.id===t.id).orig;return e.some(e=>{if(E.has(e.id))return!1;let[t,l]=p(e),[d,h]=y(e);return c(i,r,t,l)&&!c(a,s,t,l)&&c(n,o,d,h)})})){for(let e of k)e.n.x=e.x,e.n.y=e.y,e.n.width=e.w,e.n.height=e.h;continue}g=!0}g&&(q(e,r.direction),function(e,t,i,r,n){let o=(e,t)=>Math.min(e.x1,t.x1)-Math.max(e.x0,t.x0)>1e-6&&Math.min(e.y1,t.y1)-Math.max(e.y0,t.y0)>1e-6,a=e=>({x0:e.x,y0:e.y,x1:e.x+e.width,y1:e.y+e.height}),s=new Map(e.map(e=>[e.id,e])),l=new Map(t.map(e=>[e.id,e])),d=i.flatMap(e=>{let t=eI(e,n);if(!t)return[];let i=Math.max(4,n.lineWidth*("thick"===e.style?2:1)*2);return[{x0:t.x-i,y0:t.y-i,x1:t.x+t.w+i,y1:t.y+t.h+i}]});for(let i of d)if(t.some((t,r)=>o(i,a(t))&&!o(i,a(e[r]))))return!1;for(let h of i){let i=X(h,n);if(0===i.length)continue;let g=h.points,u=l.get(h.source),f=l.get(h.target);u&&(g=eo(g,u,!0)),f&&(g=eo(g,f,!1));let c={...h,points:g};for(let e of(ex(t,[c],r,n),g=c.points,[!0,!1])){if(!(e?h.hasArrowStart:h.hasArrowEnd))continue;let t=e?h.source:h.target,i=s.get(t),r=l.get(t),n=e?h.points:[...h.points].reverse(),o=e?g:[...g].reverse(),a=n[0],d=o[0],u=a&&n.find(e=>e.x!==a.x||e.y!==a.y),f=d&&o.find(e=>e.x!==d.x||e.y!==d.y);if(i&&a&&u&&!0===er(i,a,u)&&(!r||!d||!f||!0!==er(r,d,f)))return!1}let p=X(c,n);for(let r=0;r<i.length;r++){let n=i[r],s=p[r];if(!n.bounds)continue;if(!s?.bounds)return!1;let l="start"===s.position?h.source:h.target;if(t.some((t,i)=>t.id!==l&&o(s.bounds,a(t))&&!o(n.bounds,a(e[i])))||d.some(e=>o(e,s.bounds)&&!o(e,n.bounds)))return!1}}return!0}(u,e,t,r,n)||e.forEach((e,t)=>{let i=u[t];e.x=i.x,e.y=i.y,e.width=i.width,e.height=i.height}))}(e.nodes,e.edges,e.groups,e.graph,e.style)}},{id:"alignForkRejoinPeerCenters",after:["equalizePeerNodeDimensions"],mutates:["positions"],determinism:"in-place",mayChangeMetrics:{symErr:"improve-only",bends:{worsenBy:2}},enabled:e=>!!e.elkResult||e.mergeEdges,run:e=>{!function(e,t,i,r,n){let o=e$(r.edges),a=new Map(e.map(e=>[e.id,e])),s=new Map;for(let e of t)V(e,a,r.direction)&&(s.has(e.source)||s.set(e.source,[]),s.get(e.source).push(e));let l=e=>t.filter(t=>t.target===e&&V(t,a,r.direction)).length,d=e=>t.filter(t=>t.source===e&&t.target!==e&&V(t,a,r.direction)),h=(e,t)=>{let i=[],r=new Set(t),n=[e];for(;n.length>0;){let e=n.shift();if(!r.has(e.id))for(let t of(r.add(e.id),i.push(e),d(e.id))){let e=a.get(t.target);!e||r.has(e.id)||1===l(e.id)&&n.push(e)}}return i};for(let[l,g]of s){if(3!==g.length)continue;let s=a.get(l);if(!s||"diamond"!==s.shape||Q(s,i))continue;let u=[...g].sort((e,t)=>eW(a.get(e.target),r.direction)-eW(a.get(t.target),r.direction)),f=u.map(e=>a.get(e.target)).filter(e=>!!e);if(f.length!==u.length||!f.every(e=>"rectangle"===e.shape&&!Q(e,i))||!G(f,r.direction,28))continue;let c=!0;for(let e=0;e<f.length;e++)for(let t=0;t<f.length;t++)e!==t&&o(f[e].id,f[t].id)&&(c=!1);if(!c)continue;let p=f.map(e=>d(e.id));if(!p.every(e=>1===e.length))continue;let y=p[0][0].target;if(!p.every(e=>e[0].target===y))continue;let m=a.get(y);if(!m||Q(m,i))continue;let x=new Set(f.map(e=>e.id));for(let e of h(m,x))x.add(e.id);if([...x].some(e=>{let t=a.get(e);return!t||Q(t,i)}))continue;let b=(eW(f[0],r.direction)+eW(f[f.length-1],r.direction))/2,w=eW(s,r.direction)-b;.5>=Math.abs(w)||ey(x,e,t,r.direction,w,n)&&(eL("[fork-rejoin] center",s.id,"peer island by",w.toFixed(1)),ec(x,e,t,r.direction,w))}}(e.nodes,e.edges,e.groups,e.graph,e.style)}},{id:"alignPortLanes",after:["alignForkRejoinPeerCenters"],mutates:["positions","edges"],determinism:"in-place",enabled:e=>!!e.elkResult,mayChangeMetrics:{straight:"improve-only",portRate:"improve-only",bends:"improve-only"},run:e=>{!function(e,t,i,r,n){if(!tX(e,t,i))return;let{nodes:o,edges:a}=tY(e,t);!function(e,t,i,r,n){let o="LR"===r||"RL"===r,a=o?"y":"x",s=o?"x":"y",l="LR"===r||"TD"===r?1:-1,d=new Set,g=e=>o?e.height:e.width,u=e=>e[a]+g(e)/2,f=new Map(e.map(e=>[e.id,e])),c=[],p=e=>{for(let t of e)c.push(t),p(t.children)};p(i);let y=e=>c.some(t=>e.x>=t.x-.5&&e.y>=t.y-.5&&e.x+e.width<=t.x+t.width+.5&&e.y+e.height<=t.y+t.height+.5),m=(e,t,i,r,n,o,a,s)=>e<n+a&&e+i>n&&t<o+s&&t+r>o,x=e=>o?e.width:e.height,b=(t,i,r,n)=>e.some(e=>!n.has(e.id)&&t>e[a]-4&&t<e[a]+g(e)+4&&r>e[s]-4&&i<e[s]+x(e)+4),w=(t,i,r,n)=>e.some(e=>!n.has(e.id)&&t>e[s]-4&&t<e[s]+x(e)+4&&r>e[a]-4&&i<e[a]+g(e)+4),M=(e,t)=>{let i=t?e.length-1:0,r=t?-1:1,n=e[i][a],o=i;for(;o>=0&&o<e.length&&.5>=Math.abs(e[o][a]-n);)o+=r;if(o<0||o>=e.length)return null;let l=e[o],d=e[o-r];return{mainPos:l[s],far:l[a],orthogonal:.5>=Math.abs(l[s]-d[s])}},S=(e,t)=>{let i=t?e.length-1:0,r=t?-1:1,n=e[i][a],o=1/0,l=-1/0;for(let t=i;t>=0&&t<e.length&&!(Math.abs(e[t][a]-n)>.5);t+=r)o=Math.min(o,e[t][s]),l=Math.max(l,e[t][s]);return{ref:n,lo:o,hi:l}},v=(e,t,i,r,n=!1)=>{let o=e.points,s=t?o.length-1:0,l=t?-1:1,d=t?0:o.length-1,h=o[s][a],g=1/0,u=-1/0;for(let e=s;e>=0&&e<o.length&&.5>=Math.abs(o[e][a]-h)&&!(n&&e===d);e+=l)g=Math.min(g,e),u=Math.max(u,e);if(u<g)return!1;let f=e=>e>=g&&e<=u?{...o[e],[a]:o[e][a]+i}:o[e];for(let e=Math.max(1,g);e<=Math.min(o.length-1,u+1);e++)if(A(f(e-1),f(e),r))return!0;return!1},k=(i,r,l,h=!1)=>{if(d.has(i.id)||y(i))return!1;let g=f.get(l.source),c=f.get(l.target);if(b(u(i.id===l.source?c:g),Math.min(g[s]+x(g)/2,c[s]+x(c)/2),Math.max(g[s]+x(g)/2,c[s]+x(c)/2),new Set([l.source,l.target])))return!1;for(let e of t){let t=e.source===i.id,n=e.target===i.id;if(!t&&!n)continue;let o=e===l;if(o&&2===e.points.length&&.5>=Math.abs(e.points[0][a]-e.points[1][a]))continue;if(!o){if(e.points.length<3)return!1;let t=n?e.points[e.points.length-1]:e.points[0];if(!e.points.some(e=>Math.abs(e[a]-t[a])>.5))return!1}let s=new Set([e.source,e.target]),d=S(e.points,n);if(b(d.ref+r,d.lo,d.hi,s))return!1;let g=M(e.points,n);if(g){if(!g.orthogonal)return!1;let e=Math.min(d.ref+r,g.far),t=Math.max(d.ref+r,g.far);if(w(g.mainPos,e,t,s))return!1}let u=f.get(n?e.source:e.target);if(u&&u!==i&&!(o&&h)&&v(e,n,r,u))return!1}let p=o?i.x:i.x+r,k=o?i.y+r:i.y;for(let t of e)if(t!==i&&m(p-8,k-8,i.width+16,i.height+16,t.x,t.y,t.width,t.height))return!1;for(let e of t)if(e.source!==i.id&&e.target!==i.id)for(let t=1;t<e.points.length;t++){let r=e.points[t-1],n=e.points[t];if(Math.max(r.x,n.x)>p+.5&&Math.min(r.x,n.x)<p+i.width-.5&&Math.max(r.y,n.y)>k+.5&&Math.min(r.y,n.y)<k+i.height-.5)return!1}for(let e of t){if(e===l)continue;let t=eI(e,n);if(t&&m(p-8,k-8,i.width+16,i.height+16,t.x,t.y,t.w,t.h))return!1}return!0},E=(e,t,i,r=!1)=>{let n=e.points,o=t?n.length-1:0,l=t?-1:1,d=t?0:n.length-1,h=n[o][a],g=1/0,u=-1/0;for(let e=o;e>=0&&e<n.length&&!(Math.abs(n[e][a]-h)>.5||r&&e===d);e+=l)g=Math.min(g,n[e][s]),u=Math.max(u,n[e][s]),n[e][a]+=i;e.labelPosition&&12>=Math.abs(e.labelPosition[a]-h)&&e.labelPosition[s]>=g-.5&&e.labelPosition[s]<=u+.5&&(e.labelPosition[a]+=i)},N=(e,i,r)=>{for(let n of(o?e.y+=i:e.x+=i,t)){if(n===r||0===n.points.length)continue;let t=n.source===e.id,o=n.target===e.id;if(t&&o){for(let e of n.points)e[a]+=i;n.labelPosition&&(n.labelPosition[a]+=i);continue}o&&E(n,!0,i),t&&E(n,!1,i)}let n=r.points[0],s=r.points[r.points.length-1];2===r.points.length&&.5>=Math.abs(n[a]-s[a])?(r.points=[eb(f.get(r.source))[o?l>0?"E":"W":l>0?"S":"N"],eb(f.get(r.target))[o?l>0?"W":"E":l>0?"N":"S"]],r.labelPosition&&(r.labelPosition[a]=u(f.get(r.source)))):E(r,r.target===e.id,i)},P=e=>{if(e.points.length<2||e.source===e.target)return!1;let t=h(e.points);for(let e=1;e<t.length;e++)if((t[e][s]-t[e-1][s])*l<-.5)return!1;return!0},C=(i,r,a)=>{let s=o?i.x:i.x+r,l=o?i.y+r:i.y;for(let t of e)if(t!==i&&m(s-8,l-8,i.width+16,i.height+16,t.x,t.y,t.width,t.height))return!1;for(let e of t)if(!a.has(`${e.source}->${e.target}`))for(let t=1;t<e.points.length;t++){let r=e.points[t-1],n=e.points[t];if(Math.max(r.x,n.x)>s+.5&&Math.min(r.x,n.x)<s+i.width-.5&&Math.max(r.y,n.y)>l+.5&&Math.min(r.y,n.y)<l+i.height-.5)return!1}for(let e of t){if(a.has(`${e.source}->${e.target}`))continue;let t=eI(e,n);if(t&&m(s-8,l-8,i.width+16,i.height+16,t.x,t.y,t.w,t.h))return!1}return!0},I=new Set,L=e=>t.filter(t=>t.source===e&&P(t)),R=e=>t.filter(t=>t.target===e&&P(t)).length,O=e=>{let t=[],i=new Set,r=[e];for(;r.length>0;){let e=r.shift();if(!i.has(e.id))for(let n of(i.add(e.id),t.push(e),L(e.id))){let e=f.get(n.target);!e||i.has(e.id)||1===R(e.id)&&r.push(e)}}return t},$=e=>2===e.points.length&&Number(tr(e.points[0][a]))===Number(tr(e.points[1][a]))&&Number(tr(e.points[0][s]))!==Number(tr(e.points[1][s])),z=(e,t,i)=>{if(e.routeCertificate)return;let r=f.get(e.source),n=f.get(e.target);if(!r||!n)return;let d=t.has(r.id)?{...r,[a]:r[a]+i}:r,h=t.has(n.id)?{...n,[a]:n[a]+i}:n,g=eb(d)[o?l>0?"E":"W":l>0?"S":"N"],u=eb(h)[o?l>0?"W":"E":l>0?"N":"S"];if(!(![g.x,g.y,u.x,u.y].every(Number.isFinite)||Number(tr(g[a]))!==Number(tr(u[a])))&&!(l>0?Number(tr(g[s]))>=Number(tr(u[s])):Number(tr(g[s]))<=Number(tr(u[s]))))return[g,u]},B=(i,r)=>{let n=new Set(i.map(e=>e.id));for(let t of i){let i=o?t.x:t.x+r,a=o?t.y+r:t.y;for(let r of e)if(!n.has(r.id)&&m(i-8,a-8,t.width+16,t.height+16,r.x,r.y,r.width,r.height))return!1}for(let e of t){let t=n.has(e.source),i=n.has(e.target);if(t===i||0===e.points.length)continue;if($(e)&&!z(e,n,r))return!1;let o=f.get(i?e.source:e.target);if(o&&v(e,i,r,o,!0))return!1}return!0},F=(e,i)=>{let r=new Set(e.map(e=>e.id)),n=new Map;for(let e of t)if(r.has(e.source)!==r.has(e.target)&&$(e)){let t=z(e,r,i);if(!t)return!1;n.set(e,t)}for(let t of e)o?t.y+=i:t.x+=i;for(let e of t){let t=r.has(e.source),o=r.has(e.target);if(t&&o){for(let t of e.points)t[a]+=i;e.labelPosition&&(e.labelPosition[a]+=i)}else n.has(e)?(e.points=n.get(e),e.labelPosition&&(e.labelPosition[a]=e.points[0][a])):o?E(e,!0,i,!0):t&&E(e,!1,i,!0)}return!0};for(let i of eU("APL_NO_CENTER")?[]:e){if(d.has(i.id)||y(i)||!em.has(i.shape))continue;let e=t.filter(e=>e.target===i.id&&e.source!==i.id&&e.points.length>=2),r=new Map,n=e.length>=2;for(let t of e){if(t.label||!P(t)){n=!1;break}let e=f.get(t.source);if(!e||!em.has(e.shape)){n=!1;break}r.set(e.id,e)}if(!n||r.size<2||t.filter(e=>e.source===i.id&&e.target!==i.id&&P(e)).length>1)continue;let o=[...r.values()],a=o.map(e=>e[s]+x(e)/2);if(Math.max(...a)-Math.min(...a)>Math.max(...o.map(x))+.6*eO.layerSpacing)continue;let l=o.reduce((e,t)=>e+u(t),0)/o.length-u(i);if(.5>=Math.abs(l)){I.add(i.id);continue}let h=O(i),g=new Set(t.filter(e=>e.source===i.id||e.target===i.id).map(e=>`${e.source}->${e.target}`));if(!(!C(i,l,g)||!B(h,l))&&(eL("[apl] center hub",i.id,"by",l.toFixed(1),"over",o.length,"sources"),F(h,l))){for(let e of h)I.add(e.id),d.add(e.id);for(let t of e)d.add(t.source)}}let T=new Set;if(!eU("APL_NO_FACET")){let i=()=>o?l>0?["NE","SE"]:["NW","SW"]:l>0?["SW","SE"]:["NW","NE"];for(let r of e){if("diamond"!==r.shape||d.has(r.id)||y(r))continue;let e=t.filter(e=>e.source===r.id&&e.target!==r.id&&e.points.length>=2&&P(e));if(2!==e.length||e.some(e=>{let t=f.get(e.target);return!t||!em.has(t.shape)})||e.some(e=>d.has(e.target)||I.has(e.target)||y(f.get(e.target))))continue;let n=[...e].sort((e,t)=>u(f.get(e.target))-u(f.get(t.target))),[s,h]=i(),g=eM(r),c=[[n[0],s],[n[1],h]],p=eb(r),x=c.map(([e,t])=>({edge:e,src:{x:g[t].x,y:g[t].y},cross:g[t][a]})),b=!o&&c[0]&&c[1]?[{edge:c[0][0],src:{x:p.W.x,y:p.W.y},cross:p.W[a]},{edge:c[1][0],src:{x:p.E.x,y:p.E.y},cross:p.E[a]}]:null,w=e=>{let[t,i]=e.map(e=>{let t=f.get(e.edge.target),i=e.cross-u(t);return{x:o?t.x:t.x+i,y:o?t.y+i:t.y,w:t.width,h:t.height}});return!!(t&&i&&m(t.x-8,t.y-8,t.w+16,t.h+16,i.x,i.y,i.w,i.h))},M=e=>e.every(e=>{let t=f.get(e.edge.target),i=e.cross-u(t);return .5>=Math.abs(i)||k(t,i,e.edge,!0)}),S=e=>!!e&&M(e)&&!w(e),v;if(S(x))v=x;else{if(!S(b))continue;v=b}let N=o?l>0?"W":"E":l>0?"N":"S";for(let e of v){let i=e.edge,r=f.get(i.target),n=e.cross-u(r);if(Math.abs(n)>.5)for(let e of(o?r.y+=n:r.x+=n,t)){if(e===i)continue;let t=e.source===r.id,o=e.target===r.id;if(t&&o){for(let t of e.points)t[a]+=n;e.labelPosition&&(e.labelPosition[a]+=n)}else o?E(e,!0,n):t&&E(e,!1,n)}i.points=[{x:e.src.x,y:e.src.y},eb(r)[N]],i.labelPosition&&(i.labelPosition[a]=e.cross),T.add(i),d.add(i.target)}d.add(r.id)}}if(!eU("APL_NO_SVERTEX"))for(let e of t){if(T.has(e)||e.points.length<2||e.source===e.target)continue;let i=f.get(e.source),r=f.get(e.target);if(!i||!r||"diamond"!==r.shape||d.has(i.id)||d.has(r.id)||y(i)||y(r)||!P(e)||e.label)continue;let n=r[a]+g(r)/2;if(!t.some(t=>{if(t===e||t.target!==r.id||!P(t)||t.points.length<2)return!1;let i=f.get(t.source);return!!i&&Math.abs(i[a]+g(i)/2-n)<=g(r)/2}))continue;let h=r[a]+g(r)/2,c=i[a]+g(i)/2,p=c>h,m=o?p?"S":"N":p?"E":"W",x=eb(r)[m];if(Math.abs(c-h)<.5*(g(r)/2))continue;let w=x[a]-u(i);if(Math.abs(w)>.5&&!k(i,w,e,!0))continue;let M=o?l>0?"E":"W":l>0?"S":"N",S=eb(i)[M],v=Math.min(S[s],x[s]),N=Math.max(S[s],x[s]);if(!((x[s]-S[s])*l<=.5)&&!b(x[a],v,N,new Set([i.id,r.id]))){if(eL("[apl] svertex",e.source,"->",e.target,"into",m,"vertex"),Math.abs(w)>.5)for(let r of(o?i.y+=w:i.x+=w,t)){if(r===e)continue;let t=r.source===i.id,n=r.target===i.id;if(t&&n){for(let e of r.points)e[a]+=w;r.labelPosition&&(r.labelPosition[a]+=w)}else n?E(r,!0,w):t&&E(r,!1,w)}e.points=[{x:eb(i)[M].x,y:eb(i)[M].y},{x:x.x,y:x.y}],T.add(e),d.add(i.id),d.add(r.id)}}let _,H=e=>void 0!==tj(e,t.filter(t=>t.source===e.id&&V(t,f,r)),t,f,i,r,_??=e$(t));for(let e of t){if(T.has(e)||e.points.length<2||e.source===e.target)continue;let i=f.get(e.source),r=f.get(e.target);if(!i||!r||!em.has(i.shape)||!em.has(r.shape)||I.has(r.id)||"diamond"===i.shape&&t.some(t=>t!==e&&t.source===e.source&&P(t)))continue;let n=u(i)-u(r);if(.5>=Math.abs(n)||!P(e)||h(e.points).length>4)continue;let o=k(r,n,e)?r:!H(i)&&k(i,-n,e)?i:null;o&&(eL("[apl] slide",o.id,"by",(o===r?n:-n).toFixed(1),"for",e.source,"->",e.target),N(o,o===r?n:-n,e),d.add(e.source),d.add(e.target))}}(o,a,i,r,n);let s=tU();(tG(o,a,e,t,i,n,s)||!(s.remaining<0)&&(ex(o,a.filter((e,i)=>tV(e,t[i])),{direction:r},n),tG(o,a,e,t,i,n,s)))&&(_({nodes:o,edges:a},!0)+1e-6<_({nodes:e,edges:t},!0)||tq(e,t,o,a))}(e.nodes,e.edges,e.groups,e.graph.direction,e.style)}},{id:"centerPeerBarycenters",proposal:!0,after:["alignPortLanes"],mutates:["positions"],determinism:"in-place",mayChangeMetrics:{symErr:"improve-only",bends:{worsenBy:2}},enabled:e=>!!e.elkResult||e.mergeEdges,run:e=>{let t;return function(e,t,i,r,n,o){let a=e$(r.edges),s=new Map(e.map(e=>[e.id,e])),l=!eU("APL_NO_CORANK_FANIN"),d=(e,t,n=!1)=>{if(e.length<2||e.length>6)return;let o=e[0].style;if(e.some(e=>e.style!==o)||!n&&e.some(e=>e.label))return;let l=e.map(e=>e[t]);if(new Set(l).size!==l.length)return;let d=l.map(e=>s.get(e)).filter(e=>!!e);if(d.length!==l.length)return;let h="source"===t?e=>em.has(e.shape):e=>"rectangle"===e.shape;if(d.every(e=>h(e)&&!Q(e,i))&&G(d,r.direction,28)){for(let e=0;e<d.length;e++)for(let t=0;t<d.length;t++)if(e!==t&&a(d[e].id,d[t].id))return;return d}};for(let a=0;a<3;a++){let a=new Map,h=new Map;for(let e of t)V(e,s,r.direction)&&(a.has(e.source)||a.set(e.source,[]),a.get(e.source).push(e),h.has(e.target)||h.set(e.target,[]),h.get(e.target).push(e));let g=!1,u=e=>e.reduce((e,t)=>e+eW(t,r.direction),0)/e.length,f=(e,i)=>i.every(i=>t.every(t=>t.source!==i.id&&(t.target!==i.id||t.source===e))),c=(e,t)=>t.length>=2&&t.length<=3&&f(e,t),p=(a,s,l)=>{if(!a||!em.has(a.shape)||Q(a,i))return;let d=l?u(l):void 0,h=s?u(s):void 0;if(void 0!==d&&void 0!==h&&s.length>=4&&f(a.id,s)&&Math.abs(d-h)>1.5){let i=new Set(s.map(e=>e.id)),l=new Set([a.id]),u=d-h,f=d-eW(a,r.direction);if(ey(i,e,t,r.direction,u,n)&&ey(l,e,t,r.direction,f,n)){o?.(),ec(i,e,t,r.direction,u),Math.abs(f)>.5&&ec(l,e,t,r.direction,f),eL("[peer-barycenter] trunk-shift",a.id,"outs by",u.toFixed(1)),g=!0;return}}let p=[];if(void 0!==d&&p.push(d),void 0===h||s&&c(a.id,s)||p.push(h),0===p.length&&void 0!==h&&p.push(h),0===p.length)return;let y=(1===p.length?p[0]:(Math.min(...p)+Math.max(...p))/2)-eW(a,r.direction);if(.5>=Math.abs(y))return;let m=new Set([a.id]);ey(m,e,t,r.direction,y,n)&&(eL("[peer-barycenter] center",a.id,"by",y.toFixed(1),2===p.length?"(mixed)":""),o?.(),ec(m,e,t,r.direction,y),g=!0)};for(let e of[...new Set([...a.keys(),...h.keys()])].sort()){let t=a.get(e),i=h.get(e),r=t?d(t,"target"):void 0,n=i?d(i,"source",l):void 0;p(s.get(e),r,n)}if(!g)break}}(e.nodes,e.edges,e.groups,e.graph,e.style,()=>{let i,r;t??=(i=e.nodes.map(e=>({node:e,x:e.x,y:e.y})),r=e.edges.map(e=>({edge:e,points:e.points.map(e=>({...e})),labelPosition:e.labelPosition?{...e.labelPosition}:void 0})),()=>{for(let{node:e,x:t,y:r}of i)e.x=t,e.y=r;for(let{edge:e,points:t,labelPosition:i}of r)e.points=t,e.labelPosition=i})}),t}},{id:"honorLinkRankDistance",after:["centerPeerBarycenters"],mutates:["positions"],determinism:"in-place",enabled:e=>!!e.elkResult||e.mergeEdges,run:e=>{!function(e,t,i,r){if(!r.edges.some(e=>(e.length??1)>1))return;let n=d(r),o=eF(r.direction),a=new Map(e.map(e=>[e.id,e])),l=new Map,g=e=>{for(let t of e)l.set(t.id,t),g(t.children)};g(i);let u=(e,t)=>{for(let i of e.nodeIds)t.push(i);for(let i of e.children)u(i,t)},f=e=>{if(a.has(e))return[e];let t=eV(r.subgraphs,e);if(!t)return[];let i=[];return u(t,i),i},c=new Map,p=(e,t)=>{for(let i of e){let e=[...t,i.id];for(let t of i.nodeIds)c.set(t,e);p(i.children,e)}};p(r.subgraphs,[]);let y=(e,t)=>{if(l.has(t))return f(t);let i=c.get(t)??[],r=new Set(c.get(e)??[]);for(let t of(l.has(e)&&r.add(e),i))if(!r.has(t))return f(t);return[t]},m=e=>{let t=r.edges[e];return"feedback"===n[e]?{source:t.target,target:t.source}:{source:t.source,target:t.target}},x=e=>{let t=a.get(e);if(t)return{start:t[o.main],size:eD(t,r.direction)};let i=l.get(e);return i?{start:i[o.main],size:"x"===o.main?i.width:i.height}:null},b=e=>{let t=x(e);return t?1===o.sign?t.start:t.start+t.size:null},w=e=>{let t=x(e);return t?1===o.sign?t.start+t.size:t.start:null},M=(e,t)=>{let i=w(e),r=b(t);return null!==i&&null!==r&&(r-i)*o.sign>0},S=new Map;for(let e=0;e<r.edges.length;e++){let t=m(e);if(M(t.source,t.target))for(let e of f(t.source))for(let i of f(t.target))S.has(e)||S.set(e,[]),S.get(e).push(i)}let v=new Map,k=new Set,E=(e,t)=>{if(.5>Math.abs(t))return;let i=new Set,r=[...e];for(;r.length>0;){let e=r.pop();if(i.has(e))continue;i.add(e);let n=a.get(e);if(n){let i=n[o.main];n[o.main]+=t,n[o.main]!==i&&k.add(n),v.set(e,(v.get(e)??0)+t)}for(let t of S.get(e)??[])r.push(t)}},N=new Map,P=e=>{let t=1/0,i=1/0,n=-1/0,o=-1/0,s=eV(r.subgraphs,e.id);for(let e of s?.nodeIds??[]){let r=a.get(e);r&&(t=Math.min(t,r.x),i=Math.min(i,r.y),n=Math.max(n,r.x+r.width),o=Math.max(o,r.y+r.height))}for(let r of e.children)t=Math.min(t,r.x),i=Math.min(i,r.y),n=Math.max(n,r.x+r.width),o=Math.max(o,r.y+r.height);return Number.isFinite(t)?{x:t,y:i,r:n,b:o}:null},C=e=>{for(let t of e.children)C(t);let t=P(e);t&&N.set(e.id,{l:t.x-e.x,t:t.y-e.y,r:e.x+e.width-t.r,b:e.y+e.height-t.b})},I=e=>{for(let t of e.children)I(t);let t=P(e),i=N.get(e.id);t&&i&&(e.x=t.x-i.l,e.y=t.y-i.t,e.width=t.r+i.r-e.x,e.height=t.b+i.b-e.y)};for(let e of i)C(e);let L=(e,t)=>{let i=Math.min(e.x+e.width,t.x+t.width)-Math.max(e.x,t.x),r=Math.min(e.y+e.height,t.y+t.height)-Math.max(e.y,t.y);return i>.5&&r>.5},R=(e,t)=>e.id<t.id?`${e.id}\0${t.id}`:`${t.id}\0${e.id}`,O=new Set;for(let t=0;t<e.length;t++)for(let i=t+1;i<e.length;i++)L(e[t],e[i])&&O.add(R(e[t],e[i]));let $=new Map,z=(t,i)=>{let r=e[t],n=e[i],o=t*e.length+i,a=R(r,n);O.has(a)||!L(r,n)?$.delete(o):$.has(o)||$.set(o,{a:r,b:n,key:a,index:o})},B=()=>{if(k.size){if(k.size>e.length/2)for(let t=0;t<e.length;t++)for(let i=t+1;i<e.length;i++)z(t,i);else for(let t=0;t<e.length;t++)if(k.has(e[t]))for(let i=0;i<e.length;i++)t===i||i<t&&k.has(e[i])||z(Math.min(t,i),Math.max(t,i));k.clear()}};for(let e=0;e<r.edges.length;e++){let t=r.edges[e],i=m(e),n=t.length??1;if(n<=1||!M(i.source,i.target))continue;let a=w(i.source),s=b(i.target);if(null===a||null===s)continue;let l=(s-a)*o.sign,d=to(n,eO.layerSpacing);l<d&&E(y(i.source,i.target),(d-l)*o.sign)}if(!k.size)return;B();let F=(e,t)=>{let i=new Set(c.get(t)??[]);for(let t of c.get(e)??[])if(!i.has(t))return f(t);return[e]};for(let t=0;t<4*e.length;t++){let e;for(let t of $.values())(!e||t.key<e.key||t.key===e.key&&t.index<e.index)&&(e=t);if(!e)break;let{a:t,b:i}=e,n=(ej(t,r.direction)-ej(i,r.direction))*o.sign,[a,s]=(0!==n?n>0:t.id>i.id)?[i,t]:[t,i],l=1===o.sign?a[o.main]+eD(a,r.direction)+eO.nodeSpacing-s[o.main]:s[o.main]+eD(s,r.direction)+eO.nodeSpacing-a[o.main];E(F(s.id,a.id),1===o.sign?l:-l),B()}let T=new Map;for(let[e,t]of l)T.set(e,{start:t[o.main],size:"x"===o.main?t.width:t.height});for(let e of i)I(e);let _=e=>eW(e,r.direction)+eH(e,r.direction)/2,H=e=>eW(e,r.direction)-eH(e,r.direction)/2,D=Math.max(...e.map(_))+10,W=Math.min(...e.map(H))-10,j=(e,t)=>"x"===o.main?{x:e,y:t}:{x:t,y:e},X=(e,t)=>{let i=a.get(e);if(i)return eb(i)[t];let r=l.get(e);if(!r)return null;let n=r.x+r.width/2,o=r.y+r.height/2;switch(t){case"E":return{x:r.x+r.width,y:o};case"W":return{x:r.x,y:o};case"S":return{x:n,y:r.y+r.height};default:return{x:n,y:r.y}}},V=e=>{for(let t of l.values()){if(t.concurrencyRegion||0===t.width)continue;let i=t.headerHeight??t.height;if(!Number.isFinite(i)||i<0)return!1;if(!(0===i||t.width<=0))for(let r=1;r<e.length;r++){let n=e[r-1],o=e[r];if(Math.max(n.x,o.x)>t.x&&Math.min(n.x,o.x)<t.x+t.width&&Math.max(n.y,o.y)>t.y&&Math.min(n.y,o.y)<t.y+i)return!1}}return!0},U=t=>{let i=new Set;for(let r of e)i.add(r[t]),i.add(r[t]+("x"===t?r.width:r.height));for(let e of l.values()){let r=e.concurrencyRegion?0:e.headerHeight??e.height;r>0&&Number.isFinite(r)&&e.width>0&&(i.add(e[t]),i.add(e[t]+("x"===t?e.width:r)))}let r=[...i].sort((e,t)=>e-t),n=[];for(let e=1;e<r.length;e++)r[e]-r[e-1]>2&&n.push((r[e]+r[e-1])/2);return t===o.cross&&l.size&&r.length>0&&n.push(r[0]-10,r.at(-1)+10),n},G="x"===o.main?"y":"x",Y=(e,t)=>[...e].sort((e,i)=>Math.abs(e-t)-Math.abs(i-t)||e-i).slice(0,16),q=new Map,K=(e,t)=>{for(let i of e)q.set(i.id,t),K(i.children,i.id)};K(r.subgraphs);let Q=(e,t)=>{if((c.get(t)??[]).includes(e))return!0;for(let i=q.get(t);void 0!==i;i=q.get(i))if(i===e)return!0;return!1},Z=(e,t)=>{for(let i of[t.source,t.target]){let t=a.get(i);if(t){for(let i=1;i<e.length;i++)if(A(e[i-1],e[i],t))return!1}}return!0},J=e=>{let t=a.get(e),i=l.get(e),r=T.get(e);return t?v.get(e)??0:i&&r?i[o.main]-r.start:void 0},ee=(e,t)=>{let i=a.get(e),n=v.get(e)??0,s=new Set(c.get(t)??[]);l.has(t)&&s.add(t);let d=l.has(e)?e:(c.get(e)??[]).find(e=>!s.has(e));if(d&&l.has(d)){let e=T.get(d),t=l.get(d),r=f(d),n=r.length?v.get(r[0])??0:0;if(r.every(e=>(v.get(e)??0)===n)&&("x"===o.main?t.width:t.height)===e.size)return{...e,delta:t[o.main]-e.start};if(!i)return null}return i?{start:i[o.main]-n,size:eD(i,r.direction),delta:n}:null},et=t=>{let i=ee(t.source,t.target),r=ee(t.target,t.source);if(!i||!r||t.points.length<2)return null;let[n,a]=i.start<=r.start?[i,r]:[r,i],s=n.start+n.size,l=a.start,d=l-s,h=l+a.delta-(s+n.delta),g=i.delta===r.delta&&Number.isFinite(i.delta);if(!g&&!(d>0&&h>0&&[s,l,d,h,n.delta,a.delta].every(Number.isFinite)))return null;let u=g?1:h/d;if(!(u>0&&Number.isFinite(u)))return null;let f=e=>g?e+i.delta:e<=s?e+n.delta:e>=l?e+a.delta:s+n.delta+(e-s)*u,c=t.points.map(e=>({...e,[o.main]:f(e[o.main])}));if(c.some(e=>!Number.isFinite(e.x)||!Number.isFinite(e.y)))return null;let p=t.points.map(e=>e[o.main]).sort((e,t)=>e<t?-1:+(e>t));for(let e=1;e<p.length;e++)if(p[e]>p[e-1]&&!(f(p[e])>f(p[e-1])))return null;let y=(e,t)=>e===t||Math.abs(e-t)<=8*Number.EPSILON*Math.max(1,Math.abs(e),Math.abs(t))&&tr(e)===tr(t);for(let t=1;t<c.length;t++){let i=c[t-1],r=c[t];if(!y(i.x,r.x)&&!y(i.y,r.y))return null;for(let t of e)if(A(i,r,t))return null}let m=J(t.source),x=J(t.target);return void 0!==m&&void 0!==x&&c[0][o.main]===t.points[0][o.main]+m&&c.at(-1)[o.main]===t.points.at(-1)[o.main]+x&&en(c,t)&&eu(c,e,new Set([t.source,t.target]))&&V(c)?c:null},ei=(e,t)=>{if(!t)return null;let i=J(e);return void 0===i?null:{...t,[o.main]:t[o.main]+i}},en=(e,t)=>{for(let[i,r]of[[t.source,!0],[t.target,!1]]){let n,o=a.get(i),d=l.get(i),h=o??(d?{id:d.id,label:d.label,shape:"rectangle",x:d.x,y:d.y,width:d.width,height:d.height}:void 0);if(!h)return!1;let g=r?e[0]:e.at(-1);if(!g)return!1;for(let t=r?1:e.length-2;t>=0&&t<e.length;t+=r?1:-1){let i=e[t];if(i.x!==g.x||i.y!==g.y){n=i;break}}if(!n||!s(h,g))return!1;let u=!o&&Q(i,r?t.target:t.source)?{x:g.x-(n.x-g.x),y:g.y-(n.y-g.y)}:n;if(!Number.isFinite(u.x)||!Number.isFinite(u.y)||!er(h,g,u))return!1}return!0};for(let i of t){let t=void 0!==i.edgeIndex?n[i.edgeIndex]??"primary-forward":"primary-forward";if("self-loop"===t){let e=v.get(i.source)??0;0!==e&&(i.points=i.points.map(t=>({...t,[o.main]:t[o.main]+e}))),0!==e&&i.labelPosition&&(i.labelPosition[o.main]+=e);continue}let s=l.size>0&&("cross-hierarchy"===t||"container"===t),d=s?et(i):null;if(d){i.points=d,i.label&&(i.labelPosition=eB(d));continue}if("feedback"===t){let t=a.get(i.source),n=a.get(i.target);if(!t||!n)continue;let s=ej(t,r.direction),l=ej(n,r.direction),d=(e,i)=>[j(s,i(t)),j(s,e),j(l,e),j(l,i(n))],g=(e,i,r,o)=>[j(s,i(t)),j(s,e),j(r,e),j(r,o),j(l,o),j(l,i(n))],u=(e,i,r,o)=>[j(s,i(t)),j(s,o),j(r,o),j(r,e),j(l,e),j(l,i(n))],f=new Set([i.source,i.target]),c=t=>eu(h(t),e,f)&&V(t),p=[[D,_],[W,H]],y;for(let[e,t]of p){let i=d(e,t);if(c(i)){y=i;break}}if(!y){let e=Y(U("x"===o.main?"x":"y"),l);e:for(let[t,i]of p){let r=Y(U(G),i(n));for(let n of[g,u])for(let o of e)for(let e of r){let r=n(t,i,o,e);if(c(r)){y=h(r);break e}}}}i.points=y??d(D,_),i.label&&(i.labelPosition=eB(i.points));continue}let g=s?ei(i.source,i.points[0]):X(i.source,o.sourceSide),u=s?ei(i.target,i.points.at(-1)):X(i.target,o.targetSide);if(!g||!u)continue;let f=new Set([i.source,i.target]),c=t=>eu(t,e,f)&&V(t)&&(!s||en(t,i)&&Z(t,i)),p=Math.min(g[o.main],u[o.main]),y=Math.max(g[o.main],u[o.main]),m=eh(g,u,r.direction,(p+y)/2),x=c(m);if(!x){let e,t=Y(U("x"===o.main?"x":"y").filter(e=>e>p&&e<y),(p+y)/2);for(let i of t){let t=eh(g,u,r.direction,i);if(c(t)){e=t;break}}if(!e){let i=g[G],r=u[G],n=Y(U(G),(i+r)/2);e:for(let a of n)for(let n of t)for(let s of Y(t.filter(e=>(e-n)*o.sign>0),u[o.main])){let t=h([g,j(n,i),j(n,a),j(s,a),j(s,r),u]);if(c(t)){e=t;break e}}}e&&(m=e,x=!0)}if(s&&!x)throw new te([{strategy:"link-rank-reconnect",violations:[`edge ${i.source}->${i.target}: no proven contact-preserving route after rank move`]}]);i.points=m,i.label&&(i.labelPosition=eB(i.points))}}(e.nodes,e.edges,e.groups,e.graph)}},{id:"alignLabeledSourcePort",after:["honorLinkRankDistance"],mutates:["positions","edges"],determinism:"in-place",mayChangeMetrics:{portRate:"improve-only"},enabled:e=>!!e.elkResult||e.mergeEdges,run:e=>{!function(e,t,i,r,n,o){if(eU("APL_NO_LABELED_SOURCE_PORT")||!tX(e,t,i)||!t.some(e=>e.label))return;let a=tY(e,t);!function(e,t,i,r,n,o){let a=new Set;for(let[n]of tH(e,t,i,r))a.add(n);let s="LR"===n||"RL"===n,l=s?"y":"x",d=s?"x":"y",h=s?"LR"===n?"E":"W":"BT"===n?"N":"S",g=e=>e[l]+(s?e.height:e.width)/2,u=[],f=e=>{for(let t of e)u.push(t),f(t.children)};f(i);let c=e=>u.some(t=>e.x>=t.x-.5&&e.y>=t.y-.5&&e.x+e.width<=t.x+t.width+.5&&e.y+e.height<=t.y+t.height+.5),p=new Map(e.map(e=>[e.id,e])),y=e=>"x"===d?"E"===h?e.x+e.width:e.x:"S"===h?e.y+e.height:e.y,m=(e,i)=>{let r=new Set([e.id]),n=[e.id];for(;n.length;){let e=n.pop();for(let o of t){if(o.target!==e||o===i)continue;let a=p.get(o.source);if(!(!a||r.has(a.id))){if(1!==t.filter(e=>e.source===a.id).length||!em.has(a.shape)||c(a))return null;r.add(a.id),n.push(a.id)}}}return r};for(let r of t){if(!r.label||r.points.length<2||r.source===r.target||a.has(r.target))continue;let u=p.get(r.source);if(!u||!em.has(u.shape)||c(u)||t.some(e=>e!==r&&e.source===u.id&&e.target!==u.id)||Math.abs(r.points[0][d]-y(u))>1)continue;let f=p.get(r.target);if(!f||!em.has(f.shape)||c(f))continue;let{ctx:x,axis:b}=v(e,t,n,o,i),w=0,M=!1,k={...u};for(let e=0;e<4;e++){let e=S(r,k,f,x,b);if(null===e)break;let t=e-g(k);if(w+=t,k[l]+=t,.5>=Math.abs(t)){M=!0;break}}if(!M||1>=Math.abs(w))continue;let E=m(u,r);if(!E)continue;let N=[...E].map(e=>p.get(e)).filter(Boolean),P=e=>({x:s?e.x:e.x+w,y:s?e.y+w:e.y,width:e.width,height:e.height});if(!(e.some(e=>!E.has(e.id)&&N.some(t=>{let i=P(t);return i.x-2<e.x+e.width&&i.x+i.width+2>e.x&&i.y-2<e.y+e.height&&i.y+i.height+2>e.y}))||t.some(e=>!E.has(e.source)&&!E.has(e.target)&&N.some(t=>{let i=P(t);return e.points.some((t,r)=>{if(0===r)return!1;let n=e.points[r-1];return Math.max(t.x,n.x)>i.x+.5&&Math.min(t.x,n.x)<i.x+i.width-.5&&Math.max(t.y,n.y)>i.y+.5&&Math.min(t.y,n.y)<i.y+i.height-.5})})))){for(let e of N)s?e.y+=w:e.x+=w;for(let e of t)if(E.has(e.source)&&E.has(e.target))for(let t of e.points)t[l]+=w;r.points[0]=eb(u)[h]}}}(a.nodes,a.edges,i,r,n,o);let s=tU();if(!tG(a.nodes,a.edges,e,t,i,o,s)){if(s.remaining<0)return;let{ctx:r,axis:l}=v(a.nodes,a.edges,n,o,i);for(let e=0;e<a.edges.length;e++){let i=a.edges[e];if(!i.label||!tV(i,t[e]))continue;let n=a.nodes.find(e=>e.id===i.source),o=a.nodes.find(e=>e.id===i.target);if(!n||!o||!M(i,n,o,r,l,i.points[0][l.cross]).applied)return;E(i,i.routeCertificate,n,o)}let d=Symbol(),h=()=>--s.remaining>=0,g=()=>{if(!h())throw d};try{let r=P({...a,groups:i},o,g),n=(t,n)=>{g();let l=eI(t,o);if(!l)return!1;let d=r.clearPaintRect(l,eC(t,o.lineWidth??1),t);if(!d)return!1;let u={x0:d.x,y0:d.y,x1:d.x+d.w,y1:d.y+d.h};for(let e of a.edges){g();let i=p(e,o,h);if(!i||i.markers.some(e=>(g(),c(u,e.bounds))))return!1;if(e===t)continue;if(i.shafts.some(e=>(g(),c(u,e))))return!1;let r=eI(e,o);if(r){g();let t=eC(e,o.lineWidth??1);if(c(u,{x0:r.x-t,y0:r.y-t,x1:r.x+r.w+t,y1:r.y+r.h+t}))return!1}}return tG(a.nodes,[t],e,[n],i,o,s)};for(let e=0;e<a.edges.length;e++){g();let i=a.edges[e],r=t[e];if(!i.label||!tV(i,r)||n(i,r))continue;let s=eI(i,o),d=i.points[0],h=i.points[1];if(!s||2!==i.points.length)return;let u=Math.hypot(h.x-d.x,h.y-d.y),f=("x"===l.main?s.w:s.h)/2;if(!(u>2*f))return;let c=!1;for(let e of N(f/u,g))if(g(),i.labelPosition={x:d.x+(h.x-d.x)*e,y:d.y+(h.y-d.y)*e},n(i,r)){c=!0;break}if(!c)return}}catch(e){if(e===d)return;throw e}if(!tG(a.nodes,a.edges,e,t,i,o,s))return}tq(e,t,a.nodes,a.edges)}(e.nodes,e.edges,e.groups,e.graph,e.graph.direction,e.style)}},{id:"bundleEdgePaths",after:["alignLabeledSourcePort"],mutates:["edges"],determinism:"pure-order",enabled:e=>e.mergeEdges,run:e=>{e.bundled=function(e,t,i,r,n){let o=new Map(t.map(e=>[e.id,e])),a=new Set,s=(r,a)=>{for(let[e,t]of a){let i=o.get(e.source),r=o.get(e.target);a.set(e,es(es(t,i,!0),r,!1))}let s=e.map(e=>a.has(e)?{...e,points:a.get(e)}:e),l=(t,i,r)=>e.some(e=>e.source===t&&e.target===i&&"invisible"!==e.style&&Y(r,e)&&e.hasArrowStart===r.hasArrowStart&&e.hasArrowEnd===r.hasArrowEnd&&(e.startMarker??"arrow")===(r.startMarker??"arrow")&&(e.endMarker??"arrow")===(r.endMarker??"arrow"));return r.filter(r=>{var o;let d,h,g=a.get(r.edge),u=s[e.indexOf(r.edge)];return function(e,t,i,r){let n=(e,t)=>{if(void 0!==e&&!/^\s*[+]?(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?(?:px)?\s*$/i.test(e))return;let i=void 0===e?t:Number.parseFloat(e);return Number.isFinite(i)&&i>=0?Number(tr(i)):void 0},o=n(e.inlineStyle?.["stroke-width"],r.lineWidth*("thick"===e.style?2:1)),a=r.edgeBendRadius;if(void 0===o||!Number.isFinite(a)||a<0)return!1;let s=ta({stroke:"#000",strokeWidth:String(o)},!0);if(void 0===s)return!1;let l=s+a,d=e.points.map(e=>({x:Number(tr(e.x)),y:Number(tr(e.y))}));if(!d.every(e=>Number.isFinite(e.x)&&Number.isFinite(e.y)))return!1;let h=d.slice(1).map((e,t)=>{let i=d[t];return{x0:Math.min(i.x,e.x)-l,x1:Math.max(i.x,e.x)+l,y0:Math.min(i.y,e.y)-l,y1:Math.max(i.y,e.y)+l}}),g=(e,t)=>{let i=(Math.abs(e.x0)+Math.abs(e.x1)+Math.abs(e.y0)+Math.abs(e.y1)+Math.abs(t.x0)+Math.abs(t.x1)+Math.abs(t.y0)+Math.abs(t.y1))*1e-10+1e-9;return!Number.isFinite(i)||e.x1+i>t.x0&&e.x0<t.x1+i&&e.y1+i>t.y0&&e.y0<t.y1+i},u=U(e,r);if(!u||u.length!==+!!e.hasArrowStart+ +!!e.hasArrowEnd)return!1;for(let i of t){let t=n(i.inlineStyle?.["stroke-width"],r.nodeLineWidth);if(void 0===t)return!1;let o=Z(i,{fill:"#000",stroke:"#000",strokeWidth:String(t)},r.cornerRadius),a=ts(tc({id:i.id,role:"node",geometry:o.geometry,paint:o.paint,...o.childPaints?{childPaints:o.childPaints}:{}}));if(!a||i.id!==e.source&&i.id!==e.target&&h.some(e=>g(e,a)))return!1;for(let t of u)if(("start"===t.position?e.source:e.target)!==i.id&&(!t.bounds||g(t.bounds,a)))return!1}let f=e=>{let t=e.concurrencyRegion?0:e.headerHeight??e.height;if(t>0){let i={x0:e.x,x1:e.x+e.width,y0:e.y,y1:e.y+t};if(h.some(e=>g(e,i))||u.some(e=>!e.bounds||g(e.bounds,i)))return!1}return e.children.every(f)};return i.every(f)}(u,t,i,n)&&!K(r.edge,g,s,n,u)&&(o=r.edge,d=e.filter(e=>e!==o),h=new Set(B(o,d)),!B(u,d).some(e=>!h.has(e)&&(!Y(o,e)||!l(o.source,e.target,o)||!l(e.source,o.target,e))))})},l="LR"===r,d="RL"===r,h="BT"===r,g=l||d,u=(e,t)=>Math.max(...e.map(({edge:e})=>ep(n,e,t))),f=new Map;for(let t of e)t.source!==t.target&&(f.has(t.source)||f.set(t.source,[]),f.get(t.source).push(t));for(let[e,t]of f){if(t.length<2)continue;let n=t[0].style;if(t.some(e=>e.label||e.style!==n))continue;let f=o.get(e);if(!f)continue;let c=t.filter(e=>{let t=o.get(e.target);return!!t&&(l?t.x>f.x+f.width:d?t.x+t.width<f.x:h?t.y+t.height<f.y:t.y>f.y+f.height)});if(c.length<2||new Set(c.map(e=>e.target)).size<2)continue;let p=f.x+f.width/2,y=f.y+f.height/2,x=c.map(e=>({edge:e,node:o.get(e.target)}));for(;x.length>=2;){let e=new Map;if(g){let t=l?f.x+f.width:f.x,n=el(t,l?Math.min(...x.map(e=>e.node.x)):Math.max(...x.map(e=>e.node.x+e.node.width)),u(x,"start"),u(x,"end"));for(let{edge:o,node:a}of(n=t6(n,p,y,i,r),x)){let i=l?a.x:a.x+a.width,r=a.y+a.height/2;e.set(o,[{x:t,y:y},{x:n,y:y},{x:n,y:r},{x:i,y:r}])}}else{let t=h?f.y:f.y+f.height,n=el(t,h?Math.max(...x.map(e=>e.node.y+e.node.height)):Math.min(...x.map(e=>e.node.y)),u(x,"start"),u(x,"end"));for(let{edge:o,node:a}of(n=t6(n,p,y,i,r),x)){let i=a.x+a.width/2,r=h?a.y+a.height:a.y;e.set(o,[{x:p,y:t},{x:p,y:n},{x:i,y:n},{x:i,y:r}])}}let t=s(x,e);if(t.length===x.length){for(let{edge:t}of x)t.points=e.get(t);m(x.map(e=>e.edge),a);break}if(new Set((x=t).map(e=>e.edge.target)).size<2)break}}let c=new Map;for(let t of e)a.has(t)||t.source===t.target||(c.has(t.target)||c.set(t.target,[]),c.get(t.target).push(t));for(let[e,t]of c){if(t.length<2)continue;let n=t[0].style;if(t.some(e=>e.label||e.style!==n))continue;let f=o.get(e);if(!f)continue;let c=t.filter(e=>{let t=o.get(e.source);return!!t&&(l?t.x+t.width<f.x:d?t.x>f.x+f.width:h?t.y>f.y+f.height:t.y+t.height<f.y)});if(c.length<2||new Set(c.map(e=>e.source)).size<2)continue;let p=f.x+f.width/2,y=f.y+f.height/2,x=c.map(e=>({edge:e,node:o.get(e.source)}));for(;x.length>=2;){let e=new Map;if(g){let t=l?f.x:f.x+f.width,n=el(l?Math.max(...x.map(e=>e.node.x+e.node.width)):Math.min(...x.map(e=>e.node.x)),t,u(x,"start"),u(x,"end"));for(let{edge:o,node:a}of(n=t6(n,p,y,i,r),x)){let i=l?a.x+a.width:a.x,r=a.y+a.height/2;e.set(o,[{x:i,y:r},{x:n,y:r},{x:n,y:y},{x:t,y:y}])}}else{let t=h?f.y+f.height:f.y,n=el(h?Math.min(...x.map(e=>e.node.y)):Math.max(...x.map(e=>e.node.y+e.node.height)),t,u(x,"start"),u(x,"end"));for(let{edge:o,node:a}of(n=t6(n,p,y,i,r),x)){let i=a.x+a.width/2,r=h?a.y:a.y+a.height;e.set(o,[{x:i,y:r},{x:i,y:n},{x:p,y:n},{x:p,y:t}])}}let t=s(x,e);if(t.length===x.length){for(let{edge:t}of x)t.points=e.get(t);m(x.map(e=>e.edge),a);break}if(new Set((x=t).map(e=>e.edge.source)).size<2)break}}return a}(e.edges,e.nodes,e.groups,e.graph.direction,e.style),e.genericBundled=e.bundled.size>0}},{id:"markCorankFanInBundles",after:["bundleEdgePaths"],mutates:["edges"],determinism:"in-place",enabled:e=>!!e.elkResult||e.mergeEdges,run:e=>{!function(e,t,i,r,n,o){let a=new Map(e.map(e=>[e.id,e])),l=eF(r.direction);for(let[d,h]of tH(e,t,i,r)){let t=a.get(d),i=[...h].sort((e,t)=>eW(a.get(e.source),r.direction)-eW(a.get(t.source),r.direction)),g=i.map(e=>a.get(e.source)),u=eb(t)[l.targetSide],f=(l.isHorizontal?t.height:t.width)/2*1.6,c=Math.min(28,i.length>1?f/(i.length-1):0),p=ea(i.length,c),y=e=>l.isHorizontal?{x:u.x,y:u.y+e}:{x:u.x+e,y:u.y};p.every(e=>s(t,y(e)))||(p=p.map(()=>0));let x=l.isHorizontal?"E"===l.sourceSide?Math.max(...g.map(e=>e.x+e.width)):Math.min(...g.map(e=>e.x)):"S"===l.sourceSide?Math.max(...g.map(e=>e.y+e.height)):Math.min(...g.map(e=>e.y)),b=x+((l.isHorizontal?u.x:u.y)-x)/2,w=[],M=!0;for(let t=0;t<i.length;t++){let n=i[t],o=eh(eb(g[t])[l.sourceSide],y(p[t]),r.direction,b);if(!eu(o,e,new Set([n.source,n.target]))){M=!1;break}w.push({edge:n,points:o})}if(M){for(let{edge:e,points:t}of w)e.points=t,e.routeCertificate=void 0;m(w.map(e=>e.edge),n),t_(w,e,r.direction,o,!0)}}}(e.nodes,e.edges,e.groups,e.graph,e.bundled,e.style)}},{id:"clipEdgeToShape",after:["bundleEdgePaths"],mutates:["edges"],determinism:"in-place",mayChangeMetrics:{portRate:{worsenBy:1,whenImproves:"endpointApproaches"},endpointApproaches:"improve-only"},run:e=>{let t=new Map(e.nodes.map(e=>[e.id,e]));for(let i of e.edges){let r=e.bundled.has(i)?x(i):void 0;i.points=i.points.filter((e,t,i)=>0===t||e.x!==i[t-1].x||e.y!==i[t-1].y);let n=t.get(i.source),o=t.get(i.target);l(i,n,o),n&&(i.points=es(i.points,n,!0)),o&&(i.points=es(i.points,o,!1)),b(i,r)}}},{id:"applySymmetricFanoutEmissions",after:["clipEdgeToShape"],mutates:["edges"],determinism:"in-place",mayChangeMetrics:{symErr:"improve-only",bends:{worsenBy:2}},enabled:e=>!!e.elkResult||e.mergeEdges,run:e=>{!function(e,t,i,r,n,o){let a=e$(r.edges),s=new Map(e.map(e=>[e.id,e])),l=new Map;for(let e of t)V(e,s,r.direction)&&(l.has(e.source)||l.set(e.source,[]),l.get(e.source).push(e));let d=eF(r.direction);for(let[h,g]of l){let l=s.get(h),u=l&&tj(l,g,t,s,i,r.direction,a);if(!l||!u)continue;let f=u.map(e=>s.get(e.target)),c="diamond"!==l.shape&&Q(l,i);if(c){let{ctx:n,axis:a}=v(e,t,r.direction,o,i),d=eW(l,r.direction),h=u.map(e=>S(e,l,s.get(e.target),n,a));if(h.every((e,t)=>null!==e&&1>=Math.abs(e-d+(h[h.length-1-t]-d))))continue}let p=f.map(e=>({t:e,x:e.x,y:e.y,width:e.width,height:e.height})),y=J(i).map(e=>({group:e,x:e.x,y:e.y,width:e.width,height:e.height})),x=()=>{for(let e of p)e.t.x=e.x,e.t.y=e.y,e.t.width=e.width,e.t.height=e.height;for(let e of y)e.group.x=e.x,e.group.y=e.y,e.group.width=e.width,e.group.height=e.height},b=Math.max(...f.map(e=>e.width)),M=Math.max(...f.map(e=>e.height)),k=eW(l,r.direction),E=Math.min(...f.map(e=>eT(e,r.direction))),N=(d.isHorizontal?M:b)+28,P=ea(f.length,N),C="diamond"===l.shape?u.map((e,t)=>ei(l,r.direction,t,u.length)[d.cross]):void 0,I=e=>{for(let t=0;t<f.length;t++){let i=f[t];i.width=b,i.height=M,d.isHorizontal?(i.x=E,i.y=e[t]-M/2):(i.x=e[t]-b/2,i.y=E)}};c||I(C??P.map(e=>k+e));let L=new Set(f.map(e=>e.id)),R=()=>{for(let e=0;e<f.length;e++){let t=f[e];if(t.x<0||t.y<0)return!1;for(let i=e+1;i<f.length;i++)if(eX(t,f[i],8))return!1}for(let t of f)for(let i of e)if(!L.has(i.id)&&eX(t,i,8))return!1;return!0},O=c||R();if(!O&&C&&(I(P.map(e=>k+e)),O=R()),!O){x();continue}let $=d.isHorizontal?"E"===d.sourceSide?l.x+l.width:l.x:"S"===d.sourceSide?l.y+l.height:l.y,z=d.isHorizontal?d.sign>0?Math.min(...f.map(e=>e.x)):Math.max(...f.map(e=>e.x+e.width)):d.sign>0?Math.min(...f.map(e=>e.y)):Math.max(...f.map(e=>e.y+e.height)),A=Math.max(0,...u.map(e=>(function(e,t,i){if(!e.label)return 0;let r=tC(e,{x:0,y:0},i);return(eF(t).isHorizontal?r.width:r.height)+3*Math.max(tR(i),e.hasArrowEnd?t$(i):tR(i))})(e,r.direction,o))),B=(z-$)*d.sign;if(!c&&A>B+.001){let e=A-B,t=f.map(e=>({x:e.x,y:e.y,width:e.width,height:e.height}));for(let t of f)d.isHorizontal?t.x+=e*d.sign:t.y+=e*d.sign;if(et(i,t,r.direction,e),!(O=R())){x();continue}z=d.isHorizontal?d.sign>0?Math.min(...f.map(e=>e.x)):Math.max(...f.map(e=>e.x+e.width)):d.sign>0?Math.min(...f.map(e=>e.y)):Math.max(...f.map(e=>e.y+e.height))}let F=Math.max(0,...u.map(e=>(function(e,t,i,r,n){if(!e.label)return 0;let o=eF(t),a=tC(e,{x:0,y:0},i),s=o.isHorizontal?a.width:a.height,l=Math.max(tR(i),e.hasArrowEnd?t$(i):tR(i)),d=((n-r)*o.sign-s)/3;return d>=l-.001?s+2*d:s+tR(i)+l+2})(e,r.direction,o,$,z))),T=$+(z-$)*.5,_=z-d.sign*F,H=(_-T)*d.sign<0?_:T;if(c&&(H-$)*d.sign<Math.max(...u.map(e=>ep(o,e,"start")))-.001)continue;let D=[];for(let t=0;t<u.length;t++){let i=u[t],n=s.get(i.target),o=eh(ei(l,r.direction,t,u.length),en(n,r.direction),r.direction,H);if(!eu(o,e,new Set([i.source,i.target]))){O=!1;break}D.push({edge:i,points:o})}if(O&&c){let e=t.filter(e=>!g.includes(e)&&"invisible"!==e.style),i=t=>e.reduce((e,i)=>e+w(t,i.points),0);O=D.reduce((e,{points:t})=>e+i(t),0)<=D.reduce((e,{edge:t})=>e+i(t.points),0)}if(!O){x();continue}let W=D.map(({edge:e,points:t})=>({edge:{...e,points:t},points:t}));if(c&&W.some(({edge:e})=>e.label)){let n=new Map(D.map(({edge:e},t)=>[e,W[t].edge]));if(!tD(W,e,t.map(e=>n.get(e)??e),i,r.direction,o)){x();continue}}else t_(W,e,r.direction,o);for(let e=0;e<D.length;e++){let{edge:t,points:i}=D[e];t.points=i,t.labelPosition=W[e].edge.labelPosition,t.routeCertificate=void 0}m(D.map(e=>e.edge),n)}}(e.nodes,e.edges,e.groups,e.graph,e.bundled,e.style)}},{id:"applySymmetricParallelEdgeLanes",after:["clipEdgeToShape"],mutates:["edges"],determinism:"in-place",enabled:e=>(!!e.elkResult||e.mergeEdges)&&iu(e.edges,!0),mayChangeMetrics:{symErr:"improve-only",crossings:"improve-only"},run:e=>{!function(e,t,i,r,n,o){let a=new Map(e.map(e=>[e.id,e])),l=eF(r.direction),d=new Map;for(let e of t){if(e.source===e.target||!e.label)continue;let t=a.get(e.source),r=a.get(e.target);if(!t||!r||!em.has(t.shape)||!em.has(r.shape)||Q(t,i)||Q(r,i))continue;let n=`${e.source}\0${e.target}`;d.has(n)||d.set(n,[]),d.get(n).push(e)}for(let i of d.values()){if(i.sort((e,t)=>(e.edgeIndex??0)-(t.edgeIndex??0)),2!==i.length)continue;let d=a.get(i[0].source),g=a.get(i[0].target),u=i.map(e=>tC(e,{x:0,y:0},o)),f=u.map(e=>e.width),c=u.map(e=>e.height),p=(l.isHorizontal?Math.max(...c):Math.max(...f))/2+18,y=[[1/3,2/3],[1/6,1/3],[2/3,5/6]],x=[p,p+16,p+32,p+52].map(e=>({lanes:l.isHorizontal?[Math.min(d.y,g.y)-e,Math.max(d.y+d.height,g.y+g.height)+e]:[Math.min(d.x,g.x)-e,Math.max(d.x+d.width,g.x+g.width)+e],sourceSlots:y[0],targetSlots:y[0]}));if("diamond"===d.shape)for(let e of[...x])for(let t of y)for(let i of y){let n=i.map(e=>g[l.cross]+eH(g,r.direction)*e),o=t.map(e=>d[l.cross]+eH(d,r.direction)*e);for(let r of[e.lanes,[e.lanes[0],n[1]],[n[0],e.lanes[1]],[e.lanes[0],o[1]],[o[0],e.lanes[1]]])x.push({lanes:r,sourceSlots:t,targetSlots:i})}for(let{lanes:a,sourceSlots:l,targetSlots:u}of x){let f=[],c=!0;for(let t=0;t<i.length;t++){let n=i[t],o=h(es(es(function(e,t,i,r,n,o,a=(n+1)/(o+1),s=a){let l=eF(i);if(l.isHorizontal){let i={x:"E"===l.sourceSide?e.x+e.width:e.x,y:e.y+e.height*a},n={x:"W"===l.targetSide?t.x:t.x+t.width,y:t.y+t.height*s},o=Math.min(28,Math.max(14,.18*Math.abs(n.x-i.x))),d=i.x+l.sign*o,g=n.x-l.sign*o;return h([i,{x:d,y:i.y},{x:d,y:r},{x:g,y:r},{x:g,y:n.y},n])}let d={x:e.x+e.width*a,y:"S"===l.sourceSide?e.y+e.height:e.y},g={x:t.x+t.width*s,y:"N"===l.targetSide?t.y:t.y+t.height},u=Math.min(28,Math.max(14,.18*Math.abs(g.y-d.y))),f=d.y+l.sign*u,c=g.y-l.sign*u;return h([d,{x:d.x,y:f},{x:r,y:f},{x:r,y:c},{x:g.x,y:c},g])}(d,g,r.direction,a[t],t,i.length,l[t],u[t]),d,!0),g,!1));if(!s(d,o[0])||!s(g,o.at(-1))||!eu(o,e,new Set([d.id,g.id]))){c=!1;break}f.push({edge:n,points:o,label:tI(o)})}if(c){if("diamond"===d.shape){let n=t.filter(e=>!i.includes(e));if(tQ(f[0].points,f[1].points)||f.some(e=>n.some(t=>tQ(e.points,t.points))))continue;let a=f.map(t=>{let i=[...n,...f.filter(e=>e!==t).map(e=>({...e.edge,points:e.points}))];return tB(t.edge,t.points,e,r.direction,o).filter(e=>!tK(t.edge,{x:e.box.x,y:e.box.y,w:e.box.width,h:e.box.height},i))}),s;for(let e of a[0]){let t=a[1].find(t=>!eX(e.box,t.box,tL(o)));if(t){s=[e,t];break}}if(!s)continue;f[0].label=s[0].point,f[1].label=s[1].point}for(let e of f){let i=tC(e.edge,e.label,o);"diamond"!==d.shape&&tK(e.edge,{x:i.x,y:i.y,w:i.width,h:i.height},t)&&(c=!1)}if(!(!c||!0!==tJ(t,f,o))){for(let{edge:e,points:t,label:i}of f)e.points=t,e.labelPosition=i,e.routeCertificate=void 0;m(f.map(e=>e.edge),n);break}}}}}(e.nodes,e.edges,e.groups,e.graph,e.bundled,e.style)}},{id:"applyParallelDuplicateLanes",after:["clipEdgeToShape"],mutates:["edges"],determinism:"in-place",enabled:e=>(!!e.elkResult||e.mergeEdges)&&iu(e.edges),mayChangeMetrics:{crossings:{worsenBy:1,whenImproves:"parallelOverlaps",perImprovement:!0},parallelOverlaps:"improve-only"},run:e=>{!function(e,t,i,r,n,o,a){let l=new Map(e.map(e=>[e.id,e])),d=eF(r.direction),g={allowCrossingsForOverlap:!0,...a?{labelClearance:{nodes:e,style:a}}:{}},u=e=>d.isHorizontal?e.height:e.width,f=(e,t)=>d.isHorizontal?{x:e,y:t}:{x:t,y:e},c=e=>e[d.main]+(d.isHorizontal?e.width:e.height),p=e=>e[d.main],y="E"===d.sourceSide||"S"===d.sourceSide,x="W"===d.targetSide||"N"===d.targetSide,b=(e,t)=>y!==t?c(e):p(e),w=(e,t)=>x!==t?p(e):c(e),M=new Set,S=(e,t)=>{for(let i=1;i<e.points.length;i++){let r=e.points[i-1],n=e.points[i],o=.5>Math.abs(r.x-n.x),a=.5>Math.abs(r.y-n.y);if(!(!o&&!a))for(let e=1;e<t.points.length;e++){let i=t.points[e-1],s=t.points[e];if(o){if(Math.abs(i.x-s.x)>=.5||Math.abs(r.x-i.x)>=1)continue;if(Math.min(Math.max(r.y,n.y),Math.max(i.y,s.y))-Math.max(Math.min(r.y,n.y),Math.min(i.y,s.y))>1)return!0}else if(a){if(Math.abs(i.y-s.y)>=.5||Math.abs(r.y-i.y)>=1)continue;if(Math.min(Math.max(r.x,n.x),Math.max(i.x,s.x))-Math.max(Math.min(r.x,n.x),Math.min(i.x,s.x))>1)return!0}}}return!1},v=new Map;for(let e of t){if(e.source===e.target)continue;let t=l.get(e.source),r=l.get(e.target);if(!t||!r||!em.has(t.shape)||!em.has(r.shape)||Q(t,i)||Q(r,i))continue;let n=(w(r,!1)-b(t,!1))*d.sign,o=(b(t,!0)-w(r,!0))*d.sign;if(n<=16&&o<=16)continue;let a=`${e.source}\0${e.target}`;v.has(a)||v.set(a,[]),v.get(a).push(e)}let k=(e,t)=>{let i=tC(e,t,o),r=eC(e,o.lineWidth??1);return{x:i.x-r,y:i.y-r,width:i.width+2*r,height:i.height+2*r}},E=(i,a,c,p,y=0)=>{i.sort((e,t)=>(e.edgeIndex??0)-(t.edgeIndex??0));let x=l.get(i[0].source),S=l.get(i[0].target),v=b(x,a),E=w(S,a),N=i.length;if(c<4)return!1;let P=i.every(e=>e.label)?Math.max(c,...i.map(e=>{let t=k(e,{x:0,y:0});return(d.isHorizontal?t.width:t.height)+tL(o)})):c,C="target"===p,I=x[d.cross]+u(x)/2+y,L=S[d.cross]+u(S)/2+y,R=[],O=[];for(let e=0;e<N;e++){let t=I+(e-(N-1)/2)*c,r=L+(e-(N-1)/2)*c,n=(a?-1:1)*d.sign,o=C?E-n*(16+e*P):v+n*(16+e*P),s=Math.min(v,E),l=Math.max(v,E);(o<=s+4||o>=l-4)&&(o=(v+E)/2),R.push({edge:i[e],sCross:t,tCross:r}),O.push(o)}R[0].tCross-R[0].sCross>0!==C&&O.reverse();let $=[];for(let t=0;t<N;t++){let{edge:i,sCross:r,tCross:n}=R[t],o=O[t],a=h(es(es(r===n?[f(v,r),f(E,n)]:[f(v,r),f(o,r),f(o,n),f(E,n)],x,!0),S,!1));if(a.length<2||!s(x,a[0])||!s(S,a[a.length-1])||!eu(a,e,new Set([x.id,S.id])))return!1;$.push({edge:i,points:a,label:i.label?tI(a):void 0})}let z=tJ(t,$,o,{allowCrossingsForOverlap:!0});if(!0!==z)return z;if("original"!==p){let n=t.filter(e=>!i.includes(e)),a=[...n,...$.map(e=>({...e.edge,points:e.points}))].flatMap(e=>X(e,o)).flatMap(e=>e.bounds?[{x:e.bounds.x0,y:e.bounds.y0,width:e.bounds.x1-e.bounds.x0,height:e.bounds.y1-e.bounds.y0}]:[]),s=n.filter(e=>e.label).map(e=>k(e,e.labelPosition??eB(e.points)));for(let t of $){if(!t.edge.label)continue;let i=[...n,...$.filter(e=>e!==t).map(e=>({...e.edge,points:e.points}))],l=tB(t.edge,t.points,e,r.direction,o).find(r=>{let n=k(t.edge,r.point);return!e.some(e=>eX(n,e,2))&&!a.some(e=>eX(n,e,0))&&!s.some(e=>eX(n,e,2))&&!tK(t.edge,{x:n.x,y:n.y,w:n.width,h:n.height},i)});if(!l)return!1;t.label=l.point,s.push(k(t.edge,t.label))}}if(g.labelClearance&&!tZ(t,$,g.labelClearance))return!1;for(let{edge:e,points:t,label:i}of $)e.points=t,e.labelPosition=i,e.routeCertificate=void 0,M.add(e);return m($.map(e=>e.edge),n),!0};for(let r of v.values()){if(r.length<2||!r.some(e=>e.label)||!r.some(e=>e.label&&r.some(t=>t!==e&&S(e,t)))||r.every(e=>e.label)&&0===$({nodes:[],edges:r},o).labelLabel)continue;let n=l.get(r[0].source),a=l.get(r[0].target);if(!n||!a)continue;let s=!((w(a,!1)-b(n,!1))*d.sign>16),h=(Math.min(u(n),u(a))-10)/(r.length-1),g=Math.max(14,...r.filter(e=>e.label).map(e=>{let t=k(e,{x:0,y:0});return(d.isHorizontal?t.height:t.width)/2+3})),f=(n,o)=>{let a=E(r,s,n,o);if(!0===a)return!0;if("marker-blocked"!==a||!tX(e,t,i))return!1;let l=(h-n)*(r.length-1)/2;return l>0&&N(0).some(e=>{let t=(2*e-1)*l;return 0!==t&&!0===E(r,s,n,o,t)})};if(!(g<=h&&(f(g,"source")||f(g,"target")))&&!f(Math.min(14,h),"original")&&r.every(e=>e.label)){let e=Math.min(7,h);f(e,"source")||f(e,"target")||f(e,"original")}}let P=new Map,C=new Map;for(let e of t){if(M.has(e)||e.source===e.target||e.label)continue;let t=l.get(e.source),r=l.get(e.target);if(!t||!r||!em.has(t.shape)||!em.has(r.shape)||Q(t,i)||Q(r,i))continue;let n=t=>{t.has(e.target)||t.set(e.target,[]),t.get(e.target).push(e)};(w(r,!1)-b(t,!1))*d.sign>16?n(P):(b(t,!0)-w(r,!0))*d.sign>16&&n(C)}let I=(r,a)=>{if(r.length<2)return;let c=new Map;for(let e of r)c.set(e.source,(c.get(e.source)??0)+1);if(![...c.values()].some(e=>e>=2))return;let p=l.get(r[0].target),y=w(p,a),x=p[d.cross]+u(p)/2,M=e=>{let t=l.get(e.source);return t[d.cross]+u(t)/2};r.sort((e,t)=>M(e)-M(t)||(e.edgeIndex??0)-(t.edgeIndex??0));let S=r.length,v=Math.min(14,(u(p)-10)/(S-1));if(v<4)return;let k=new Map;for(let e of r)k.has(e.source)||k.set(e.source,[]),k.get(e.source).push(e);let E=[],N=[];for(let e=0;e<S;e++){let t=r[e],i=l.get(t.source),n=b(i,a),o=x+(e-(S-1)/2)*v,s=k.get(t.source),h=s.length>1?Math.min(v,(u(i)-10)/(s.length-1)):0,g=i[d.cross]+u(i)/2+(s.indexOf(t)-(s.length-1)/2)*h,f=n+(a?-1:1)*d.sign*(16+e*v),c=Math.min(n,y),p=Math.max(n,y);(f<=c+4||f>=p-4)&&(f=(n+y)/2),E.push({edge:t,source:i,exitMain:n,sCross:g,tCross:o}),N.push(f)}for(let e=0;e<S;){let t=e;for(;t+1<S&&r[t+1].source===r[e].source;)t++;if(t>e&&E[e].tCross-E[e].sCross>0){let i=N.slice(e,t+1).reverse();for(let r=e;r<=t;r++)N[r]=i[r-e]}e=t+1}let P=t=>{let i=[];for(let r=0;r<S;r++){let{edge:n,source:a,exitMain:l}=E[r],d=E[r].sCross,g=E[r].tCross+t,u=N[r],c;c=es(c=d===g?[f(l,d),f(y,g)]:[f(l,d),f(u,d),f(u,g),f(y,g)],a,!0);let m=ek(c=h(c=es(c,p,!1)),D(n,o));if(!m||(c=m).length<2||!s(a,c[0])||!s(p,c[c.length-1])||!eu(c,e,new Set([a.id,p.id])))return;i.push({edge:n,points:c})}return i},C=P(0);if(!C)return;let I=tJ(t,C,o,g);if(!0!==I){if("marker-blocked"!==I||!tX(e,t,i))return;let r=-1/0,n=1/0;for(let e of E)r=Math.max(r,e.source[d.cross]+5-e.sCross,p[d.cross]+5-e.tCross),n=Math.min(n,e.source[d.cross]+u(e.source)-5-e.sCross,p[d.cross]+u(p)-5-e.tCross);if(!Number.isFinite(r)||!Number.isFinite(n)||r>0||n<0)return;let a=tU(),s={...g,labelClearance:{nodes:e,style:o}},l;for(let d of[r,n]){if(a.remaining<=0)break;if(0===d)continue;let r=P(d);if(!r||!0!==tJ(t,r,o,s))continue;let n=new Map(r.map(e=>[e.edge,e.points]));if(tG(e,t.map(e=>n.has(e)?{...e,points:n.get(e)}:e),e,t,i,o,a)){l=r;break}}if(!l)return;C=l}for(let{edge:e,points:t}of C)e.points=t,e.labelPosition=void 0,e.routeCertificate=void 0;m(C.map(e=>e.edge),n)};for(let e of P.values())I(e,!1);for(let e of C.values())I(e,!0)}(e.nodes,e.edges,e.groups,e.graph,e.bundled,e.style,e.elkResult?void 0:e.style)}},{id:"collapseTinyBundledHitches",after:["applySymmetricFanoutEmissions","applySymmetricParallelEdgeLanes","applyParallelDuplicateLanes"],mutates:["edges"],determinism:"in-place",mayChangeMetrics:{bends:"improve-only"},run:e=>{eS(e.nodes,e.edges,e.bundled)}},{id:"reassignBundledSiblingLabels",after:["collapseTinyBundledHitches"],mutates:["edges"],determinism:"in-place",run:e=>{!function(e,t,i,r,n,o=[]){let a=new Map(e.map(e=>[e.id,e])),s=new Map;for(let e of t)i.has(e)&&e.label&&V(e,a,r)&&(s.has(e.source)||s.set(e.source,[]),s.get(e.source).push(e));for(let i of s.values()){if(i.length<2||i.length>3||new Set(i.map(e=>e.target)).size<i.length)continue;let s=[...i].sort((e,t)=>{let i=a.get(e.target),n=a.get(t.target);return i&&n?eW(i,r)-eW(n,r):(e.edgeIndex??0)-(t.edgeIndex??0)}),l=a.get(s[0].source);if(l?.shape==="rectangle"&&Q(l,o)){let i=s.map(e=>({edge:{...e},points:e.points})),a=new Map(s.map((e,t)=>[e,i[t].edge]));tD(i,e,t.map(e=>a.get(e)??e),o,r,n)&&s.forEach((e,t)=>{e.labelPosition=i[t].edge.labelPosition})}else t_(s.map(e=>({edge:e,points:e.points})),e,r,n)}}(e.nodes,e.edges,e.bundled,e.graph.direction,e.style,e.groups)}},{id:"applyRouteContracts",after:["reassignBundledSiblingLabels"],mutates:["edges"],determinism:"fixed-point",freezesNodes:!0,mayChangeMetrics:{straight:{worsenBy:1,whenImproves:["hard","crossings","endpointApproaches"],perImprovement:!0},bends:{worsenBy:4,whenImproves:["hard","crossings","endpointApproaches"],perImprovement:!0},portRate:{worsenBy:1,whenImproves:["hard","crossings","bends","endpointApproaches","opposingOverlaps"]}},run:e=>{k({nodes:e.nodes,edges:e.edges,groups:e.groups},e.graph,e.bundled,e.style,e.elkResult?void 0:{preserveSelfLoops:!0,preserveLabels:!0,preserveStraightRoutes:!0})}},{id:"reanchorOffOutlineEndpoints",after:["applyRouteContracts"],mutates:["edges"],determinism:"in-place",run:e=>{ex(e.nodes,e.edges,e.graph,e.style)}},{id:"rerouteEdgesThroughNodes",after:["reanchorOffOutlineEndpoints"],mutates:["edges"],determinism:"in-place",run:e=>{ew(e.nodes,e.edges,e.graph,void 0,e.groups),R({nodes:e.nodes,edges:e.edges,groups:e.groups},e.graph,e.style)}},{id:"repairLabelsOnSharedTrunks",after:["rerouteEdgesThroughNodes"],mutates:["edges"],determinism:"in-place",run:e=>{C({nodes:e.nodes,edges:e.edges,groups:e.groups},e.graph,e.style)}},{id:"repairLabelsOffOwnRoute",after:["repairLabelsOnSharedTrunks"],mutates:["edges"],determinism:"in-place",run:e=>{I({nodes:e.nodes,edges:e.edges,groups:e.groups},e.graph,e.style)}},{id:"separateEdgeLabelPills",after:["repairLabelsOffOwnRoute"],mutates:["edges"],determinism:"in-place",run:e=>{L({nodes:e.nodes,edges:e.edges,groups:e.groups},e.graph,e.style,e.elkResult?void 0:{preserveRouteClearance:!0})}},{id:"closeRouteContracts",after:["separateEdgeLabelPills"],mutates:["edges"],determinism:"fixed-point",mayChangeMetrics:{straight:"improve-only",bends:"improve-only"},run:e=>{O({nodes:e.nodes,edges:e.edges,groups:e.groups},e.graph,e.style)}},{id:"translateGeometryToNonNegativeOrigin",after:["closeRouteContracts"],mutates:["translate"],determinism:"in-place",run:e=>{g(e.nodes,e.edges,e.groups,e.layoutPadding,e.style)}},{id:"placeStateNotes",after:["translateGeometryToNonNegativeOrigin"],mutates:["translate"],determinism:"in-place",enabled:e=>!!e.graph.stateNotes?.length,run:e=>{e.notes=function(e,t,i,r,n,o,a){let s=r.stateNotes??[];if(0===s.length)return[];let l=[],d=e=>{for(let t of e)l.push(t),d(t.children)};d(i);let h=[];for(let t of e)h.push({x:t.x,y:t.y,w:t.width,h:t.height});for(let e of l)h.push({x:e.x,y:e.y,w:e.width,h:e.height});for(let e of t){if("invisible"===e.style)continue;for(let t=1;t<e.points.length;t++){let i=e.points[t-1],r=e.points[t];h.push({x:Math.min(i.x,r.x)-2,y:Math.min(i.y,r.y)-2,w:Math.abs(i.x-r.x)+4,h:Math.abs(i.y-r.y)+4})}let t=e.label?eI(e,n):null;t&&h.push(t)}let g=(e,t)=>e.x<t.x+t.w&&e.x+e.w>t.x&&e.y<t.y+t.h&&e.y+e.h>t.y,u=[];for(let t of s){let i=e.find(e=>e.id===t.target),r=i?void 0:l.find(e=>e.id===t.target),o=i??r;if(!o)continue;let s=eN(e8(t.text,t.textContent),n,"note"),d=s.width+20,f=s.height+16,c=o.y+(o.height-f)/2,p="left"===t.side?o.x-a-d:o.x+o.width+a;for(let e=0;e<h.length+u.length+4;e++){let e={x:p-6,y:c-6,w:d+12,h:f+12},i=h.find(t=>g(e,t))??u.map(e=>({x:e.x,y:e.y,w:e.width,h:e.height})).find(t=>g(e,t));if(!i)break;p="left"===t.side?i.x-6-d:i.x+i.w+6}u.push({id:t.id,target:t.target,side:t.side,text:t.text,...t.textContent?{textContent:t.textContent}:{},textBlock:s,x:p,y:c,width:d,height:f})}let f=0,c=0;for(let e of u)f=Math.min(f,e.x),c=Math.min(c,e.y);if(f<0||c<0){let r=f<0?-f+o:0,n=c<0?-c+o:0,a=e=>{e.x+=r,e.y+=n,e.children.forEach(a)};for(let t of e)t.x+=r,t.y+=n;for(let e of i)a(e);for(let e of t){for(let t of e.points)t.x+=r,t.y+=n;e.labelPosition&&(e.labelPosition.x+=r,e.labelPosition.y+=n)}for(let e of u)e.x+=r,e.y+=n}return u}(e.nodes,e.edges,e.groups,e.graph,e.style,e.layoutPadding,e.stateNoteMargin)}}];function ip(i,r){for(let n of i.nodes)n.labelBlock??=eN(e8(n.label,n.labelContent),r,"node"),!n.icon||n.iconFallbackBlock||t(n.icon)||(n.iconFallbackBlock=th(e(n.icon),{fontSize:10,fontWeight:400}));for(let e of i.edges)void 0!==e.label&&(e.labelBlock??=eN(e8(e.label,e.labelContent),r,"edge"));let n=e=>{e.labelBlock??=eN(e8(e.label,e.labelContent),r,"group"),e.headerHeight=ih(e,r,e.labelBlock),e.children.forEach(n)};i.groups.forEach(n)}function iy(e,t){let i={nodes:e.nodes,edges:e.edges,groups:e.groups,width:0,height:0};return W(e.graph,i,t,e.style,e.bundled)}function im(e,t,i=!1,r=eO.padding,n=e1({}),o=18){let a=[],s=[],l=new Set;for(let e of t.subgraphs)!function e(t,i){for(let r of(i.add(t.id),t.children))e(r,i)}(e,l);return function e(t,i,r,n,o,a,s){if(t.children)for(let l of t.children){let t=(l.x??0)+a,d=(l.y??0)+s,h=l.width??0,g=l.height??0;if(r.has(l.id)){let a=[];e(l,i,r,n,a,t,d);let s=eV(i.subgraphs,l.id),u=s?.stateComposite?eK(l.id,i):void 0;o.push({id:l.id,label:s?.label??"",...s?.labelContent?{labelContent:s.labelContent}:{},x:t,y:d,width:h,height:g,children:a,...s?.headerMinHeight===void 0?{}:{headerMinHeight:s.headerMinHeight},...s?.concurrencyRegion?{concurrencyRegion:!0}:{},...u?{inlineStyle:u}:{}})}else{let a=i.nodes.get(l.id);if(a){let e=eq(l.id,i),r=i.classAssignments.get(l.id),o=r?r.split(/\s+/).filter(Boolean):void 0;n.push({id:l.id,label:a.label,...a.labelContent?{labelContent:a.labelContent}:{},...a.labelBlock?{labelBlock:a.labelBlock}:{},shape:a.shape,...void 0!==a.floatingNoteId?{floatingNoteId:a.floatingNoteId}:{},...void 0!==a.semanticShape?{semanticShape:a.semanticShape}:{},x:t,y:d,width:h,height:g,inlineStyle:e,classNames:o,...a.icon?{icon:a.icon}:{},...a.image?{image:a.image}:{},...a.iconForm?{iconForm:a.iconForm}:{},...a.href?{href:a.href}:{}})}l.children&&l.children.length>0&&e(l,i,r,n,o,t,d)}}}(e,t,l,a,s,0,0),ix({width:e.width??800,height:e.height??600,nodes:a,edges:[],groups:s},t,i,r,n,o,e)}function ix(e,t,i,r,n,o,a,s){let{nodes:l,edges:d,groups:h}=e,g=ez(h),u={elkResult:a,graph:t,nodes:l,edges:d,groups:h,notes:[],margins:g.length>0?{leftX:Math.min(...g.map(e=>e.x))-20,rightX:Math.max(...g.map(e=>e.right))+20}:void 0,bundled:new Set,genericBundled:!1,mergeEdges:i,style:n,layoutPadding:r,stateNoteMargin:o,frozen:!1};if(s)for(let e of s)u.bundled.add(d[e]);ip(u,n),function(e,t,i={}){let r=new Set,n=e.frozen;for(let o of t){if(o.enabled&&!o.enabled(e)){r.add(o.id);continue}for(let e of o.after)if(!r.has(e))throw new ty(o.id,"ordering",`LayoutPass ordering: '${o.id}' must run after '${e}', which has not run`);let t=Object.entries(o.mayChangeMetrics??{}),a=e=>"improve-only"!==e&&e.whenImproves?"string"==typeof e.whenImproves?[e.whenImproves]:e.whenImproves:[],s=[];for(let[e,i]of t)for(let t of(s.includes(e)||s.push(e),a(i)))s.includes(t)||s.push(t);let l=o.proposal?s.includes("hard")?[...s]:[...s,"hard"]:s;if((t.length||o.proposal)&&!i.measureMetrics)throw new ty(o.id,"measurement",`Layout pass '${o.id}' declares metric budgets but no geometry measurement was supplied`);let d=(t=s)=>{try{return i.measureMetrics(e,t)}catch(e){throw e instanceof ty?e:new ty(o.id,"measurement",`Layout pass '${o.id}' could not measure its declared geometry: ${e instanceof Error?e.message:String(e)}`)}},h=t.length||o.proposal?d(l):void 0,g=n?tx(e).map(({id:e,x:t,y:i,width:r,height:n})=>({id:e,x:t,y:i,width:r,height:n})):void 0,u=n?(e.edges??[]).map(e=>({points:e.points?.map(e=>({...e})),labelPosition:e.labelPosition?{...e.labelPosition}:void 0,certificate:e.routeCertificate})):void 0,f=(e=!1)=>{let i;if(h){let r=d(e?l:s),n=e=>{let t=h[e],i=r[e];if(void 0===t||void 0===i||!Number.isFinite(t)||!Number.isFinite(i))throw new ty(o.id,"measurement",`Layout pass '${o.id}' has no finite measurement for ${e}`);return("straight"===e||"portRate"===e?-1:1)*(i-t)};for(let[s,l]of e&&o.proposal?[...t,["hard","improve-only"]]:t){let e=Math.max(0,...a(l).map(e=>-n(e))),t="improve-only"===l||l.whenImproves&&e<=1e-6?0:l.worsenBy*(l.perImprovement?Math.floor(e+1e-6):1);if(n(s)>t+1e-6){let e=new tm(o.id,s,h[s],r[s],t);if("hard"===s)throw e;i??=e}}}return i},c=()=>{if(g){let t=tx(e),i=o.mutates.includes("translate"),r=i&&g[0]&&t[0]?t[0].x-g[0].x:0,n=i&&g[0]&&t[0]?t[0].y-g[0].y:0,a=(e,t)=>i?1e-6>=Math.abs(t.x-e.x-r)&&1e-6>=Math.abs(t.y-e.y-n):e.x===t.x&&e.y===t.y;if(t.length!==g.length||!e.frozen)throw new ty(o.id,"freeze",`LayoutPass freeze: '${o.id}' changed frozen geometry membership or state`);for(let e=0;e<g.length;e++){let i=g[e],r=t[e];if(i.id!==r.id||i.width!==r.width||i.height!==r.height||!a(i,r))throw new ty(o.id,"freeze",`LayoutPass freeze: '${o.id}' moved frozen geometry without a uniform translation`)}if(u){if((e.edges?.length??0)!==u.length)throw new ty(o.id,"freeze",`LayoutPass freeze: '${o.id}' changed frozen edge membership`);for(let t=0;t<u.length;t++){let r=u[t],n=e.edges[t],s=r.points?.length===n.points?.length&&(r.points??[]).every((e,t)=>n.points?.[t]&&a(e,n.points[t]));if(i){if(!s||!!r.labelPosition!=!!n.labelPosition||r.labelPosition&&!a(r.labelPosition,n.labelPosition))throw new ty(o.id,"freeze",`LayoutPass freeze: '${o.id}' did not translate all frozen routes and labels uniformly`)}else if(!s&&(!o.mutates.includes("edges")||void 0===n.routeCertificate||n.routeCertificate===r.certificate))throw new ty(o.id,"certificate",`LayoutPass certificate: '${o.id}' rewrote edge geometry after the route-contract freeze without re-issuing routeCertificate`)}}}},p=o.run(e);if(p&&!o.proposal)throw new ty(o.id,"metric-budget",`Layout pass '${o.id}' returned a rollback without declaring a cosmetic proposal`);let y=f();if(c(),y){if(!p)throw y;p();let e=f(!0);if(e)throw e;c()}o.freezesNodes&&(e.frozen=!0),n||=e.frozen,r.add(o.id),i.onAfterPass?.(o,e)}}(u,ic,{measureMetrics:iy});let f=e.width,c=e.height,p=eJ.width;for(let e of l)f=Math.max(f,e.x+e.width+r),c=Math.max(c,e.y+e.height+r);for(let e of ez(h))f=Math.max(f,e.right+r),c=Math.max(c,e.bottom+r);for(let e of d){for(let t of e.points)f=Math.max(f,t.x+p+r),c=Math.max(c,t.y+p+r);let t=e.labelBlock?eI(e,n):null;t&&(f=Math.max(f,e.labelPosition.x+60+r,t.x+t.w+r),c=Math.max(c,e.labelPosition.y+20+r,t.y+t.h+r))}for(let e of u.notes)f=Math.max(f,e.x+e.width+r),c=Math.max(c,e.y+e.height+r);return{genericBundled:u.genericBundled,positioned:{width:f,height:c,nodes:l,edges:d,groups:h,...u.notes.length>0?{notes:u.notes}:{}}}}function ib(e,t={}){eY(e);let i=t.graphLayout?td(t,()=>{let i=e1(t,t.stateVisual?.styleDefaults,t.styleFace);return o(e,t,i,iv)},()=>ik(e,t),!0,(e,t)=>{e.layoutDecision=t}):ik(e,t),r=e1(t,t.stateVisual?.styleDefaults,t.styleFace);ip(i,r);let n=e2(t.diagramTitle,e1(t,t.stateVisual?.styleDefaults,t.styleFace));if(!n)return i;let a=t.padding??eO.padding;if(0===i.width&&0===i.height)return Object.assign(i,e5(n,a));(function(e,t){let i=e=>{for(let r of(e.y+=t,e.children))i(r)};for(let i of e.nodes)i.y+=t;for(let t of e.groups)i(t);for(let i of e.edges){for(let e of i.points)e.y+=t;i.labelPosition&&(i.labelPosition.y+=t)}for(let i of e.notes??[])i.y+=t})(i,n.height),i.height+=n.height,i.width=Math.max(i.width,n.width+2*a),i.title=e6(n,i.width,a);let s=tS(i,r);if(s.length)throw new te([{strategy:"final-title-projection",violations:s}]);return i}function iw(e,t={}){eY(e);let i=ik(e,t,"placement");return ip({...i,edges:[]},e1(t,void 0,t.styleFace)),i}function iM(e,t={}){eY(e);let i=e1(t,void 0,t.styleFace);return a(e,t,i,iv)}function iS(e,t,r,o=!1){let a=t.stateVisual,s={...eO,...t,...a?{stateVisual:a}:{}},l=e1(t,a?.styleDefaults,t.styleFace),d=ie(e,s,l);if(o&&!a){let t=((...e)=>n().indexedForestLayout(...e))(e,d,s.padding,s.nodeSpacing,s.layerSpacing);if(!t)throw Error("Graph is ineligible for indexed forest layout");let i=im(t,e,eO.mergeEdges,s.padding,l,18);return i.genericBundled&&r?.(i.positioned,()=>im(t,e,!1,s.padding,l,18).positioned),i.positioned}if(1===e.nodes.size&&0===e.edges.length&&0===e.subgraphs.length&&!e.stateNotes?.length&&!a&&d.children?.length===1){let t=d.children[0];return im({...d,width:t.width+2*s.padding,height:t.height+2*s.padding,children:[{...t,x:s.padding,y:s.padding}]},e,eO.mergeEdges,s.padding,l,18).positioned}let h,g,u="exception",f=0;for(let t of[{},{"elk.layered.feedbackEdges":"false"},{"elk.layered.feedbackEdges":"false","elk.layered.compaction.postCompaction.strategy":"NONE"},{"elk.layered.feedbackEdges":"false","elk.layered.compaction.postCompaction.strategy":"NONE","elk.layered.crossingMinimization.forceNodeModelOrder":"false","elk.layered.highDegreeNodes.treatment":"false"}]){++f>1&&tu("elk-degradation",u,f);let r=0===Object.keys(t).length?d:ie(e,s,l);Object.keys(t).length>0&&(r.layoutOptions={...r.layoutOptions,...t});try{let e=i(r);if(iE(e)){g=Error("ELK returned non-finite layout geometry"),u="non-finite-geometry";continue}h=e;break}catch(e){if(e instanceof eG||e instanceof ti)throw e;g=e,u="exception"}}if(!h)throw g;let c=h,p=a?.noteMargin??18,y=im(c,e,eO.mergeEdges,s.padding,l,p);return y.genericBundled&&r?.(y.positioned,()=>im(c,e,!1,s.padding,l,p).positioned),y.positioned}var iv={edgeSelectorIndices:eR,graphEdgeMarkerPaintRegions:X,customTextMeasurementActive:tf,certifyCandidate:tv,retainSelection:tP,countEdgeCrossings:F,countOpposingRouteOverlaps:z,countParallelRouteOverlaps:T,measureLabelConflicts:$,DEFAULTS:eO,LABEL_PILL_PADDING:eP,measureRenderStage:e7,graphTextBlock:eN,resolveLabelContent:e8,groupTitleWidth:id,groupHeaderHeight:ih,estimateNodeSize:t8,resolveNodeInlineStyle:eq,resolveEdgeInlineStyle:eQ,resolveClassInlineStyle:eK,containsNonFiniteNumber:iE,finishGraphGeometry:ix,unsupported:e=>{throw new tl(e)}};function ik(e,t,i){let r=e1(t,t.stateVisual?.styleDefaults,t.styleFace),o=t=>(function e(t,i,r){return t.some(t=>{let n=eV(i.subgraphs,t.id);return void 0!==n&&t.width+.5<id(n,r)||e(t.children,i,r)})})(t.groups,e,r),a=!1!==t.compareRoutePreferences,s=new WeakMap,l=a&&ef(e)&&!iu(e.edges)?(e,t)=>{s.set(e,t)}:void 0,d=e.subgraphs.length>0&&!il(e,t),h=[{strategy:"default",produce:()=>iS(e,t,l),preferNext:o}],g=(t.nodeSpacing??eO.nodeSpacing)>0&&(t.layerSpacing??eO.layerSpacing)>0,u=void 0===t.graphLayout&&e4("indexed-layout")&&g&&!t.stateVisual&&!t.preserveSubgraphChildOrder&&function(e){if(e.nodes.size<2||e.subgraphs.length>0||e.stateNotes?.length||e.edges.length>=e.nodes.size||[...e.nodes.values()].some(e=>"rectangle"!==e.shape))return!1;let t=new Map,i=new Map;for(let r of e.edges){if(void 0!==r.label||(r.length??1)!==1||r.source===r.target||!e.nodes.has(r.source)||!e.nodes.has(r.target)||t.has(r.target))return!1;t.set(r.target,1);let n=i.get(r.source);n?n.push(r.target):i.set(r.source,[r.target])}let r=[...e.nodes.keys()].filter(e=>!t.has(e));for(let e=0;e<r.length;e++)for(let t of i.get(r[e])??[])r.push(t);return r.length===e.nodes.size}(e)&&(n(),1)?{strategy:"indexed-forest",produce:()=>iS(e,t,l,!0),preferNext:o}:void 0;return t.separateHierarchy||h.push({strategy:"separate-hierarchy",produce:()=>iS(e,{...t,separateHierarchy:!0},l),preferNext:o,qualityAlternative:a&&d}),t.disableCorankFanIn||eU("APL_NO_CORANK_FANIN")||(h.push({strategy:"without-corank",produce:()=>iS(e,{...t,disableCorankFanIn:!0},l),preferNext:o,qualityAlternative:a&&t3(e,r).size>0}),t.separateHierarchy||h.push({strategy:"separate-without-corank",produce:()=>iS(e,{...t,separateHierarchy:!0,disableCorankFanIn:!0},l),preferNext:o,qualityAlternative:a&&d})),"placement"===i?function(e,t,i,r){let{selected:n}=tN(e,t,i,r,"placement");tw(e,n.positioned);let{width:o,height:a,nodes:s,groups:l}=n.positioned;return{width:o,height:a,nodes:s,groups:l}}(e,r,h,u):function(e,t,i,r,n){let o=tN(e,t,i,n),a=tP(e,o),s=r(a,o.selected.score);if(!s)return a;let l={...o.selected,strategy:"bundled"},d=tv(e,t,s),h=[{strategy:l.strategy,score:l.score}];d.certified&&h.push({strategy:d.certified.strategy,score:d.certified.score});let g=d.certified?tE(l,d.certified):{selected:l,reason:"alternative-invalid"},u=g.selected.positioned;return tw(e,u),u.certification={...a.certification,preference:{...a.certification.preference,selectedScore:g.selected.score,routing:{strategy:g.selected===l?"bundled":s.strategy,preference:{selectedScore:g.selected.score,reason:g.reason,compared:h}}}},u}(e,r,h,(e,t)=>{let i=s.get(e);if(!(!i||0===t.edgeCrossings&&0===t.labelConflicts))return{strategy:"without-generic-bundling",produce:i,preferNext:o}},u)}function iE(e,t=new Set){return"number"==typeof e?!Number.isFinite(e):!(null===e||"object"!=typeof e||t.has(e))&&(t.add(e),Array.isArray(e)?e.some(e=>iE(e,t)):Object.values(e).some(e=>iE(e,t)))}export{ib as a,iw as b,iM as c};
@@ -0,0 +1 @@
1
+ import{Z as e,a as t,d as n}from"./chunk-X2UYKWKM.js";import{Rb as i}from"./chunk-Z3FDIVLN.js";function r(e){return t=>e(t)}function o(e){return n(e,t=>e(t))}function s(e,t={}){return{positioned:e,...t}}function a(e,n){let i=Object.freeze({...e,...n,contractVersion:2,capabilityEvidence:Object.freeze([])});return t(i),i}function u(e){if(!Number.isFinite(e))throw RangeError(`expected a finite number, got ${String(e)}`);return e}e.error.code,e.error.severity,e.warn.code,e.warn.severity,e.error.code,e.error.tier,e.warn.code,e.warn.tier;var l,f={font:"Inter",padding:40,nodeSpacing:28,layerSpacing:i,mergeEdges:!0,thoroughness:3};function d(e){let t=new Map,n=[],i=e=>{let i=t.get(e);return void 0===i&&(i=n.length,t.set(e,i),n.push([])),i};for(let t of e)n[i(t.source)].push(i(t.target));let r=new Uint32Array(n.length),o=[],s=0;return(e,i)=>{if(e===i)return!0;let a=t.get(e),u=t.get(i);if(void 0===a||void 0===u)return!1;for(0xffffffff==++s&&(r.fill(0),s=1),o.length=0,o.push(a),r[a]=s;o.length;)for(let e of n[o.pop()]){if(e===u)return!0;r[e]!==s&&(r[e]=s,o.push(e))}return!1}}function h(e){let t=[];for(let n of e)t.push({x:n.x,y:n.y,right:n.x+n.width,bottom:n.y+n.height}),t.push(...h(n.children));return t}function c(e){let t=0;for(let n=1;n<e.length;n++){let i=e[n].x-e[n-1].x,r=e[n].y-e[n-1].y;t+=Math.sqrt(i*i+r*r)}return t}function g(e){return function(e,t){if(0===e.length)return{point:{x:0,y:0},segmentIndex:0,pathDistance:0};if(1===e.length)return{point:e[0],segmentIndex:0,pathDistance:0};let n=Math.max(0,Math.min(c(e),t)),i=0;for(let t=1;t<e.length;t++){let r=e[t].x-e[t-1].x,o=e[t].y-e[t-1].y,s=Math.sqrt(r*r+o*o);if(0!==s){if(n<=s){let a=n/s;return{point:{x:e[t-1].x+a*r,y:e[t-1].y+a*o},segmentIndex:t,pathDistance:i+n}}n-=s,i+=s}}return{point:e[e.length-1],segmentIndex:e.length-1,pathDistance:i}}(e,c(e)/2).point}function p(e){return"LR"===e?{isHorizontal:!0,main:"x",cross:"y",sign:1,sourceSide:"E",targetSide:"W"}:"RL"===e?{isHorizontal:!0,main:"x",cross:"y",sign:-1,sourceSide:"W",targetSide:"E"}:"BT"===e?{isHorizontal:!1,main:"y",cross:"x",sign:-1,sourceSide:"N",targetSide:"S"}:{isHorizontal:!1,main:"y",cross:"x",sign:1,sourceSide:"S",targetSide:"N"}}function y(e){return{x:e.x+e.width/2,y:e.y+e.height/2}}function m(e,t){return e[p(t).main]}function x(e,t){return e[p(t).cross]}function b(e,t){return p(t).isHorizontal?e.height:e.width}function w(e,t){return p(t).isHorizontal?e.width:e.height}function v(e,t){return x(e,t)+b(e,t)/2}function S(e,t){return m(e,t)+w(e,t)/2}function $(e,t,n=0){return e.x<t.x+t.width+n&&e.x+e.width+n>t.x&&e.y<t.y+t.height+n&&e.y+e.height+n>t.y}function I(e,t){for(let n of e){if(n.id===t)return n;let e=I(n.children,t);if(e)return e}}function M(e){let t=globalThis.process?.env?.[e];return"1"===t||"true"===t}function E(...e){M("APL_DEBUG")&&console.error(...e)}function j(e){let t=new Map;return e.map(e=>{let n=`${e.source}->${e.target}`,i=t.get(n)??0;return t.set(n,i+1),`${n}#${i}`})}function k(e){let t=new Map;j(e).forEach((e,n)=>{t.set(e,n),e.endsWith("#0")&&t.set(e.slice(0,-2),n)});for(let n=e.length-1;n>=0;n--){let i=e[n].id;i&&t.set(i,n)}return t}function z(e,t,n,i="middle"){if(e)return{x:u(t-("start"===i?0:"end"===i?e.width:e.width/2)),y:u(n-e.height/2),w:u(e.width),h:u(e.height)}}function D(e,t,n,i,r="middle"){let o=z(e,t,n,r);return o?{labelBounds:o,labelContainer:{x:u(i.x),y:u(i.y),w:u(i.width),h:u(i.height)}}:{}}function B(e){return{id:e.id,x:u(e.x),y:u(e.y),w:u(e.width),h:u(e.height),shape:e.shape,label:e.label,...D(e.labelBlock,e.x+e.width/2,e.y+e.height/2,e)}}function H(e,t={}){let n=e.edges.map((e,t)=>({value:e,index:t})).sort((e,t)=>(e.value.edgeIndex??e.index)-(t.value.edgeIndex??t.index)).map(e=>e.value),i=j(n),r=k(n),o=new Set(e.nodes.map(e=>e.id)),s=[...e.groups];for(let e of s)o.add(e.id),s.push(...e.children);let a=new Map(n.map((e,t)=>{let n=e.id,s=i[t],a=s.replace(/#0$/,"");return[e,n&&!o.has(n)&&r.get(n)===t?n:r.get(a)===t?a:s]}));return{version:1,nodes:e.nodes.map(B),edges:e.edges.map(e=>{var n,i;let r;return n=a.get(e),i=!0===t.debug,r=e.label?e.labelPosition??g(e.points):void 0,{id:n,from:e.source,to:e.target,path:e.points.map(e=>[u(e.x),u(e.y)]),..."invisible"===e.style?{visibility:"hidden"}:{},label:e.label&&r?{x:u(r.x),y:u(r.y),text:e.label,bounds:z(e.labelBlock,r.x,r.y)}:void 0,...i&&e.routeCertificate?{route:e.routeCertificate}:{}}}),groups:function(e,t){let n=[],i=(e,t)=>t.x>=e.x-.5&&t.y>=e.y-.5&&t.x+t.width<=e.x+e.width+.5&&t.y+t.height<=e.y+e.height+.5,r=(e,o)=>{let s=e.nodeIds?new Set(e.nodeIds):void 0,a=t.filter(t=>s?s.has(t.id):i(e,t)&&!e.children.some(e=>i(e,t))).map(e=>e.id);for(let t of(n.push({id:e.id,x:u(e.x),y:u(e.y),w:u(e.width),h:u(e.height),members:a,label:e.label,...o?{parentId:o}:{}}),e.children))r(t,e.id)};for(let t of e)r(t);return n}(e.groups,e.nodes),bounds:{w:u(e.width),h:u(e.height)}}}function A(e){return l?.family===e}function N(e,t,n,i){let r=l;l={family:e,observer:t,mutations:i?.mutations?new Set(i.mutations):void 0};try{let e=n();if(null!==e&&"object"==typeof e&&"then"in e&&"function"==typeof e.then)throw Promise.resolve(e).catch(()=>{}),TypeError("Parser observation scopes must be synchronous");return e}finally{l=r}}function O(e,t){let n=l;if(!(!n||n.family!==e)){l=void 0;try{n.observer(t)}finally{l=n}}}function L(e,t,n,i){A(e)&&O(e,{family:e,unit:"statement",kind:t,text:n,...i?{source:{...i}}:{}})}function P(e,t,n,i){A(e)&&O(e,{family:e,unit:"token",kind:t,text:n,...i?{source:{...i}}:{}})}function R(e,t,n,i){A(e)&&(l?.mutations&&!l.mutations.has(t)||O(e,{family:e,unit:"mutation",kind:t,value:function e(t,n=new Map,i="$"){let r;if(null==t)return null;if("number"==typeof t)return Number.isFinite(t)?t:{$number:String(t)};if("string"==typeof t||"boolean"==typeof t)return t;if("object"!=typeof t)return String(t);let o=n.get(t);if(void 0!==o)return{$ref:o};if(n.set(t,i),t instanceof Date)r=t.toISOString();else if(t instanceof Map)r=[...t].map(([t,r],o)=>[e(t,n,`${i}.${o}.0`),e(r,n,`${i}.${o}.1`)]);else if(t instanceof Set)r=[...t].map((t,r)=>e(t,n,`${i}.${r}`));else if(Array.isArray(t))r=t.map((t,r)=>e(t,n,`${i}.${r}`));else{let o=Object.create(null);for(let[r,s]of Object.entries(t))"function"!=typeof s&&void 0!==s&&(o[r]=e(s,n,`${i}.${r}`));r=o}return n.delete(t),r}(n),...i?{source:{...i}}:{}}))}export{r as a,o as b,s as c,a as d,A as e,N as f,L as g,P as h,R as i,u as j,f as k,d as l,h as m,c as n,g as o,p as p,y as q,m as r,x as s,b as t,w as u,v as v,S as w,$ as x,I as y,M as z,E as A,k as B,z as C,D as D,H as E};
@@ -0,0 +1 @@
1
+ import{Q as t}from"./chunk-X2UYKWKM.js";import{g as e}from"./chunk-TYZOZXUJ.js";import{B as a,Mb as r,Ob as o,Wb as n,ab as i}from"./chunk-Z3FDIVLN.js";async function s(){l=(await import("./elk.bundled-L4CADV5W.js")).default}var l,u,c,h,d,f=null,m=null;function p(a){return r("elk",()=>(function(a){if(t(a),!g)return i("elk-layout","bypass","disabled"),w(a);let r=JSON.stringify(a,(t,e)=>void 0===e?"\0undefined":"number"!=typeof e||Number.isFinite(e)?"string"==typeof e&&e.startsWith("\0")?`\0${e}`:e:`\0${e}`),o=b.get(r);if(o)return i("elk-layout","hit"),structuredClone(o);i("elk-layout","miss");let n=w(a);if(r.length<=1048576){let t=Math.max(8*r.length,2*r.length+e(n,8388608));t<=8388608?b.set(r,structuredClone(n),t):i("elk-layout","store-skipped","weight-limit")}else i("elk-layout","store-skipped","key-limit");return n})(a))}var y=globalThis,g=(y.process?.env?.AGENTIC_MERMAID_ELK_CACHE??y.AGENTIC_MERMAID_ELK_CACHE)!=="0",b=new a(64,8388608);function w(t){!function(){if(f)return;let t=function(){if(!l)throw new o("ELK",s);return l}(),e=[],a=globalThis.setTimeout;globalThis.setTimeout=(t,r)=>0===r?(e.push(t),0):a(t,r);let r=globalThis,n="u">typeof r.document;n||(r.document={}),f=new t,n||delete r.document,globalThis.setTimeout=a,e.forEach(t=>t()),m=f.worker.worker}();let e,a,r=m.onmessage;if(m.onmessage=t=>{t.data.error?a=t.data.error:e=t.data.data},m.dispatcher.saveDispatch({data:{id:0,cmd:"layout",graph:t}}),m.onmessage=r,a)throw a;if(!e)throw Error("ELK layout did not return synchronously");return e}function k(t){let e;for(let r of["x","y"]){let o=t[0]?.[r];for(let n=1;n<t.length;n++){var a;let i=t[n][r];i!==o&&(void 0!==o&&Math.abs(i-(a=o))<=Math.min(1e-6,8*Number.EPSILON*Math.max(1,Math.abs(i),Math.abs(a)))?(e??=t.map(t=>({...t})))[n][r]=o:o=i)}}return e??t}async function M(){await (c??=import("./forest-implementation-AEP24AIP.js").then(t=>{u=t}).catch(t=>{throw c=void 0,t}))}function E(){if(!u)throw new o("Forest layout",M);return u}async function v(){await (d??=Promise.all([import("./agentic-producer-core-CC6OOLDW.js"),M()]).then(([t])=>{let e=E();h={candidate:t.layoutNativeGraphCandidate,placement:t.layoutNativeGraphPlacement,architectureSlots:t.improveArchitectureSiblingSlots,graph:t.createMeasuredLayoutCache(a=>t.layoutLayeredGraph(a,e.layoutMeasuredForest,t=>{throw new n(t)}))}}).catch(t=>{throw d=void 0,t}))}function C(){if(!h)throw new o("Agentic layout",v);return h}function A(t){return C().graph(t)}var T=(t,e,a,r)=>C().candidate(t,e,a,A,r),L=(t,e,a,r)=>C().placement(t,e,a,A,r),N=(...t)=>C().architectureSlots(...t);export{p as a,k as b,E as c,A as d,T as e,L as f,N as g};