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
@@ -1,11 +0,0 @@
1
- import{D as e,M as t,n as i,o as r,p as a,ta as s}from"./chunk-CXQWSLJV.js";import"./chunk-LH7HUDKW.js";import"./chunk-5FQ534HP.js";import{a as l,d as o}from"./chunk-SBXYR7Z3.js";import{c as n,e as c}from"./chunk-QQ2U2KAY.js";import{d as d}from"./chunk-5GE2SFLQ.js";import{u as h}from"./chunk-KXPF5KIU.js";import"./chunk-FBL4ONAL.js";import{a as p,b as u,c as y}from"./chunk-HDKHAM2V.js";import{R as b,S as f,a as g,b as m,c as k,d as x,e as w,g as _,i as S,q as v,u as C,w as A,x as I}from"./chunk-SJYDRC6G.js";import{M as M,O as E,aa as T,c as L,ca as D,g as $,qa as W}from"./chunk-GMTB5UTY.js";import{jb as N,kb as z,rb as O,u as P,ub as F,z as B}from"./chunk-EUBVLDYV.js";import{A as j,B as R,G as Y,H as K,y as U}from"./chunk-P7DO3MRP.js";import{Q as H}from"./chunk-N5ELX7LR.js";import"./chunk-5UVGUSD6.js";import"./chunk-CSFUKSU6.js";var X=Object.freeze({id:"block",upstreamId:"block",maturity:"stable",label:"Block",headers:["block","block-beta"],aliases:[],config:{section:"block",keys:["padding","useMaxWidth"],noopKeys:["useMaxWidth"]},identity:{id:"family:block",kind:"family",version:"1.0.0",compatibility:{core:"0.5.1"},provenance:{owner:"agentic-mermaid",source:"built-in"}},collisionPriority:100,semanticChannels:[],semanticRoles:["prelude","title","chrome","node","label","group","edge","edge-label","defs"],scenePrimitiveEvidence:[{role:"prelude",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"title",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"chrome",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"chrome",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"node",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"node",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"label",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"group",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"group",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"edge",primitive:"connector",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"edge-label",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"edge-label",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"defs",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"defs",primitive:"marker",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]}],example:`block
2
- columns 2
3
- A["API"] B["Database"]
4
- A --> B`,detect:H,detectLoose:H}),G=class extends Error{constructor(e,t,i){super(e)}};function q(e,t,i=0,r="",a=!1){let s=t.slice(0,i),l=s.split(`
5
- `).length,o=i-s.lastIndexOf(`
6
- `);return Error(`${e} ${a?"lexical":"parse"} error at line ${l}, column ${o}: ${r||"unrecognized input"}`)}function Q(e){switch(e){case"[]":return"square";case"()":return"round";case"(())":return"circle";case">]":return"rect_left_inv_arrow";case"{}":return"diamond";case"{{}}":return"hexagon";case"([])":return"stadium";case"[[]]":return"subroutine";case"[()]":return"cylinder";case"((()))":return"doublecircle";case"[//]":return"lean_right";case"[\\\\]":return"lean_left";case"[/\\]":return"trapezoid";case"[\\/]":return"inv_trapezoid";case"<[]>":return"block_arrow";default:return"na"}}function V(e){switch(e.trim().slice(-1)){case"x":return"arrow_cross";case"o":return"arrow_circle";case">":return"arrow_point";default:return""}}function Z(e){switch(e.trim().charAt(0)){case"x":return"arrow_cross";case"o":return"arrow_circle";case"<":return"arrow_point";default:return"arrow_open"}}function J(e){return e.includes("==")?"thick":"normal"}function ee(e){return e.includes(".-")?"dotted":"solid"}function et(e,t){let i=e.flat(),r=-1;for(let e of i)if("column-setting"===e.type){r=e.columns??-1;break}return{list:i,at:0,parent:t,children:[],columns:r}}var ei=class{type="block";title;root={id:"root",type:"composite",children:[],columns:-1};blocks=[];edges=[];classes=new Map;byId=new Map;typeStr2Type=Q;edgeStrToEdgeData=V;edgeStrToEdgeStartData=Z;edgeStrToThickness=J;edgeStrToPattern=ee;warn;pending=new Set;workIds=new Set;admitNode(e){this.workIds.has(e)||(M("nodes",this.workIds.size+1),this.workIds.add(e))}edgeCount=new Map;ids=0;colors=0;reservedIds=new Set;constructor(e={}){this.warn=e.warn}generateId(){let e;do e="block_generated_"+ ++this.ids;while(this.reservedIds.has(e)||this.byId.has(e))return this.reservedIds.add(e),w("block")&&S("block","generate-id",e),e}addStyleClass(e,t=""){let i=this.classes.get(e);for(let r of(i||(i={id:e,styles:[],textStyles:[]},this.classes.set(e,i)),t.split(","))){let t=r.indexOf(";"),a=(-1===t?r:r.slice(0,t)+r.slice(t+1)).trim();r.includes("color")&&i.textStyles.push(a.replace("fill","bgFill").replace("color","fill")),i.styles.push(a),w("block")&&S("block","define-class",{id:e,attribute:a})}}addStyle2Node(e,t=""){this.named(e).styles=t.replace(/;\s*$/,"").split(","),w("block")&&S("block","set-node-style",{id:e,styles:this.named(e).styles})}setCssClass(e,t){for(let i of e.split(","))(this.named(i.trim()).classes??=[]).push(t),w("block")&&S("block","add-node-class",{id:i.trim(),className:t})}named(e){let t=this.byId.get(e);return void 0===t&&(this.admitNode(e),t={id:e,type:"na",children:[]},this.byId.set(e,t),this.pending.add(e)),t}unresolvedStyleTargets(){return[...this.pending]}setHierarchy(e){let t=[et(e,this.root)];for(;t.length>0;){let e=t[t.length-1];if(e.at===e.list.length){e.parent.children=e.children,w("block")&&S("block","set-children",{id:e.parent.id,children:e.children.map(e=>e.id)}),t.pop();continue}let i=e.list[e.at++];switch(e.columns>0&&"column-setting"!==i.type&&"number"==typeof i.widthInColumns&&i.widthInColumns>e.columns&&this.warn?.(`Block ${i.id} width ${i.widthInColumns} exceeds configured column width ${e.columns}`),i.type){case"classDef":this.addStyleClass(i.id,i.css);continue;case"applyClass":this.setCssClass(i.id,i.styleClass??"");continue;case"applyStyles":i.stylesStr&&this.addStyle2Node(i.id,i.stylesStr);continue;case"column-setting":e.parent.columns=i.columns??-1,w("block")&&S("block","set-columns",{id:e.parent.id,columns:e.parent.columns});continue;case"edge":{M("edges",this.edges.length+1);let e=(this.edgeCount.get(i.id)??0)+1;this.edgeCount.set(i.id,e),i.id=e+"-"+i.id,this.edges.push(i),w("block")&&S("block","add-edge",i);continue}}i.id??=this.generateId(),"space"!==i.type&&this.admitNode(i.id),i.label||(i.label="composite"===i.type?"":i.id);let r=this.byId.get(i.id),a=void 0===r||this.pending.delete(i.id);a?(r&&(i.classes=r.classes,i.styles=r.styles),"composite"===i.type&&(i.colorIndex=this.colors++),this.byId.set(i.id,i)):("na"!==i.type&&(r.type=i.type),i.label!==i.id&&(r.label=i.label)),w("block")&&S("block","upsert-block",{parentId:e.parent.id,block:this.byId.get(i.id)});let s=i.children;if(i.children=[],"space"===i.type){let t=i.width??1;M("nodes",this.workIds.size+Math.max(t,0));for(let r=0;r<t;r++){let t={...i,id:i.id+"-"+r,width:1,children:[]};this.admitNode(t.id),this.byId.set(t.id,t),e.children.push(t),w("block")&&S("block","attach-space",{parentId:e.parent.id,block:t})}}else a&&(e.children.push(i),w("block")&&S("block","attach-child",{parentId:e.parent.id,block:i}));s&&s.length>0&&t.push(et(s,i))}this.blocks=this.root.children??[],w("block")&&S("block","complete-hierarchy",{root:this.root,edges:this.edges,classes:this.classes})}},er=["$end","INVALID","BLOCK_DIAGRAM_KEY","id-block","COLUMNS","MD_STR","STR","SPACE_BLOCK","DEFAULT","LINKSTYLE","INTERPOLATE","classDef","DEFAULT_CLASSDEF_ID","CLASSDEF_ID","CLASSDEF_STYLEOPTS","class","CLASSENTITY_IDS","STYLECLASS","style","STYLE_ENTITY_IDS","STYLE_DEFINITION_DATA","acc_title","acc_title_value","acc_descr","acc_descr_value","acc_descr_multiline_value","end","NODE_DSTART","NODE_DEND","BLOCK_ARROW_START","BLOCK_ARROW_END","DIR","NODE_ID","LINK","START_LINK","LINK_LABEL","SIZE","EOF"];function ea(e){return e<128?32===e||e>=9&&e<=13:160===e||5760===e||e>=8192&&e<=8202||8232===e||8233===e||8239===e||8287===e||12288===e||65279===e}function es(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||95===e}var el=["right","left","x","y","up","down"],eo=new Uint8Array(128);for(let e of[9,10,11,12,13,32,40,41,45,58,60,61,62,91,123,125])eo[e]=1;function en(e,t){let i=e.length,r=[],a=[],s=[],l=[],o=0,n=0,c=(e,t,i)=>(r.push(e),a.push(t),s.push(n),n=i,!0),d=(t,i)=>c(t,e.slice(n,i),i),h=e=>{l.push(o),o=e},p=()=>{l.length>0&&(o=l.pop())},u=t=>{for(;t<i&&ea(e.charCodeAt(t));)t++;return t},y=t=>{for(;t<i;){let i=e.charCodeAt(t);if(i<48||i>57)break;t++}return t},b=t=>{for(;t<i&&es(e.charCodeAt(t));)t++;return t},f=t=>e.startsWith(t,n)&&!es(e.charCodeAt(n+t.length)),g=()=>(96===e.charCodeAt(n+1)?(h(2),n+=2):(h(1),n++),!0),m=t=>{if(46!==e.charCodeAt(t))return -1;do t++;while(46===e.charCodeAt(t))if(45!==e.charCodeAt(t))return -1;let i=e.charCodeAt(t+1);return 120===i||111===i||62===i?t+2:t+1},k=t=>{let i=e.charCodeAt(t);(120===i||111===i||60===i)&&t++;let r=e.charCodeAt(t);if(46===r)return m(t);if(45!==r&&61!==r)return -1;let a=t+1;for(;e.charCodeAt(a)===r;)a++;if(a-t==1)return 45===r?m(a):-1;let s=e.charCodeAt(a);return 120===s||111===s||62===s?a+1:a-t>=3?a:-1},x=()=>{let t=k(n);if(t>=0)return d(33,u(t));let i=60===e.charCodeAt(n)?n+1:n,r=e.charCodeAt(i),a=e.charCodeAt(i+1);return(45===r&&(45===a||46===a)||61===r&&61===a)&&(h(6),d(34,u(i+2)))},w=t=>{let r=e.indexOf(`
7
- `,n);return -1===r&&(r=i),p(),d(t,r)},_=(t,i)=>{let r=b(n);if(r===n)return!1;for(;44===e.charCodeAt(r);){let e=u(r+1),t=b(e);if(t===e)break;r=t}return o=i,d(t,r)},S=r=>{let a;if(37===r&&37===e.charCodeAt(n+1)){let r=e.indexOf(`
8
- `,n+2);return t?.(n,r<0?i:r),n=r<0?i:r,!0}if(ea(r))return n=u(n+1),!0;switch(r){case 98:if(e.startsWith("block",n)){if(f("block-beta"))return d(2,n+10);if(58===e.charCodeAt(n+5))return d(3,n+6);if(!es(e.charCodeAt(n+5)))return d(2,n+5)}break;case 99:if(e.startsWith("columns",n)){if((a=u(n+7))>n+7){if(e.startsWith("auto",a)&&!es(e.charCodeAt(a+4)))return c(4,"-1",a+4);let t=y(a);if(t>a)return c(4,e.slice(a,t),t)}}else if(e.startsWith("class",n)){let t=e.startsWith("Def",n+5),i=t?n+8:n+5;if((a=u(i))>i)return h(t?7:9),d(t?11:15,a)}break;case 34:return g();case 115:if(e.startsWith("space",n)){if(58===e.charCodeAt(n+5)){let t=y(n+6);if(t>n+6)return c(7,e.slice(n+6,t),t)}if(!es(e.charCodeAt(n+5)))return c(7,"1",n+5)}else if(e.startsWith("style",n)&&(a=u(n+5))>n+5)return h(11),d(18,a);break;case 100:if(f("default"))return d(8,n+7);break;case 108:if(f("linkStyle"))return d(9,n+9);break;case 105:if(f("interpolate"))return d(10,n+11);break;case 97:if(e.startsWith("accTitle",n)){if(a=u(n+8),58===e.charCodeAt(a))return h(13),d(21,u(a+1))}else if(e.startsWith("accDescr",n)){a=u(n+8);let t=e.charCodeAt(a);if(58===t)return h(14),d(23,u(a+1));if(123===t)return h(15),n=u(a+1),!0}break;case 101:if(f("end"))return d(26,u(n+3));break;case 45:return 41===e.charCodeAt(n+1)?(h(3),d(27,n+2)):x();case 61:return x();case 60:return 91===e.charCodeAt(n+1)?(h(4),d(29,n+2)):x();case 40:{let t=e.charCodeAt(n+1),i=45===t||91===t?2:40===t?40===e.charCodeAt(n+2)?3:2:1;return h(3),d(27,n+i)}case 41:case 123:return h(3),d(27,e.charCodeAt(n+1)===r?n+2:n+1);case 62:return h(3),d(27,n+1);case 91:{let t=e.charCodeAt(n+1);return h(3),d(27,91===t||124===t||40===t||92===t||47===t?n+2:n+1)}case 58:{let t=y(n+1);return t>n+1&&c(36,e.slice(n+1,t),t)}}for(a=n;a<i;){let t=e.charCodeAt(a);if(t<128?1===eo[t]:ea(t))break;a++}return a>n&&d(32,a)},v=t=>{let i=e.charCodeAt(n+1),r=0;switch(t){case 34:return g();case 40:r=45===i?2:40===i?40===e.charCodeAt(n+2)?3:2:1;break;case 41:r=41===i?41===e.charCodeAt(n+2)?3:2:93===i?2:1;break;case 125:r=125===i?2:1;break;case 45:r=2*(41===i);break;case 93:r=93===i||41===i||62===i?2:1;break;case 92:case 47:r=2*(93===i)}return 0!==r&&(p(),d(28,n+r))},C=t=>{if(41===t)return p(),p(),c(30,"]>",u(n+1));let i=u(44===t?n+1:n);for(let r of el)if(e.startsWith(r,i)){let a=u(i+r.length);return c(31,e.slice(44===t?i:n,a),a)}return!1};for(;;){if(n>=i){let e=-1;switch(o){case 0:e=37;break;case 1:e=6;break;case 8:e=14;break;case 10:e=17;break;case 12:e=20;break;case 13:e=22;break;case 14:e=24;break;case 15:e=25}n=i,-1!==e&&c(e,"",i);break}let t=e.charCodeAt(n),l=!0;switch(o){case 0:l=S(t);break;case 1:if(34===t)p(),n++;else{let t=e.indexOf('"',n);d(6,-1===t?i:t)}break;case 2:if(96===t)(l=34===e.charCodeAt(n+1))&&(p(),n+=2);else if(34===t)l=!1;else{let t=n+1;for(;t<i;){let i=e.charCodeAt(t);if(96===i||34===i)break;t++}d(5,t)}break;case 3:l=v(t);break;case 4:if(34===t)g();else if(93===t&&62===e.charCodeAt(n+1)){let t=u(n+2);(l=40===e.charCodeAt(t))&&(h(5),n=t+1)}else l=!1;break;case 5:l=C(t);break;case 6:if(34===t)96===e.charCodeAt(n+1)?g():(d(35,n+1),h(1));else{let e=k(u(n));(l=e>=0)&&(p(),d(33,u(e)))}break;case 7:{let t=12,i=e.startsWith("DEFAULT",n)?n+7:n,r=u(i);(i===n||r===i)&&(t=13,r=u(i=b(n))),(l=i>n&&r>i)&&(o=8,d(t,r));break}case 8:w(14);break;case 9:l=_(16,10);break;case 10:w(17);break;case 11:l=_(19,12);break;case 12:w(20);break;case 13:w(22);break;case 14:w(24);break;case 15:if(125===t)p(),n++;else{let t=e.indexOf("}",n);d(25,-1===t?i:t)}}if(!l)return r.push(1),a.push(""),s.push(n),{types:r,texts:a,starts:s}}return r.push(0),a.push(""),s.push(i),{types:r,texts:a,starts:s}}function ec(e){return e.replace(/#(?:quot|0*(?:34|37|96));/g,e=>"#quot;"===e?'"':String.fromCodePoint(Number(e.slice(1,-1))))}var ed="'NODE_ID', 'COLUMNS', 'SPACE_BLOCK', 'BLOCK_DIAGRAM_KEY', 'id-block', 'classDef', 'class', 'style'";function eh(e){let t=e[e.length-1];return Array.isArray(t)?(e.pop(),e.concat(t)):e}function ep(e){let t=0;if(e)for(let i of e)switch(i.trim()){case"right":t|=1;break;case"left":t|=2;break;case"up":t|=4;break;case"down":t|=8;break;case"x":t|=3;break;case"y":t|=12}return t}var eu=(e,t)=>e&t?1:0;function ey(e){return 0!==e&&(12&e)==0?"x":0!==e&&(3&e)==0?"y":""}function eb(e,t,i){let r=ey(e),a=eu(e,2)-eu(e,1),s=eu(e,4)-eu(e,8);if("x"===r){let r=Math.max(i+8,14)+14,s=Math.min(r/2,20);return{w:Math.max(t+12,16)+s*(3===e?2:1),h:r,dx:a*s/2,dy:0}}if("y"===r){let r=Math.max(t+16,14)+14,a=Math.min(r/2,20);return{w:r,h:Math.max(i+8,16)+a*(12===e?2:1),dx:0,dy:s*a/2}}return{w:Math.max(t+16,24)+12*(eu(e,2)+eu(e,1)),h:Math.max(i+8,24)+12*(eu(e,4)+eu(e,8)),dx:12*a/2,dy:12*s/2}}function ef(e,t,i){let r=ey(e),a=t/2,s=i/2,l;if("x"===r){let t=Math.min(s,20),i=s-7,r=2&e?-a+t:-a,o=1&e?a-t:a;l=[r,-i,o,-i],1&e&&l.push(o,-s,a,0,o,s),l.push(o,i,r,i),2&e&&l.push(r,s,-a,0,r,-s)}else if("y"===r){let t=Math.min(a,20),i=a-7,r=4&e?-s+t:-s,o=8&e?s-t:s;l=[i,r,i,o],8&e&&l.push(a,o,0,s,-a,o),l.push(-i,o,-i,r),4&e&&l.push(-a,r,0,-s,a,r)}else{let t=2&e?-a+12:-a,i=1&e?a-12:a,r=4&e?-s+12:-s,o=8&e?s-12:s,n=(t+i)/2,c=(r+o)/2,d=Math.min(10,(i-t)/2),h=Math.min(10,(o-r)/2);l=[t,r],4&e&&l.push(n-d,r,n,-s,n+d,r),l.push(i,r),1&e&&l.push(i,c-h,a,c,i,c+h),l.push(i,o),8&e&&l.push(n+d,o,n,s,n-d,o),l.push(t,o),2&e&&l.push(t,c+h,-a,c,t,c-h)}let o=[];for(let e=0;e<l.length;e+=2)o.push({x:l[e],y:l[e+1]});return o}function eg(e){return U(j(R(e)),/&(?:#[xX][0-9a-fA-F]+|#\d+|[a-zA-Z][a-zA-Z0-9]+);|#\w+;/g,e=>{let t=e.startsWith("&")?l(e):o(e);if($.test(t))throw SyntaxError("Block label entity must display printable text");return t})}var em={na:"rectangle",square:"rectangle",round:"rounded",circle:"circle",rect_left_inv_arrow:"asymmetric",diamond:"diamond",hexagon:"hexagon",stadium:"stadium",subroutine:"subroutine",cylinder:"cylinder",doublecircle:"doublecircle",lean_right:"lean-r",lean_left:"lean-l",trapezoid:"trapezoid",inv_trapezoid:"trapezoid-alt"};function ek(e){return{id:e.id,label:e.block.label??e.id,shape:em[e.block.type??"na"]??"rectangle",x:e.x,y:e.y,width:e.width,height:e.height}}var ex={};for(let e of["start","end"])ex[`arrow_point:${e}`]=O(`block-arrow-${e}`,{width:8,height:7},e,{fill:"var(--_arrow)",stroke:"none"},"userSpaceOnUse"),ex[`arrow_circle:${e}`]={id:`block-circle-${e}`,shape:"circle",size:{width:9,height:9},ref:{x:4.5,y:4.5},orient:"auto",geometry:{kind:"circle",cx:4.5,cy:4.5,r:3.5},paint:{fill:"var(--bg)",stroke:"var(--_arrow)",strokeWidth:"1"},units:"userSpaceOnUse"},ex[`arrow_cross:${e}`]={id:`block-cross-${e}`,shape:"cross",size:{width:9,height:9},ref:{x:4.5,y:4.5},orient:"auto",geometry:{kind:"path",d:"M1 1L8 8M1 8L8 1"},paint:{fill:"none",stroke:"var(--_arrow)",strokeWidth:"1"},units:"userSpaceOnUse"};var ew=L(function(e,t){let{positioned:r,colors:a}=t,s=t.resolved.renderOptions.transparent??!1,l=a.font??"Inter",o=[],n=r.style.edgeStrokeColor?Object.fromEntries(Object.entries(ex).map(([e,t])=>[e,{...t,paint:{...t.paint,...t.paint?.fill==="var(--_arrow)"?{fill:r.style.edgeStrokeColor}:{},...t.paint?.stroke==="var(--_arrow)"?{stroke:r.style.edgeStrokeColor}:{}}}])):ex,c=Object.values(n),d=W(a),h=z(r.width,r.height,a,s);r.model.accessibilityTitle&&(h+=`<title>${Y(r.model.accessibilityTitle)}</title>`),r.model.accessibilityDescription&&(h+=`<desc>${Y(r.model.accessibilityDescription)}</desc>`),h+=N(l,!1,void 0,a.embedFontImport),o.push(e.documentOpen({id:"prelude",width:r.width,height:r.height,colors:a,transparent:s,font:l,hasMonoFont:!1},h),e.definitions({id:"defs",markerResources:c},`<defs>${F(c)}</defs>`));let p=(t,a)=>{let s="composite"===t.block.type,l=s?"group":"node",o=t.style.fill??(s?r.style.groupFillColor:r.style.nodeFillColor)??(s?"var(--_group-fill)":"var(--_node-fill)"),n=t.style.stroke??(s?r.style.groupBorderColor:r.style.nodeBorderColor)??"var(--_node-stroke)",c=t.style.fill??r.style.groupHeaderFillColor,h=t.style.color??(s?r.style.groupTextColor:r.style.nodeTextColor)??d("var(--_text)",s?c??o:o),p=i(ek(t),{fill:o,stroke:n,strokeWidth:t.style["stroke-width"]??String(s?r.style.groupLineWidth:r.style.nodeLineWidth)},s?r.style.groupCornerRadius:r.style.cornerRadius),u=t.style["stroke-dasharray"];void 0!==u&&(p.paint.strokeDasharray=u,p.childPaints&&(p.childPaints=p.childPaints.map(e=>({...e,strokeDasharray:u}))));let y=ep(t.block.directions),b="block_arrow"===t.block.type,f=b?eb(y,t.label.width,t.label.height):{dx:0,dy:0},g=b?{kind:"polygon",points:ef(y,t.width,t.height).map(e=>({x:e.x+t.x+t.width/2,y:e.y+t.y+t.height/2}))}:p.geometry,m=[`block-${s?"composite":"node"}`,...(t.block.classes??[]).filter(e=>/^[\w-]+$/.test(e))];return e.group({id:`block:${t.id}`,role:l,open:`<g class="${K(m.join(" "))}" data-id="${K(t.id)}"${t.parentId?` data-parent="${K(t.parentId)}"`:""}>`,close:"</g>",children:[{indent:2,node:e.shape({id:`frame:${t.id}`,role:l,identity:!1,owner:{id:t.id,role:l},geometry:g,paint:p.paint,...p.childPaints?{childPaints:p.childPaints}:{}})},...s&&t.label.text&&r.style.groupHeaderFillColor?[{indent:2,node:e.shape({id:`header:${t.id}`,role:"chrome",owner:{id:t.id,role:l},geometry:{kind:"rect",x:t.x+r.style.groupLineWidth,y:t.y+r.style.groupLineWidth,width:Math.max(0,t.width-2*r.style.groupLineWidth),height:t.label.height+16-r.style.groupLineWidth,rx:Math.max(0,r.style.groupCornerRadius-r.style.groupLineWidth)},paint:{fill:c,stroke:"none"}})}]:[],...t.label.text?[{indent:2,node:e.text({id:`label:${t.id}`,role:"label",owner:{id:t.id,role:l},text:t.label.text,block:t.label,x:t.x+t.width/2+f.dx,y:s?t.y+t.label.height/2+8:t.y+t.height/2+f.dy,fontSize:t.label.fontSize,anchor:"middle",paint:{fill:h}})}]:[],...a.map(e=>({node:e,indent:2}))]})},u=new Map;for(let e=r.nodes.length-1;e>=0;e--){let t=r.nodes[e];if("space"===t.block.type)continue;let i=u.get(t.parentId)??[];i.push(p(t,(u.get(t.id)??[]).reverse())),u.set(t.parentId,i)}for(let t of(o.push(...(u.get(void 0)??[]).reverse()),r.edges)){let i=n[`${t.arrowTypeStart}:start`],a=n[`${t.arrowTypeEnd}:end`],s=r.style.edgeBendRadius>0&&t.points.length>2?B(t.points,r.style.edgeBendRadius):void 0;o.push(e.connector({id:t.id,role:"edge",geometry:s?.geometry??{kind:"polyline",points:t.points},lineStyle:"dotted"===t.pattern?"dotted":"solid",paint:{fill:"none",stroke:r.style.edgeStrokeColor??"var(--_line)",strokeWidth:"thick"===t.thickness?"3":String(r.style.lineWidth),..."dotted"===t.pattern?{strokeDasharray:"2 4"}:{}},endpoints:{from:t.start,to:t.end},relationship:{kind:"block-link"},markers:{...i?{start:i}:{},...a?{end:a}:{}},labels:t.label?[{text:t.labelBlock.text,anchor:t.labelPosition}]:[],route:{ownership:"layout",bendRadius:r.style.edgeBendRadius,labelAnchors:t.label?[t.labelPosition]:[],...s?{contours:s.contours}:{}}}))}for(let t of r.edges)if(t.label){let i=t.labelBlock,a=t.labelPosition;o.push(e.group({id:`edge-label:${t.id}`,role:"edge-label",open:'<g class="block-edge-label">',close:"</g>",children:[{indent:2,node:e.shape({id:`label-bg:${t.id}`,role:"chrome",owner:{id:t.id,role:"edge"},geometry:{kind:"rect",x:a.x-i.width/2-6,y:a.y-i.height/2-4,width:i.width+12,height:i.height+8},paint:{fill:"var(--bg)",stroke:"none"}})},{indent:2,node:e.text({id:`label:${t.id}`,role:"edge-label",owner:{id:t.id,role:"edge"},text:i.text,block:i,x:a.x,y:a.y,fontSize:i.fontSize,anchor:"middle",paint:{fill:r.style.edgeTextColor??"var(--_text)"}})}]}))}return r.title&&o.push(e.text(I(r.title,r.style))),o.push(e.documentClose()),{family:"block",width:r.width,height:r.height,colors:a,transparent:s,parts:o}}),e_=x(X,{configDiagnostics:e=>d("block",e,{padding:n,useMaxWidth:c}),layout:i=>{let l=function(e){let t=Array.isArray(e)?e.join(`
9
- `):e,i=new ei,r=en(t);if(i.reservedIds=new Set(r.texts.filter((e,t)=>32===r.types[t])),function(e,t){let{types:i,texts:r,starts:a}=en(e),s=0,l=t=>{let r=i[s];throw 1===r?q("block",e,a[s],"",!0):q("block",e,a[s],`Expecting ${t}, got '${er[r]}'`)},o=e=>(i[s]!==e&&l(`'${er[e]}'`),r[s++]),n=()=>{let e=o(32);if(27===i[s]){let t=r[s++];return{id:e,label:ec(o(6)),typeStr:t+o(28)}}if(29===i[s]){let t=r[s++],a=ec(o(6)),l=[o(31)];for(;31===i[s];)l.push(r[s++]);return{id:e,label:a,typeStr:t+o(30),directions:l}}return{id:e}},c=()=>{let e=n(),a=36===i[s]?parseInt(r[s++],10):1,l={id:e.id,label:e.label,type:t.typeStr2Type(e.typeStr),directions:e.directions,widthInColumns:a},c;for(;33===i[s]||34===i[s];){let e="";34===i[s++]&&(o(35),e=ec(o(6)),o(33));let a=r[s-1],d=n(),h=t.edgeStrToEdgeData(a),p=t.edgeStrToEdgeStartData(a),u=t.edgeStrToThickness(a),y=t.edgeStrToPattern(a);c??=[{id:l.id,label:l.label,type:l.type,directions:l.directions}],l={id:d.id,label:d.label,type:t.typeStr2Type(d.typeStr),directions:d.directions},c.push({id:c[c.length-1].id+"-"+d.id,start:c[c.length-1].id,end:d.id,label:e,type:"edge",thickness:u,pattern:y,directions:d.directions,arrowTypeEnd:h,arrowTypeStart:p},l)}return c??l};o(2),w("block")&&_("block","header",r[0],{offset:a[0],endOffset:a[0]+r[0].length,unit:"physical"});let d=[],h=[];for(;;){let e=s,n=i[s];switch(37!==n&&w("block")&&_("block",er[n],r[e],{offset:a[e],endOffset:a[e]+r[e].length,unit:"physical"}),i[s]){case 32:h.push(c());break;case 4:h.push({type:"column-setting",columns:parseInt(r[s++],10)});break;case 7:{let e=parseInt(r[s++],10);h.push({id:t.generateId(),type:"space",label:"",width:e,children:[]});break}case 2:s++,M("nesting",d.length+1),d.push({list:h,header:void 0}),h=[];break;case 3:s++,M("nesting",d.length+1),32!==i[s]&&l("'NODE_ID'"),d.push({list:h,header:c()}),h=[];break;case 26:{let e=d.pop();if(void 0===e||0===h.length)return l(ed);s++;let i=t.generateId(),r=eh(h);(h=e.list).push(void 0===e.header?{id:i,type:"composite",label:"",children:r}:{...e.header,type:"composite",children:r});break}case 11:{s++;let e=o(13).trim();h.push({type:"classDef",id:e,css:o(14).trim()});break}case 15:{s++;let e=o(16).trim();h.push({type:"applyClass",id:e,styleClass:o(17).trim()});break}case 18:{s++;let e=o(19).trim();h.push({type:"applyStyles",id:e,stylesStr:o(20).trim()});break}case 37:d.length>0&&l(ed+", 'end'"),0===h.length&&l(ed),t.setHierarchy(eh(h));return;default:l(0===h.length?ed:ed+(d.length>0?", 'end'":", 'EOF'"))}}}(t.endsWith(`
10
- `)?t:t+`
11
- `,i),i.unresolvedStyleTargets().length)throw Error("Block style/class references undeclared targets: "+i.unresolvedStyleTargets().join(", "));for(let e of i.classes.values())D(T(e.styles.join(",")),`classDef ${e.id}`);let a=[i.root];for(let e=0;e<a.length;e++){let t=a[e];D(T((t.styles??[]).join(",")),`style ${t.id}`),a.push(...t.children??[])}return{kind:"block",root:i.root,edges:i.edges,classDefs:[...i.classes.values()],title:i.title}}(i.source.familyLines);return l.title??=h(i.source.frontmatter),l.accessibilityTitle=i.source.accessibility.title,l.accessibilityDescription=i.source.accessibility.descr,k(function(i,l={},o,n={}){E(i);let c=v(l,void 0,o),d=l.padding??32,h=i.edges.map(e=>P(eg(e.label??""),{fontSize:c.edgeLabelFontSize,fontWeight:c.edgeLabelFontWeight,maxWidth:320,transform:c.edgeTextTransform,letterSpacing:c.edgeLetterSpacing})),p=Math.max("number"==typeof n.padding&&n.padding>=0?Math.min(n.padding,200):20,...h.filter(e=>e.text).map(e=>e.width+40)),u=new Map(i.classDefs.map(e=>[e.id,e])),y=[],b=(e,t)=>{let r="composite"===e.type,a=D(T([...u.get("default")?.styles??[],...(e.classes??[]).flatMap(e=>u.get(e)?.styles??[]),...e.styles??[]].join(",")),`style ${e.id}`),s=Number.parseFloat(a["font-size"]??"")||(r?c.groupHeaderFontSize:c.nodeLabelFontSize),n=a["font-weight"]?.trim().toLowerCase(),d=void 0===n?r?c.groupHeaderFontWeight:c.nodeLabelFontWeight:"normal"===n?400:"bold"===n?700:Number(n);if(!Number.isFinite(d)||d<1||d>1e3)throw Error(`style ${e.id}: font-weight must be normal, bold, or a number from 1 to 1000`);let h=P(eg(e.label??(r?"":e.id)),{fontSize:s,fontWeight:d,maxWidth:320,transform:r?c.groupTextTransform:c.nodeTextTransform,letterSpacing:r?c.groupLetterSpacing:c.nodeLetterSpacing,fontFamily:r?c.groupFont??l.font:l.font}),p=Math.max(80,h.width+(r?c.groupLabelPaddingX:c.nodePaddingX)*2),y=Math.max(44,h.height+(r?c.groupPaddingY:c.nodePaddingY)*2);if(["diamond","hexagon","lean_right","lean_left","trapezoid","inv_trapezoid"].includes(e.type??"")&&(p+=48,y+=24),["circle","doublecircle"].includes(e.type??"")&&(p=y=Math.max(p,y)),"cylinder"===e.type&&(y+=24),"block_arrow"===e.type){let t=eb(ep(e.directions),h.width,h.height);p=t.w,y=t.h}"space"===e.type&&(p=40,y=24);let b="composite"===e.type&&h.text?h.height+16:0;return{block:e,parentId:t,label:h,style:a,children:[],columns:e.columns??-1,span:e.widthInColumns??1,space:"space"===e.type,head:b,insetX:o?.group?.paddingX,insetY:o?.group?.paddingY,nw:e===i.root?0:p,nh:e===i.root?0:y,col:0,row:0,cols:0,heights:[],x:0,y:0,w:0,h:0}},f=b(i.root),g=[f];for(let e=0;e<g.length;e++){let t=g[e];for(let e of t.block.children??[]){let i=b(e,t===f?void 0:t.block.id);t.children.push(i),g.push(i),y.push(i)}}let m=function(e,t){let i=[e];for(let e=0;e<i.length;e++)for(let t of i[e].children)i.push(t);for(let e=i.length-1;e>=0;e--){let r=i[e];r.children.length>0&&function(e,t,i,r){let a=e.columns,s=[],l=0,o=0,n=0,c=0;for(let i of e.children){let{px:e,py:r}=function(e,t){if(0===e||!Number.isInteger(e))throw new G("Columns must be an integer !== 0.","semantic",{type:"block"});if(t<0||!Number.isInteger(t))throw new G("Position must be a non-negative integer."+t,"semantic",{type:"block"});return e<0?{px:t,py:0}:{px:t%e,py:Math.floor(t/e)}}(a,l),d=i.span>=1?Math.min(i.span,1e3):1;if(a>0&&d>a-e&&(d=a-e),i.span=d,i.col=e,i.row=r,l+=d,e+d>o&&(o=e+d),r===s.length&&s.push(0),0===i.children.length?s[r]=-1:s[r]>=0&&i.nh>s[r]&&(s[r]=i.nh),i.space)continue;let h=(i.nw-t*(d-1))/d;h>n&&(n=h),i.nh>c&&(c=i.nh)}let d=(s.length-1)*t;for(let e=0;e<s.length;e++)s[e]<0&&(s[e]=c),d+=s[e];e.cols=o,e.heights=s,e.nw=Math.max(e.nw,o*n+(o-1)*t+2*i),e.nh=d+2*r+e.head}(r,t,0===e?0:r.insetX??t,0===e?0:r.insetY??t)}e.w=e.nw,e.h=e.nh,e.x=e.w/2,e.y=e.h/2;for(let e=0;e<i.length;e++){let r=i[e];r.children.length>0&&function(e,t,i,r){let{cols:a,heights:s}=e,l=s.length,o=(e.w-2*i-(a-1)*t)/a,n=e.h-2*r-e.head-(l-1)*t,c=0;for(let e of s)c+=e;let d=c>0?n/c:0,h=c>0?0:n/l,p=e.x-e.w/2+i,u=e.y-e.h/2+r+e.head,y=0;for(let i of e.children){for(;y<i.row;y++)u+=s[y]*d+h+t;i.w=o*i.span+t*(i.span-1),i.h=s[y]*d+h,i.x=p+i.col*(o+t)+i.w/2,i.y=u+i.h/2}}(r,t,0===e?0:r.insetX??t,0===e?0:r.insetY??t)}return{width:e.w,height:e.h}}(f,p),k=C(i.title,c),x=Math.max(m.width+2*d,(k?.width??0)+2*d),w=k?.height??0,_=d+(x-2*d-m.width)/2,S=d+w,I=y.map(e=>{let t=e.w,i=e.h;return["circle","doublecircle"].includes(e.block.type??"")&&(t=i=Math.min(e.w,e.h)),{id:e.block.id,block:e.block,parentId:e.parentId,x:e.x-t/2+_,y:e.y-i/2+S,width:t,height:i,label:e.label,style:e.style}}),M=new Map(I.map(e=>[e.id,e])),L=I.filter(e=>"space"!==e.block.type).map(ek),$=new Map(L.map(e=>[e.id,r(e)])),W=new Map(I.filter(e=>"block_arrow"===e.block.type).map(e=>[e.id,{kind:"polygon",points:ef(ep(e.block.directions),e.width,e.height).map(t=>({x:t.x+e.x+e.width/2,y:t.y+e.y+e.height/2}))}])),N=L.filter(e=>"composite"!==M.get(e.id).block.type),z=new Map;i.edges.forEach((e,t)=>{let i=e.start<e.end?`${e.start}\0${e.end}`:`${e.end}\0${e.start}`,r=z.get(i)??[];r.push(t),z.set(i,r)});let O=new Map;for(let e of z.values()){let t=Math.max(...e.map(e=>h[e].width)),i=Math.max(...e.map(e=>h[e].height));e.forEach((r,a)=>O.set(r,{slot:a,count:e.length,width:t,height:i}))}let F=new Set,B=new Set,j=(e,t)=>`${e}\0${t.x}\0${t.y}`,R=i.edges.map((t,i)=>{let l=M.get(t.start),o=M.get(t.end);if(!l||!o)throw Error(`Block edge ${t.id} references undeclared endpoints`);let n=h[i],{slot:c,count:d,width:p,height:u}=O.get(i),y=c-(d-1)/2,b=$.get(l.id)??r(ek(l)),f=$.get(o.id)??r(ek(o)),g,m={x:l.x+l.width/2,y:l.y+l.height/2},k={x:o.x+o.width/2,y:o.y+o.height/2},x=Math.abs(k.x-m.x)>=Math.abs(k.y-m.y),w=[k.x>=m.x?b.E:b.W,k.x>=m.x?f.W:f.E],_=[k.y>=m.y?b.S:b.N,k.y>=m.y?f.N:f.S],S=e=>F.has(j(l.id,e[0]))||B.has(j(o.id,e[1]));if(1===d&&l!==o&&S(x?w:_)&&!S(x?_:w)&&(x=!x),l===o){let e=28+c*(Math.max(p,u)+24);g=[b.E,{x:b.E.x+e,y:b.E.y},{x:b.E.x+e,y:l.y-e},{x:b.N.x,y:l.y-e},b.N]}else if(d>1&&0!==y){let e=(x?u:p)+24;if(x){let t=y<0?Math.min(l.y,o.y)+y*e:Math.max(l.y+l.height,o.y+o.height)+y*e,i=y<0?b.N:b.S,r=y<0?f.N:f.S;g=[i,{x:i.x,y:t},{x:r.x,y:t},r]}else{let t=y<0?Math.min(l.x,o.x)+y*e:Math.max(l.x+l.width,o.x+o.width)+y*e,i=y<0?b.W:b.E,r=y<0?f.W:f.E;g=[i,{x:t,y:i.y},{x:t,y:r.y},r]}}else if(x){let e=k.x>=m.x?b.E:b.W,t=k.x>=m.x?f.W:f.E,i=(e.x+t.x)/2+12*c;g=[e,{x:i,y:e.y},{x:i,y:t.y},t]}else{let e=k.y>=m.y?b.S:b.N,t=k.y>=m.y?f.N:f.S,i=(e.y+t.y)/2+12*c;g=[e,{x:e.x,y:i},{x:t.x,y:i},t]}B.add(j(l.id,g[0])),F.add(j(o.id,g.at(-1)));let v={id:t.id,source:l.id,target:o.id,style:"solid",hasArrowStart:!1,hasArrowEnd:!1,points:e(g.map(e=>({...e})))};for(let[e,t,i]of(s("composite"===l.block.type||"composite"===o.block.type?L.filter(e=>"composite"!==M.get(e.id).block.type||e.id===l.id||e.id===o.id):N,[v],{direction:x?"LR":"TB"}),[[l,0,1],[o,(g=v.points).length-1,g.length-2]])){let r=W.get(e.id);if(!r)continue;let s=g[t],l=g[i],o=l.x-s.x,n=l.y-s.y,c=Math.abs(o)>Math.abs(n),d=a(r,c?o>0?"E":"W":n>0?"S":"N",c?s.y:s.x);d&&(g[t]=d)}let C=0;for(let e=1;e<g.length-1;e++)Math.hypot(g[e+1].x-g[e].x,g[e+1].y-g[e].y)>Math.hypot(g[C+1].x-g[C].x,g[C+1].y-g[C].y)&&(C=e);let A=g[C],I=g[C+1],E={x:(A.x+I.x)/2,y:(A.y+I.y)/2};return{...t,points:g,labelBlock:n,labelPosition:E}});if(R.some(e=>e.label)){let e=R.map(e=>({...e,source:e.start,target:e.end,style:"solid",hasArrowStart:!1,hasArrowEnd:!1}));for(let i=0;i<R.length;i++){let r=R[i],a=e[i];if(r.label)for(let{start:i,end:s}of r.points.slice(1).map((e,t)=>({start:r.points[t],end:e})).sort((e,t)=>Math.hypot(t.end.x-t.start.x,t.end.y-t.start.y)-Math.hypot(e.end.x-e.start.x,e.end.y-e.start.y))){let l=t(a,i,s,{nodes:N,edges:e,axis:{main:"x",cross:"y",sign:1},style:c,finalLabelClearance:!0});if(l){r.labelPosition=a.labelPosition=l;break}}}}let Y=Math.min(d,...R.flatMap(e=>e.points.map(e=>e.x))),K=Math.min(d+w,...R.flatMap(e=>e.points.map(e=>e.y))),U=Math.max(0,d-Y),H=Math.max(0,d+w-K);if(U||H){for(let e of I)e.x+=U,e.y+=H;for(let e of R){for(let t of e.points)t.x+=U,t.y+=H;e.labelPosition.x+=U,e.labelPosition.y+=H}}let X=m.height+2*d+w+H,q=x+U;for(let e of R)for(let t of e.points)X=Math.max(X,t.y+d),q=Math.max(q,t.x+d);return{model:i,width:q,height:X,nodes:I,edges:R,style:c,...k?{title:A(k,q,d)}:{}}}(l,i.renderOptions,i.styleFace,i.source.config.block))},projectPositioned:g(function({positioned:e}){let t=e=>{let t="block_arrow"===e.block.type?eb(ep(e.block.directions),e.label.width,e.label.height):{dx:0,dy:0};return{x:e.x+e.width/2+t.dx,y:"composite"===e.block.type?e.y+e.label.height/2+8:e.y+e.height/2+t.dy}},i=e.nodes.filter(e=>"composite"===e.block.type&&e.label.text).map(e=>{let i=t(e);return{id:`label:${e.id}`,text:e.label.text,bounds:b(e.label,i.x,i.y),container:u(e)}});return e.title&&i.push({id:"title",text:e.title.text,bounds:b(e.title.block,e.title.x,e.title.y),container:u(p(e))}),{version:1,bounds:{w:y(e.width),h:y(e.height)},nodes:e.nodes.filter(e=>!["composite","space"].includes(e.block.type??"")).map(e=>{let i=t(e);return{id:e.id,x:y(e.x),y:y(e.y),w:y(e.width),h:y(e.height),shape:ek(e).shape,label:e.label.text,role:"box",...f(e.label,i.x,i.y,e),...e.parentId?{parentId:e.parentId}:{}}}),edges:e.edges.map(e=>({id:e.id,from:e.start,to:e.end,path:e.points.map(e=>[y(e.x),y(e.y)]),...e.label?{label:{x:y(e.labelPosition.x),y:y(e.labelPosition.y),text:e.labelBlock.text,bounds:b(e.labelBlock,e.labelPosition.x,e.labelPosition.y)}}:{}})),groups:e.nodes.filter(e=>"composite"===e.block.type).map(t=>({id:t.id,x:y(t.x),y:y(t.y),w:y(t.width),h:y(t.height),label:t.block.label,members:e.nodes.filter(e=>e.parentId===t.id&&"space"!==e.block.type).map(e=>e.id),parentId:t.parentId})),labels:i}}),lowerScene:m(ew)});export{e_ as default};
@@ -1,12 +0,0 @@
1
- import{i as t,p as e,r as s,s as r,t as n,u as a,y as i}from"./chunk-FBL4ONAL.js";import{A as o,M as l,Na as h,O as u,P as p,da as c,l as f,mb as d,r as g,za as k}from"./chunk-EUBVLDYV.js";import{H as y,L as M,Y as m,Z as x}from"./chunk-P7DO3MRP.js";import"./chunk-5UVGUSD6.js";import"./chunk-CSFUKSU6.js";function v(t,e,s){if(t&&t.length){let[r,n]=e,a=Math.PI/180*s,i=Math.cos(a),o=Math.sin(a);for(let e of t){let[t,s]=e;e[0]=(t-r)*i-(s-n)*o+r,e[1]=(t-r)*o+(s-n)*i+n}}}function b(t,e){var s;let r=e.hachureAngle+90,n=e.hachureGap;n<0&&(n=4*e.strokeWidth),n=Math.round(Math.max(n,.1));let a=1;return e.roughness>=1&&((null==(s=e.randomizer)?void 0:s.next())||Math.random())>.7&&(a=n),function(t,e,s,r=1){let n=Math.max(e,.1),a=t[0]&&t[0][0]&&"number"==typeof t[0][0]?[t]:t,i=[0,0];if(s)for(let t of a)v(t,i,s);let o=function(t,e,s){let r=[];for(let e of t){var n,a;let t=[...e];n=t[0],a=t[t.length-1],n[0]===a[0]&&n[1]===a[1]||t.push([t[0][0],t[0][1]]),t.length>2&&r.push(t)}let i=[];e=Math.max(e,.1);let o=[];for(let t of r)for(let e=0;e<t.length-1;e++){let s=t[e],r=t[e+1];if(s[1]!==r[1]){let t=Math.min(s[1],r[1]);o.push({ymin:t,ymax:Math.max(s[1],r[1]),x:t===s[1]?s[0]:r[0],islope:(r[0]-s[0])/(r[1]-s[1])})}}if(o.sort((t,e)=>t.ymin<e.ymin?-1:t.ymin>e.ymin?1:t.x<e.x?-1:t.x>e.x?1:t.ymax===e.ymax?0:(t.ymax-e.ymax)/Math.abs(t.ymax-e.ymax)),!o.length)return i;let l=[],h=o[0].ymin,u=0;for(;l.length||o.length;){if(o.length){let t=-1;for(let e=0;e<o.length&&!(o[e].ymin>h);e++)t=e;o.splice(0,t+1).forEach(t=>{l.push({s:h,edge:t})})}if((l=l.filter(t=>!(t.edge.ymax<=h))).sort((t,e)=>t.edge.x===e.edge.x?0:(t.edge.x-e.edge.x)/Math.abs(t.edge.x-e.edge.x)),(1!==s||u%e==0)&&l.length>1)for(let t=0;t<l.length;t+=2){let e=t+1;if(e>=l.length)break;let s=l[t].edge,r=l[e].edge;i.push([[Math.round(s.x),h],[Math.round(r.x),h]])}h+=s,l.forEach(t=>{t.edge.x=t.edge.x+s*t.edge.islope}),u++}return i}(a,n,r);if(s){let t;for(let t of a)v(t,i,-s);t=[],o.forEach(e=>t.push(...e)),v(t,i,-s)}return o}(t,n,r,a||1)}var $=class{constructor(t){this.helper=t}fillPolygons(t,e){return this._fillPolygons(t,e)}_fillPolygons(t,e){let s=b(t,e);return{type:"fillSketch",ops:this.renderLines(s,e)}}renderLines(t,e){let s=[];for(let r of t)s.push(...this.helper.doubleLineOps(r[0][0],r[0][1],r[1][0],r[1][1],e));return s}};function P(t){let e=t[0],s=t[1];return Math.sqrt(Math.pow(e[0]-s[0],2)+Math.pow(e[1]-s[1],2))}var w=class extends ${fillPolygons(t,e){let s=e.hachureGap;s<0&&(s=4*e.strokeWidth);let r=b(t,Object.assign({},e,{hachureGap:s=Math.max(s,.1)})),n=Math.PI/180*e.hachureAngle,a=[],i=.5*s*Math.cos(n),o=.5*s*Math.sin(n);for(let[t,e]of r)P([t,e])&&a.push([[t[0]-i,t[1]+o],[...e]],[[t[0]+i,t[1]-o],[...e]]);return{type:"fillSketch",ops:this.renderLines(a,e)}}},S=class extends ${fillPolygons(t,e){let s=this._fillPolygons(t,e),r=Object.assign({},e,{hachureAngle:e.hachureAngle+90}),n=this._fillPolygons(t,r);return s.ops=s.ops.concat(n.ops),s}},O=class{constructor(t){this.helper=t}fillPolygons(t,e){let s=b(t,e=Object.assign({},e,{hachureAngle:0}));return this.dotsOnLines(s,e)}dotsOnLines(t,e){let s=[],r=e.hachureGap;r<0&&(r=4*e.strokeWidth),r=Math.max(r,.1);let n=e.fillWeight;n<0&&(n=e.strokeWidth/2);let a=r/4;for(let i of t){let t=P(i),o=Math.ceil(t/r)-1,l=t-o*r,h=(i[0][0]+i[1][0])/2-r/4,u=Math.min(i[0][1],i[1][1]);for(let t=0;t<o;t++){let i=h-a+2*Math.random()*a,o=u+l+t*r-a+2*Math.random()*a,p=this.helper.ellipse(i,o,n,n,e);s.push(...p.ops)}}return{type:"fillSketch",ops:s}}},L=class{constructor(t){this.helper=t}fillPolygons(t,e){let s=b(t,e);return{type:"fillSketch",ops:this.dashedLine(s,e)}}dashedLine(t,e){let s=e.dashOffset<0?e.hachureGap<0?4*e.strokeWidth:e.hachureGap:e.dashOffset,r=e.dashGap<0?e.hachureGap<0?4*e.strokeWidth:e.hachureGap:e.dashGap,n=[];return t.forEach(t=>{let a=P(t),i=Math.floor(a/(s+r)),o=(a+r-i*(s+r))/2,l=t[0],h=t[1];l[0]>h[0]&&(l=t[1],h=t[0]);let u=Math.atan((h[1]-l[1])/(h[0]-l[0]));for(let t=0;t<i;t++){let a=t*(s+r),i=a+s,h=[l[0]+a*Math.cos(u)+o*Math.cos(u),l[1]+a*Math.sin(u)+o*Math.sin(u)],p=[l[0]+i*Math.cos(u)+o*Math.cos(u),l[1]+i*Math.sin(u)+o*Math.sin(u)];n.push(...this.helper.doubleLineOps(h[0],h[1],p[0],p[1],e))}}),n}},j=class{constructor(t){this.helper=t}fillPolygons(t,e){let s=e.hachureGap<0?4*e.strokeWidth:e.hachureGap,r=e.zigzagOffset<0?s:e.zigzagOffset,n=b(t,e=Object.assign({},e,{hachureGap:s+r}));return{type:"fillSketch",ops:this.zigzagLines(n,r,e)}}zigzagLines(t,e,s){let r=[];return t.forEach(t=>{let n=Math.round(P(t)/(2*e)),a=t[0],i=t[1];a[0]>i[0]&&(a=t[1],i=t[0]);let o=Math.atan((i[1]-a[1])/(i[0]-a[0]));for(let t=0;t<n;t++){let n=2*t*e,i=(t+1)*2*e,l=Math.sqrt(2*Math.pow(e,2)),h=[a[0]+n*Math.cos(o),a[1]+n*Math.sin(o)],u=[a[0]+i*Math.cos(o),a[1]+i*Math.sin(o)],p=[h[0]+l*Math.cos(o+Math.PI/4),h[1]+l*Math.sin(o+Math.PI/4)];r.push(...this.helper.doubleLineOps(h[0],h[1],p[0],p[1],s),...this.helper.doubleLineOps(p[0],p[1],u[0],u[1],s))}}),r}},I={},_=class{constructor(t){this.seed=t}next(){return this.seed?(0x80000000-1&(this.seed=Math.imul(48271,this.seed)))/0x80000000:Math.random()}},z={A:7,a:7,C:6,c:6,H:1,h:1,L:2,l:2,M:2,m:2,Q:4,q:4,S:4,s:4,T:2,t:2,V:1,v:1,Z:0,z:0};function W(t){let e=[],s=function(t){let e=[];for(;""!==t;)if(t.match(/^([ \t\r\n,]+)/))t=t.substr(RegExp.$1.length);else if(t.match(/^([aAcChHlLmMqQsStTvVzZ])/))e[e.length]={type:0,text:RegExp.$1},t=t.substr(RegExp.$1.length);else{if(!t.match(/^(([-+]?[0-9]+(\.[0-9]*)?|[-+]?\.[0-9]+)([eE][-+]?[0-9]+)?)/))return[];e[e.length]={type:1,text:`${parseFloat(RegExp.$1)}`},t=t.substr(RegExp.$1.length)}return e[e.length]={type:2,text:""},e}(t),r="BOD",n=0,a=s[0];for(;2!==a.type;){let i=0,o=[];if("BOD"===r)if("M"!==a.text&&"m"!==a.text)return W("M0,0"+t);else n++,i=z[a.text],r=a.text;else 1===a.type?i=z[r]:(n++,i=z[a.text],r=a.text);if(n+i<s.length){for(let t=n;t<n+i;t++){let e=s[t];if(1===e.type)o[o.length]=+e.text;else throw Error("Param not a number: "+r+","+e.text)}if("number"==typeof z[r]){let t={key:r,data:o};e.push(t),n+=i,a=s[n],"M"===r&&(r="L"),"m"===r&&(r="l")}else throw Error("Bad segment: "+r)}else throw Error("Path data ended short")}return e}function A(t){let e=0,s=0,r=0,n=0,a=[];for(let{key:i,data:o}of t)switch(i){case"M":a.push({key:"M",data:[...o]}),[e,s]=o,[r,n]=o;break;case"m":e+=o[0],s+=o[1],a.push({key:"M",data:[e,s]}),r=e,n=s;break;case"L":a.push({key:"L",data:[...o]}),[e,s]=o;break;case"l":e+=o[0],s+=o[1],a.push({key:"L",data:[e,s]});break;case"C":a.push({key:"C",data:[...o]}),e=o[4],s=o[5];break;case"c":{let t=o.map((t,r)=>r%2?t+s:t+e);a.push({key:"C",data:t}),e=t[4],s=t[5];break}case"Q":a.push({key:"Q",data:[...o]}),e=o[2],s=o[3];break;case"q":{let t=o.map((t,r)=>r%2?t+s:t+e);a.push({key:"Q",data:t}),e=t[2],s=t[3];break}case"A":a.push({key:"A",data:[...o]}),e=o[5],s=o[6];break;case"a":e+=o[5],s+=o[6],a.push({key:"A",data:[o[0],o[1],o[2],o[3],o[4],e,s]});break;case"H":a.push({key:"H",data:[...o]}),e=o[0];break;case"h":e+=o[0],a.push({key:"H",data:[e]});break;case"V":a.push({key:"V",data:[...o]}),s=o[0];break;case"v":s+=o[0],a.push({key:"V",data:[s]});break;case"S":a.push({key:"S",data:[...o]}),e=o[2],s=o[3];break;case"s":{let t=o.map((t,r)=>r%2?t+s:t+e);a.push({key:"S",data:t}),e=t[2],s=t[3];break}case"T":a.push({key:"T",data:[...o]}),e=o[0],s=o[1];break;case"t":e+=o[0],s+=o[1],a.push({key:"T",data:[e,s]});break;case"Z":case"z":a.push({key:"Z",data:[]}),e=r,s=n}return a}function C(t){let e=[],s="",r=0,n=0,a=0,i=0,o=0,l=0;for(let{key:h,data:u}of t){switch(h){case"M":e.push({key:"M",data:[...u]}),[r,n]=u,[a,i]=u;break;case"C":e.push({key:"C",data:[...u]}),r=u[4],n=u[5],o=u[2],l=u[3];break;case"L":e.push({key:"L",data:[...u]}),[r,n]=u;break;case"H":r=u[0],e.push({key:"L",data:[r,n]});break;case"V":n=u[0],e.push({key:"L",data:[r,n]});break;case"S":{let t=0,a=0;"C"===s||"S"===s?(t=r+(r-o),a=n+(n-l)):(t=r,a=n),e.push({key:"C",data:[t,a,...u]}),o=u[0],l=u[1],r=u[2],n=u[3];break}case"T":{let[t,a]=u,i=0,h=0;"Q"===s||"T"===s?(i=r+(r-o),h=n+(n-l)):(i=r,h=n);let p=r+2*(i-r)/3,c=n+2*(h-n)/3,f=t+2*(i-t)/3,d=a+2*(h-a)/3;e.push({key:"C",data:[p,c,f,d,t,a]}),o=i,l=h,r=t,n=a;break}case"Q":{let[t,s,a,i]=u,h=r+2*(t-r)/3,p=n+2*(s-n)/3,c=a+2*(t-a)/3,f=i+2*(s-i)/3;e.push({key:"C",data:[h,p,c,f,a,i]}),o=t,l=s,r=a,n=i;break}case"A":{let t=Math.abs(u[0]),s=Math.abs(u[1]),a=u[2],i=u[3],o=u[4],l=u[5],h=u[6];0===t||0===s?(e.push({key:"C",data:[r,n,l,h,l,h]}),r=l,n=h):(r!==l||n!==h)&&((function t(e,s,r,n,a,i,o,l,h,u){let p=Math.PI*o/180,c=[],f=0,d=0,g=0,k=0;if(u)[f,d,g,k]=u;else{[e,s]=T(e,s,-p),[r,n]=T(r,n,-p);let t=(e-r)/2,o=(s-n)/2,u=t*t/(a*a)+o*o/(i*i);u>1&&(a*=u=Math.sqrt(u),i*=u);let c=a*a,y=i*i,M=(l===h?-1:1)*Math.sqrt(Math.abs((c*y-c*o*o-y*t*t)/(c*o*o+y*t*t)));g=M*a*o/i+(e+r)/2,k=-(M*i)*t/a+(s+n)/2,f=Math.asin(parseFloat(((s-k)/i).toFixed(9))),d=Math.asin(parseFloat(((n-k)/i).toFixed(9))),e<g&&(f=Math.PI-f),r<g&&(d=Math.PI-d),f<0&&(f=2*Math.PI+f),d<0&&(d=2*Math.PI+d),h&&f>d&&(f-=2*Math.PI),!h&&d>f&&(d-=2*Math.PI)}let y=d-f;if(Math.abs(y)>120*Math.PI/180){let e=d,s=r,l=n;c=t(r=g+a*Math.cos(d=h&&d>f?f+120*Math.PI/180*1:f+-(120*Math.PI/180*1)),n=k+i*Math.sin(d),s,l,a,i,o,0,h,[d,e,g,k])}y=d-f;let M=Math.cos(f),m=Math.cos(d),x=Math.tan(y/4),v=4/3*a*x,b=4/3*i*x,$=[e,s],P=[e+v*Math.sin(f),s-b*M],w=[r+v*Math.sin(d),n-b*m],S=[r,n];if(P[0]=2*$[0]-P[0],P[1]=2*$[1]-P[1],u)return[P,w,S].concat(c);{c=[P,w,S].concat(c);let t=[];for(let e=0;e<c.length;e+=3){let s=T(c[e][0],c[e][1],p),r=T(c[e+1][0],c[e+1][1],p),n=T(c[e+2][0],c[e+2][1],p);t.push([s[0],s[1],r[0],r[1],n[0],n[1]])}return t}})(r,n,l,h,t,s,a,i,o).forEach(function(t){e.push({key:"C",data:t})}),r=l,n=h);break}case"Z":e.push({key:"Z",data:[]}),r=a,n=i}s=h}return e}function T(t,e,s){return[t*Math.cos(s)-e*Math.sin(s),t*Math.sin(s)+e*Math.cos(s)]}var G={randOffset:function(t,e){return J(t,e)},randOffsetWithRange:function(t,e,s){return U(t,e,s)},ellipse:function(t,e,s,r,n){let a=F(s,r,n);return V(t,e,n,a).opset},doubleLineOps:function(t,e,s,r,n){return K(t,e,s,r,n,!0)}};function E(t,e,s,r,n){return{type:"path",ops:K(t,e,s,r,n)}}function R(t,e,s){let r=(t||[]).length;if(r>2){let n=[];for(let e=0;e<r-1;e++)n.push(...K(t[e][0],t[e][1],t[e+1][0],t[e+1][1],s));return e&&n.push(...K(t[r-1][0],t[r-1][1],t[0][0],t[0][1],s)),{type:"path",ops:n}}return 2===r?E(t[0][0],t[0][1],t[1][0],t[1][1],s):{type:"path",ops:[]}}function B(t,e){if(t.length){let s="number"==typeof t[0][0]?[t]:t,r=X(s[0],+(1+.2*e.roughness),e),n=e.disableMultiStroke?[]:X(s[0],1.5*(1+.22*e.roughness),H(e));for(let t=1;t<s.length;t++){let a=s[t];if(a.length){let t=X(a,+(1+.2*e.roughness),e),s=e.disableMultiStroke?[]:X(a,1.5*(1+.22*e.roughness),H(e));for(let e of t)"move"!==e.op&&r.push(e);for(let t of s)"move"!==t.op&&n.push(t)}}return{type:"path",ops:r.concat(n)}}return{type:"path",ops:[]}}function F(t,e,s){let r=Math.sqrt(2*Math.PI*Math.sqrt((Math.pow(t/2,2)+Math.pow(e/2,2))/2)),n=2*Math.PI/Math.ceil(Math.max(s.curveStepCount,s.curveStepCount/Math.sqrt(200)*r)),a=Math.abs(t/2),i=Math.abs(e/2),o=1-s.curveFitting;return a+=J(a*o,s),i+=J(i*o,s),{increment:n,rx:a,ry:i}}function V(t,e,s,r){let[n,a]=te(r.increment,t,e,r.rx,r.ry,1,r.increment*U(.1,U(.4,1,s),s),s),i=tt(n,null,s);if(!s.disableMultiStroke&&0!==s.roughness){let[n]=te(r.increment,t,e,r.rx,r.ry,1.5,0,s),a=tt(n,null,s);i=i.concat(a)}return{estimatedPoints:a,opset:{type:"path",ops:i}}}function Z(t,e,s,r,n,a,i,o,l){let h=Math.abs(s/2),u=Math.abs(r/2);h+=J(.01*h,l),u+=J(.01*u,l);let p=n,c=a;for(;p<0;)p+=2*Math.PI,c+=2*Math.PI;c-p>2*Math.PI&&(p=0,c=2*Math.PI);let f=Math.min(2*Math.PI/l.curveStepCount/2,(c-p)/2),d=ts(f,t,e,h,u,p,c,1,l);if(!l.disableMultiStroke){let s=ts(f,t,e,h,u,p,c,1.5,l);d.push(...s)}return i&&(o?d.push(...K(t,e,t+h*Math.cos(p),e+u*Math.sin(p),l),...K(t,e,t+h*Math.cos(c),e+u*Math.sin(c),l)):d.push({op:"lineTo",data:[t,e]},{op:"lineTo",data:[t+h*Math.cos(p),e+u*Math.sin(p)]})),{type:"path",ops:d}}function q(t,e){let s=C(A(W(t))),r=[],n=[0,0],a=[0,0];for(let{key:t,data:i}of s)switch(t){case"M":a=[i[0],i[1]],n=[i[0],i[1]];break;case"L":r.push(...K(a[0],a[1],i[0],i[1],e)),a=[i[0],i[1]];break;case"C":{let[t,s,n,o,l,h]=i;r.push(...function(t,e,s,r,n,a,i,o){let l=[],h=[o.maxRandomnessOffset||1,(o.maxRandomnessOffset||1)+.3],u=[0,0],p=o.disableMultiStroke?1:2,c=o.preserveVertices;for(let f=0;f<p;f++)0===f?l.push({op:"move",data:[i[0],i[1]]}):l.push({op:"move",data:[i[0]+(c?0:J(h[0],o)),i[1]+(c?0:J(h[0],o))]}),u=c?[n,a]:[n+J(h[f],o),a+J(h[f],o)],l.push({op:"bcurveTo",data:[t+J(h[f],o),e+J(h[f],o),s+J(h[f],o),r+J(h[f],o),u[0],u[1]]});return l}(t,s,n,o,l,h,a,e)),a=[l,h];break}case"Z":r.push(...K(a[0],a[1],n[0],n[1],e)),a=[n[0],n[1]]}return{type:"path",ops:r}}function N(t,e){let s=[];for(let r of t)if(r.length){let t=e.maxRandomnessOffset||0,n=r.length;if(n>2){s.push({op:"move",data:[r[0][0]+J(t,e),r[0][1]+J(t,e)]});for(let a=1;a<n;a++)s.push({op:"lineTo",data:[r[a][0]+J(t,e),r[a][1]+J(t,e)]})}}return{type:"fillPath",ops:s}}function Q(t,e){return(function(t,e){let s=t.fillStyle||"hachure";if(!I[s])switch(s){case"zigzag":I[s]||(I[s]=new w(e));break;case"cross-hatch":I[s]||(I[s]=new S(e));break;case"dots":I[s]||(I[s]=new O(e));break;case"dashed":I[s]||(I[s]=new L(e));break;case"zigzag-line":I[s]||(I[s]=new j(e));break;default:I[s="hachure"]||(I[s]=new $(e))}return I[s]})(e,G).fillPolygons(t,e)}function H(t){let e=Object.assign({},t);return e.randomizer=void 0,t.seed&&(e.seed=t.seed+1),e}function D(t){return t.randomizer||(t.randomizer=new _(t.seed||0)),t.randomizer.next()}function U(t,e,s,r=1){return s.roughness*r*(D(s)*(e-t)+t)}function J(t,e,s=1){return U(-t,t,e,s)}function K(t,e,s,r,n,a=!1){let i=a?n.disableMultiStrokeFill:n.disableMultiStroke,o=Y(t,e,s,r,n,!0,!1);if(i)return o;let l=Y(t,e,s,r,n,!0,!0);return o.concat(l)}function Y(t,e,s,r,n,a,i){let o=Math.pow(t-s,2)+Math.pow(e-r,2),l=Math.sqrt(o),h=1;h=l<200?1:l>500?.4:-.0016668*l+1.233334;let u=n.maxRandomnessOffset||0;u*u*100>o&&(u=l/10);let p=u/2,c=.2+.2*D(n),f=n.bowing*n.maxRandomnessOffset*(r-e)/200,d=n.bowing*n.maxRandomnessOffset*(t-s)/200;f=J(f,n,h),d=J(d,n,h);let g=[],k=n.preserveVertices;return a&&(i?g.push({op:"move",data:[t+(k?0:J(p,n,h)),e+(k?0:J(p,n,h))]}):g.push({op:"move",data:[t+(k?0:J(u,n,h)),e+(k?0:J(u,n,h))]})),i?g.push({op:"bcurveTo",data:[f+t+(s-t)*c+J(p,n,h),d+e+(r-e)*c+J(p,n,h),f+t+2*(s-t)*c+J(p,n,h),d+e+2*(r-e)*c+J(p,n,h),s+(k?0:J(p,n,h)),r+(k?0:J(p,n,h))]}):g.push({op:"bcurveTo",data:[f+t+(s-t)*c+J(u,n,h),d+e+(r-e)*c+J(u,n,h),f+t+2*(s-t)*c+J(u,n,h),d+e+2*(r-e)*c+J(u,n,h),s+(k?0:J(u,n,h)),r+(k?0:J(u,n,h))]}),g}function X(t,e,s){if(!t.length)return[];let r=[];r.push([t[0][0]+J(e,s),t[0][1]+J(e,s)]),r.push([t[0][0]+J(e,s),t[0][1]+J(e,s)]);for(let n=1;n<t.length;n++)r.push([t[n][0]+J(e,s),t[n][1]+J(e,s)]),n===t.length-1&&r.push([t[n][0]+J(e,s),t[n][1]+J(e,s)]);return tt(r,null,s)}function tt(t,e,s){let r=t.length,n=[];if(r>3){let a=[],i=1-s.curveTightness;n.push({op:"move",data:[t[1][0],t[1][1]]});for(let e=1;e+2<r;e++){let s=t[e];a[0]=[s[0],s[1]],a[1]=[s[0]+(i*t[e+1][0]-i*t[e-1][0])/6,s[1]+(i*t[e+1][1]-i*t[e-1][1])/6],a[2]=[t[e+1][0]+(i*t[e][0]-i*t[e+2][0])/6,t[e+1][1]+(i*t[e][1]-i*t[e+2][1])/6],a[3]=[t[e+1][0],t[e+1][1]],n.push({op:"bcurveTo",data:[a[1][0],a[1][1],a[2][0],a[2][1],a[3][0],a[3][1]]})}if(e&&2===e.length){let t=s.maxRandomnessOffset;n.push({op:"lineTo",data:[e[0]+J(t,s),e[1]+J(t,s)]})}}else 3===r?(n.push({op:"move",data:[t[1][0],t[1][1]]}),n.push({op:"bcurveTo",data:[t[1][0],t[1][1],t[2][0],t[2][1],t[2][0],t[2][1]]})):2===r&&n.push(...Y(t[0][0],t[0][1],t[1][0],t[1][1],s,!0,!0));return n}function te(t,e,s,r,n,a,i,o){let l=0===o.roughness,h=[],u=[];if(l){t/=4,u.push([e+r*Math.cos(-t),s+n*Math.sin(-t)]);for(let a=0;a<=2*Math.PI;a+=t){let t=[e+r*Math.cos(a),s+n*Math.sin(a)];h.push(t),u.push(t)}u.push([e+ +r,s+0*n]),u.push([e+r*Math.cos(t),s+n*Math.sin(t)])}else{let l=J(.5,o)-Math.PI/2;u.push([J(a,o)+e+.9*r*Math.cos(l-t),J(a,o)+s+.9*n*Math.sin(l-t)]);let p=2*Math.PI+l-.01;for(let i=l;i<p;i+=t){let t=[J(a,o)+e+r*Math.cos(i),J(a,o)+s+n*Math.sin(i)];h.push(t),u.push(t)}u.push([J(a,o)+e+r*Math.cos(l+2*Math.PI+.5*i),J(a,o)+s+n*Math.sin(l+2*Math.PI+.5*i)]),u.push([J(a,o)+e+.98*r*Math.cos(l+i),J(a,o)+s+.98*n*Math.sin(l+i)]),u.push([J(a,o)+e+.9*r*Math.cos(l+.5*i),J(a,o)+s+.9*n*Math.sin(l+.5*i)])}return[u,h]}function ts(t,e,s,r,n,a,i,o,l){let h=a+J(.1,l),u=[];u.push([J(o,l)+e+.9*r*Math.cos(h-t),J(o,l)+s+.9*n*Math.sin(h-t)]);for(let a=h;a<=i;a+=t)u.push([J(o,l)+e+r*Math.cos(a),J(o,l)+s+n*Math.sin(a)]);return u.push([e+r*Math.cos(i),s+n*Math.sin(i)]),u.push([e+r*Math.cos(i),s+n*Math.sin(i)]),tt(u,null,l)}function tr(t,e=0){let s=t.length;if(s<3)throw Error("A curve must have at least three points.");let r=[];if(3===s)r.push([...t[0]],[...t[1]],[...t[2]],[...t[2]]);else{let s=[];s.push(t[0],t[0]);for(let e=1;e<t.length;e++)s.push(t[e]),e===t.length-1&&s.push(t[e]);let n=[],a=1-e;r.push([...s[0]]);for(let t=1;t+2<s.length;t++){let e=s[t];n[0]=[e[0],e[1]],n[1]=[e[0]+(a*s[t+1][0]-a*s[t-1][0])/6,e[1]+(a*s[t+1][1]-a*s[t-1][1])/6],n[2]=[s[t+1][0]+(a*s[t][0]-a*s[t+2][0])/6,s[t+1][1]+(a*s[t][1]-a*s[t+2][1])/6],n[3]=[s[t+1][0],s[t+1][1]],r.push(n[1],n[2],n[3])}}return r}function tn(t,e){return Math.pow(t[0]-e[0],2)+Math.pow(t[1]-e[1],2)}function ta(t,e,s){return[t[0]+(e[0]-t[0])*s,t[1]+(e[1]-t[1])*s]}function ti(t,e,s,r,n){let a=n||[],i=t[e],o=t[s-1],l=0,h=1;for(let r=e+1;r<s-1;++r){let e=function(t,e,s){let r=tn(e,s);if(0===r)return tn(t,e);let n=((t[0]-e[0])*(s[0]-e[0])+(t[1]-e[1])*(s[1]-e[1]))/r;return tn(t,ta(e,s,n=Math.max(0,Math.min(1,n))))}(t[r],i,o);e>l&&(l=e,h=r)}return Math.sqrt(l)>r?(ti(t,e,h+1,r,a),ti(t,h,s,r,a)):(a.length||a.push(i),a.push(o)),a}function to(t,e=.15,s){let r=[],n=(t.length-1)/3;for(let s=0;s<n;s++)!function t(e,s,r,n){let a,i,o,l,h,u,p,c,f=n||[];if(a=e[s+0],i=e[s+1],o=e[s+2],l=e[s+3],h=3*i[0]-2*a[0]-l[0],h*=h,u=3*i[1]-2*a[1]-l[1],u*=u,p=3*o[0]-2*l[0]-a[0],p*=p,c=3*o[1]-2*l[1]-a[1],c*=c,h<p&&(h=p),u<c&&(u=c),h+u<r){let t=e[s+0];f.length?Math.sqrt(tn(f[f.length-1],t))>1&&f.push(t):f.push(t),f.push(e[s+3])}else{let n=e[s+0],a=e[s+1],i=e[s+2],o=e[s+3],l=ta(n,a,.5),h=ta(a,i,.5),u=ta(i,o,.5),p=ta(l,h,.5),c=ta(h,u,.5),d=ta(p,c,.5);t([n,l,p,d],0,r,f),t([d,c,u,o],0,r,f)}return f}(t,3*s,e,r);return s&&s>0?ti(r,0,r.length,s):r}var tl="none",th=new class{constructor(t){this.defaultOptions={maxRandomnessOffset:2,roughness:1,bowing:1,stroke:"#000",strokeWidth:1,curveTightness:0,curveFitting:.95,curveStepCount:9,fillStyle:"hachure",fillWeight:-1,hachureAngle:-41,hachureGap:-1,dashOffset:-1,dashGap:-1,zigzagOffset:-1,seed:0,disableMultiStroke:!1,disableMultiStrokeFill:!1,preserveVertices:!1,fillShapeRoughnessGain:.8},this.config=t||{},this.config.options&&(this.defaultOptions=this._o(this.config.options))}static newSeed(){return Math.floor(0x80000000*Math.random())}_o(t){return t?Object.assign({},this.defaultOptions,t):this.defaultOptions}_d(t,e,s){return{shape:t,sets:e||[],options:s||this.defaultOptions}}line(t,e,s,r,n){let a=this._o(n);return this._d("line",[E(t,e,s,r,a)],a)}rectangle(t,e,s,r,n){let a=this._o(n),i=[],o=R([[t,e],[t+s,e],[t+s,e+r],[t,e+r]],!0,a);if(a.fill){let n=[[t,e],[t+s,e],[t+s,e+r],[t,e+r]];"solid"===a.fillStyle?i.push(N([n],a)):i.push(Q([n],a))}return a.stroke!==tl&&i.push(o),this._d("rectangle",i,a)}ellipse(t,e,s,r,n){let a=this._o(n),i=[],o=F(s,r,a),l=V(t,e,a,o);if(a.fill)if("solid"===a.fillStyle){let s=V(t,e,a,o).opset;s.type="fillPath",i.push(s)}else i.push(Q([l.estimatedPoints],a));return a.stroke!==tl&&i.push(l.opset),this._d("ellipse",i,a)}circle(t,e,s,r){let n=this.ellipse(t,e,s,s,r);return n.shape="circle",n}linearPath(t,e){let s=this._o(e);return this._d("linearPath",[R(t,!1,s)],s)}arc(t,e,s,r,n,a,i=!1,o){let l=this._o(o),h=[],u=Z(t,e,s,r,n,a,i,!0,l);if(i&&l.fill)if("solid"===l.fillStyle){let i=Object.assign({},l);i.disableMultiStroke=!0;let o=Z(t,e,s,r,n,a,!0,!1,i);o.type="fillPath",h.push(o)}else h.push(function(t,e,s,r,n,a,i){let o=Math.abs(s/2),l=Math.abs(r/2);o+=J(.01*o,i),l+=J(.01*l,i);let h=n,u=a;for(;h<0;)h+=2*Math.PI,u+=2*Math.PI;u-h>2*Math.PI&&(h=0,u=2*Math.PI);let p=(u-h)/i.curveStepCount,c=[];for(let s=h;s<=u;s+=p)c.push([t+o*Math.cos(s),e+l*Math.sin(s)]);return c.push([t+o*Math.cos(u),e+l*Math.sin(u)]),c.push([t,e]),Q([c],i)}(t,e,s,r,n,a,l));return l.stroke!==tl&&h.push(u),this._d("arc",h,l)}curve(t,e){let s=this._o(e),r=[],n=B(t,s);if(s.fill&&s.fill!==tl)if("solid"===s.fillStyle){let e=B(t,Object.assign(Object.assign({},s),{disableMultiStroke:!0,roughness:s.roughness?s.roughness+s.fillShapeRoughnessGain:0}));r.push({type:"fillPath",ops:this._mergedShape(e.ops)})}else{let e=[];if(t.length)for(let r of"number"==typeof t[0][0]?[t]:t)r.length<3?e.push(...r):3===r.length?e.push(...to(tr([r[0],r[0],r[1],r[2]]),10,(1+s.roughness)/2)):e.push(...to(tr(r),10,(1+s.roughness)/2));e.length&&r.push(Q([e],s))}return s.stroke!==tl&&r.push(n),this._d("curve",r,s)}polygon(t,e){let s=this._o(e),r=[],n=R(t,!0,s);return s.fill&&("solid"===s.fillStyle?r.push(N([t],s)):r.push(Q([t],s))),s.stroke!==tl&&r.push(n),this._d("polygon",r,s)}path(t,e){let s=this._o(e),r=[];if(!t)return this._d("path",r,s);t=(t||"").replace(/\n/g," ").replace(/(-\s)/g,"-").replace("/(ss)/g"," ");let n=s.fill&&"transparent"!==s.fill&&s.fill!==tl,a=s.stroke!==tl,i=!!(s.simplification&&s.simplification<1),o=i?4-4*(s.simplification||1):(1+s.roughness)/2,l=function(t,e,s){let r=C(A(W(t))),n=[],a=[],i=[0,0],o=[],l=()=>{o.length>=4&&a.push(...to(o,1)),o=[]},h=()=>{l(),a.length&&(n.push(a),a=[])};for(let{key:t,data:e}of r)switch(t){case"M":h(),i=[e[0],e[1]],a.push(i);break;case"L":l(),a.push([e[0],e[1]]);break;case"C":if(!o.length){let t=a.length?a[a.length-1]:i;o.push([t[0],t[1]])}o.push([e[0],e[1]]),o.push([e[2],e[3]]),o.push([e[4],e[5]]);break;case"Z":l(),a.push([i[0],i[1]])}if(h(),!s)return n;let u=[];for(let t of n){let e=ti(t,0,t.length,s);e.length&&u.push(e)}return u}(t,0,o),h=q(t,s);if(n)if("solid"===s.fillStyle)if(1===l.length){let e=q(t,Object.assign(Object.assign({},s),{disableMultiStroke:!0,roughness:s.roughness?s.roughness+s.fillShapeRoughnessGain:0}));r.push({type:"fillPath",ops:this._mergedShape(e.ops)})}else r.push(N(l,s));else r.push(Q(l,s));return a&&(i?l.forEach(t=>{r.push(R(t,!1,s))}):r.push(h)),this._d("path",r,s)}opsToPath(t,e){let s="";for(let r of t.ops){let t="number"==typeof e&&e>=0?r.data.map(t=>+t.toFixed(e)):r.data;switch(r.op){case"move":s+=`M${t[0]} ${t[1]} `;break;case"bcurveTo":s+=`C${t[0]} ${t[1]}, ${t[2]} ${t[3]}, ${t[4]} ${t[5]} `;break;case"lineTo":s+=`L${t[0]} ${t[1]} `}}return s.trim()}toPaths(t){let e=t.sets||[],s=t.options||this.defaultOptions,r=[];for(let t of e){let e=null;switch(t.type){case"path":e={d:this.opsToPath(t),stroke:s.stroke,strokeWidth:s.strokeWidth,fill:tl};break;case"fillPath":e={d:this.opsToPath(t),stroke:tl,strokeWidth:0,fill:s.fill||tl};break;case"fillSketch":e=this.fillSketch(t,s)}e&&r.push(e)}return r}fillSketch(t,e){let s=e.fillWeight;return s<0&&(s=e.strokeWidth/2),{d:this.opsToPath(t),stroke:e.fill||tl,strokeWidth:s,fill:tl}}_mergedShape(t){return t.filter((t,e)=>0===e||"move"!==t.op)}};function tu(t){return{roughness:t?.roughness??1,bowing:t?.bowing??1,passes:t?.passes??2,strokeWidth:t?.strokeWidth??1.6,fill:t?.fill??"none",hachureAngle:t?.hachureAngle??-41,hachureGap:t?.hachureGap??5,fillWeight:t?.fillWeight??.9}}function tp(t,e,s,r,n,a={},i){let o=[],l=function(t={}){return[`stroke-linecap="${t.lineCap??"round"}"`,`stroke-linejoin="${t.lineJoin??"round"}"`,...void 0!==t.miterLimit?[`stroke-miterlimit="${y(String(t.miterLimit))}"`]:[],...void 0!==t.dashArray?[`stroke-dasharray="${y(t.dashArray)}"`]:[],...void 0!==t.dashOffset?[`stroke-dashoffset="${y(String(t.dashOffset))}"`]:[],...void 0!==t.opacity?[`stroke-opacity="${y(String(t.opacity))}"`]:[],...void 0!==t.pathLength?[`pathLength="${y(String(t.pathLength))}"`]:[],...void 0!==t.paintOrder?[`paint-order="${y(t.paintOrder)}"`]:[],...void 0!==t.mixBlendMode?[`style="mix-blend-mode:${t.mixBlendMode}"`]:[],...t.nonScaling?['vector-effect="non-scaling-stroke"']:[]].join(" ")}(a),h=l?` ${l}`:" ",u=i?.stroke===void 0?"":` stroke-opacity="${y(String(i.stroke))}"`,p=i?.fill===void 0?"":` stroke-opacity="${y(String(i.fill))}"`;for(let a of t){let t=th.opsToPath(a,2);t&&("path"===a.type?o.push(`<path d="${t}" fill="none" stroke="${e}" stroke-width="${M(s)}"${h}${u} />`):"fillPath"===a.type?o.push(`<path d="${t}" fill="${r}" fill-opacity="${y(String(i?.fill??.92))}" stroke="none" />`):"fillSketch"===a.type&&o.push(`<path d="${t}" fill="none" stroke="${r}" stroke-width="${M(n.fillWeight)}"${p} />`))}return o.join(`
2
- `)}function tc(t,e,s,r,n,a,i,o,l){var h,u,p,c,f;let d={...o,...void 0!==i?{dashArray:i}:{}},g={seed:e,roughness:a.roughness,bowing:a.bowing,stroke:s,strokeWidth:r,disableMultiStroke:a.passes<2,...n?{fill:n,fillStyle:"solid"===a.fill?"solid":"hachure",fillWeight:a.fillWeight,hachureGap:a.hachureGap,hachureAngle:a.hachureAngle}:{},preserveVertices:!1};try{switch(t.kind){case"rect":let e;return(t.rx??0)>.5?tp(th.path((h=t.x,u=t.y,p=t.width,c=t.height,f=t.rx,e=Math.min(f,p/2,c/2),`M ${h+e} ${u} L ${h+p-e} ${u} Q ${h+p} ${u} ${h+p} ${u+e} L ${h+p} ${u+c-e} Q ${h+p} ${u+c} ${h+p-e} ${u+c} L ${h+e} ${u+c} Q ${h} ${u+c} ${h} ${u+c-e} L ${h} ${u+e} Q ${h} ${u} ${h+e} ${u} Z`),g).sets,s,r,n,a,d,l):tp(th.rectangle(t.x,t.y,t.width,t.height,g).sets,s,r,n,a,d,l);case"circle":return tp(th.circle(t.cx,t.cy,2*t.r,g).sets,s,r,n,a,d,l);case"ellipse":return tp(th.ellipse(t.cx,t.cy,2*t.rx,2*t.ry,g).sets,s,r,n,a,d,l);case"line":return tp(th.line(t.x1,t.y1,t.x2,t.y2,g).sets,s,r,void 0,a,d,l);case"polygon":return tp(th.polygon(t.points.map(t=>[t.x,t.y]),g).sets,s,r,n,a,d,l);case"polyline":return tp(th.linearPath(t.points.map(t=>[t.x,t.y]),g).sets,s,r,void 0,a,d,l);case"path":return tp(th.path(t.d,g).sets,s,r,n,a,d,l);case"compound":return""}}catch{return""}}function tf(t,e,s,r,n,a,i,o,l){if(t.sketcher){let h=t.sketcher(e,{seed:s,stroke:r,width:n,fill:a,p:t.p,style:t.ctx.style,dash:i,strokeProjection:o,opacity:l});if(null!==h)return h}return tc(e,s,r,n,a,t.p,i,o,l)}function td(t,e,s){return t.replace(`<${e} `,`<${e} ${s} `)}function tg(t){if(void 0===t)return 1;let e="number"==typeof t?t:parseFloat(t);return Number.isNaN(e)?1:e}function tk(t,e){return void 0!==t?t:e}function ty(t,e){return e&&""!==t?`<g transform="${c(e)}">${t}</g>`:t}function tM(t){return t.startsWith("var(--_node-fill")||t.startsWith("var(--_group")||"var(--bg)"===t||"var(--surface)"===t}function tm(t,e){return/<text\b[^>]*?\sfill="/.test(t)?t.replace(/(<text\b[^>]*?\sfill=")[^"]*(")/,`$1${y(e)}$2`):t.replace(/<text /,`<text fill="${y(e)}" `)}function tx(t,e){switch(t.kind){case"document":return h(t);case"shape":return"shape"===f(t.role).sketch?function(t,e){let s=e.p,r=h(t),n=function(t){let e=[],s=0,r,n=/<\/([a-zA-Z][a-zA-Z0-9-]*)>/g,a=[];for(let e of k(t)){let t=new Map(e.attributes.map(t=>[t.name,t.value]));a.push({index:e.start,kind:e.selfClosing?"self":"open",tag:e.name,attrs:t})}for(;null!==(r=n.exec(t));)a.push({index:r.index,kind:"close",tag:r[1]});for(let t of(a.sort((t,e)=>t.index-e.index),a))"self"===t.kind?0===s&&e.push({tag:t.tag,attrs:t.attrs}):"open"===t.kind?(0===s&&e.push({tag:t.tag,attrs:t.attrs}),s++):s--;return e}(r),a="compound"===t.geometry.kind?t.geometry.children:[t.geometry];if(n.length<a.length)return r;let i=r.split(`
3
- `),o=t=>1===i.length&&0===t?r:i[t]??"",l=[];for(let r=0;r<a.length;r++){var u,p;let i=n[r],h=tk(i.attrs.get("stroke"),t.paint.stroke),c=tk(i.attrs.get("fill"),t.paint.fill),f=x(e.ctx.seed,t.id,`outline:${r}`)||1,d=tg(tk(i.attrs.get("stroke-width"),t.paint.strokeWidth)),g=tk(i.attrs.get("stroke-dasharray"),t.paint.strokeDasharray),k=void 0!==h&&"none"!==h&&d>0,y=void 0!==c&&"none"!==c,M=y&&"none"!==s.fill?c:void 0,m=function(t,e){let s=t.get("opacity")??e.opacity,r=t.get("fill-opacity")??e.fillOpacity,n=t.get("stroke-opacity")??e.strokeOpacity;if(void 0===s&&void 0===r&&void 0===n)return;let a=t=>void 0===t?s:void 0===s?t:Number(s)*Number(t);return{fill:a(r),stroke:a(n)}}(i.attrs,t.paint)??{};if("wash"===s.fill&&t.channels?.category!==void 0&&["pie-slice","actor","legend","point","bar"].includes(t.role)&&(m.fill??="1"),!k){if(t.surfaceFragment&&y&&"none"===s.fill&&tM(c))continue;if(M){let s=tf(e,a[r],f,"none",0,M,g,void 0,m);if(s){l.push(ty(s,t.transform));continue}}l.push(o(r));continue}let v=Math.max(.6,Math.min(s.strokeWidth*d,4*s.strokeWidth)),b=tf(e,a[r],f,h,v,M,g,void 0,m);if(!b){l.push(o(r));continue}y&&"none"===s.fill&&!tM(c)&&l.push((u=o(r),p=i.tag,/style="/.test(u)?u.replace(/style="([^"]*)"/,(t,e)=>{let s=0===e.trim().length||/;\s*$/.test(e)?"":";";return`style="${e}${s}stroke:none"`}):td(u,p,'style="stroke:none"'))),l.push(ty(b,t.transform))}let c=l.filter(Boolean).join(`
4
- `);return t.identity&&!/\sdata-id=/.test(c)?g(c,t.identity):c}(t,e):h(t);case"connector":return"connector"===f(t.role).sketch?function(t,e){let s=h(t);if("invisible"===t.lineStyle||""===s)return s;let r=t.stroke.color,n=tg(t.stroke.width);if(n<=0)return s;let a=t.stroke.encodesValue?n:e.p.strokeWidth*n,i=x(e.ctx.seed,t.id,"stroke")||1,l=t.stroke.dash?"string"==typeof t.stroke.dash.array?t.stroke.dash.array:t.stroke.dash.array.join(" "):void 0,u={...void 0!==l?{dashArray:l}:{},...t.stroke.dash?.offset!==void 0?{dashOffset:t.stroke.dash.offset}:{},lineCap:t.stroke.lineCap,lineJoin:t.stroke.lineJoin,miterLimit:t.stroke.miterLimit,...void 0!==t.stroke.opacity?{opacity:t.stroke.opacity}:{},...void 0!==t.stroke.pathLength?{pathLength:t.stroke.pathLength}:{},...void 0!==t.stroke.paintOrder?{paintOrder:t.stroke.paintOrder}:{},...void 0!==t.stroke.mixBlendMode?{mixBlendMode:t.stroke.mixBlendMode}:{},nonScaling:t.stroke.nonScaling},p="",c=t.route.geometry;if("polyline"===c.kind)p=tf(e,{kind:"polyline",points:c.points},i,r,a,void 0,l,u);else if("line"===c.kind)p=tf(e,c,i,r,a,void 0,l,u);else{let s=o(c,t.route.closed);if(1===s.length&&(p=tf(e,{kind:"path",d:c.d},i,r,a,void 0,l,u)),!p&&c.points.length>1){let t=s.map((t,s)=>{let n=t.points[0],o=t.points.at(-1);return tf(e,{kind:"polyline",points:[...t.closed&&n&&o&&(n.x!==o.x||n.y!==o.y)?[...t.points,n]:t.points]},i+s,r,a,void 0,l,u)});p=t.every(Boolean)?t.join(`
5
- `):""}}if(!p)return s;let f=s.replace(/\sstroke-opacity=(?:"[^"]*"|'[^']*')/,' stroke-opacity="0"');return`${f===s?td(s,t.route.geometry.kind,'stroke-opacity="0"'):f}
6
- ${ty(p,t.transform)}`}(t,e):h(t);case"text":return f(t.role).textHalo?(void 0!==t.pageFill?tm(h(t),t.pageFill):function(t,e,s){let r=s.colors,n=void 0===r?void 0:d("var(--bg)",r);if(void 0===r||void 0===n)return t;let a=e.fontSize>=24?p:u,i=t=>{let e=d(t,r);return void 0!==e&&(l(e,n)??a)<a};return(void 0!==e.paint.fill&&i(e.paint.fill)?tm(t,"var(--_text)"):t).replace(/(<tspan\b[^>]*?\sfill=")([^"]*)(")/g,(t,e,s,r)=>i(s)?`${e}var(--_text)${r}`:t)}(h(t),t,e)).replace(/<text\b[^>]*>/g,t=>t.replace(/\s(?:paint-order|stroke|stroke-width|stroke-linejoin|stroke-linecap)="[^"]*"/g,"").replace(/^<text/,'<text paint-order="stroke" stroke="var(--bg)" stroke-width="3" stroke-linejoin="round" stroke-linecap="round"')):h(t);case"group":return r(t.open,t.close,t.join,t.children.map(t=>({serialized:tx(t.node,e),indent:t.indent})))}}function tv(r,a){return{id:r,capabilities:t(`backend:${r}`,"sketch",a?"hybrid":"rough"),drawNode:(t,e)=>tx(t,{ctx:e,p:tu(e.style),sketcher:a}),render(t,r){let i=e(t),o={ctx:r,p:tu(r.style),sketcher:a,colors:i.colors},l=[];for(let t=0;t<i.parts.length;t++){let e=i.parts[t];if(l.push(s(r,e,tx(e,o))),0===t&&"document"===e.kind&&"open"===e.element){let t=n(i,r);t&&l.push(t);let e=function(t,e){let s=t?.backdrop??"plain";if("paper-ruled"===s){let t=['<g data-backdrop="paper-ruled">'];for(let s=26;s<e.height;s+=26)t.push(` <line x1="0" y1="${s}" x2="${e.width}" y2="${s}" stroke="var(--_line)" stroke-width="0.5" opacity="0.14" />`);return t.push("</g>"),t.join(`
7
- `)}if("grid"===s){let t=['<g data-backdrop="grid">'];for(let s=22;s<e.width;s+=22)t.push(` <line x1="${s}" y1="0" x2="${s}" y2="${e.height}" stroke="var(--_line)" stroke-width="0.5" opacity="0.10" />`);for(let s=22;s<e.height;s+=22)t.push(` <line x1="0" y1="${s}" x2="${e.width}" y2="${s}" stroke="var(--_line)" stroke-width="0.5" opacity="0.10" />`);return t.push("</g>"),t.join(`
8
- `)}return""}(r.style,i);e&&l.push(e)}}return l.join(`
9
- `)}}}var tb=tv("rough"),{PI:t$}=Math,tP=t$+1e-4,tw=.5,tS=[1,1];function tO(t,e,s,r=t=>t){return t*r(.5-e*(.5-s))}var{min:tL}=Math;function tj(t,e,s){let r=tL(1,e/s);return tL(1,t+(tL(1,1-r)-t)*(.275*r))}function tI(t,e){return[t[0]+e[0],t[1]+e[1]]}function t_(t,e,s){return t[0]=e[0]+s[0],t[1]=e[1]+s[1],t}function tz(t,e){return[t[0]-e[0],t[1]-e[1]]}function tW(t,e,s){return t[0]=e[0]-s[0],t[1]=e[1]-s[1],t}function tA(t,e){return[t[0]*e,t[1]*e]}function tC(t,e,s){return t[0]=e[0]*s,t[1]=e[1]*s,t}function tT(t){return[t[1],-t[0]]}function tG(t,e){let s=e[0];return t[0]=e[1],t[1]=-s,t}function tE(t,e){return t[0]*e[0]+t[1]*e[1]}function tR(t,e){let s=t[0]-e[0],r=t[1]-e[1];return s*s+r*r}function tB(t){var e;return e=Math.hypot(t[0],t[1]),[t[0]/e,t[1]/e]}function tF(t,e,s){let r=Math.sin(s),n=Math.cos(s),a=t[0]-e[0],i=t[1]-e[1];return[a*n-i*r+e[0],a*r+i*n+e[1]]}function tV(t,e,s,r){let n=Math.sin(r),a=Math.cos(r),i=e[0]-s[0],o=e[1]-s[1];return t[0]=i*a-o*n+s[0],t[1]=i*n+o*a+s[1],t}function tZ(t,e,s){return tI(t,tA(tz(e,t),s))}var tq=[0,0],tN=[0,0],tQ=[0,0];function tH(t,e,s){return!1===t||void 0===t?0:!0===t?Math.max(e,s):t}var tD=[0,0];function tU(t){return null!=t&&t>=0}var tJ=t=>Math.round(1e3*t)/1e3,tK=(t,e,s)=>t+(e-t)*s,tY=t=>Math.max(0,Math.min(1,t));function tX(t){switch(t.kind){case"rect":return[{x:t.x,y:t.y},{x:t.x+t.width,y:t.y},{x:t.x+t.width,y:t.y+t.height},{x:t.x,y:t.y+t.height}];case"polygon":return t.points;case"circle":{let e=[];for(let s=0;s<24;s++){let r=s/24*Math.PI*2;e.push({x:t.cx+Math.cos(r)*t.r,y:t.cy+Math.sin(r)*t.r})}return e}case"ellipse":{let e=[];for(let s=0;s<28;s++){let r=s/28*Math.PI*2;e.push({x:t.cx+Math.cos(r)*t.rx,y:t.cy+Math.sin(r)*t.ry})}return e}default:return null}}function t0(t,e,s){if(t.length<2)return"";var r=function(t,e={}){return function(t,e={}){var s,r;let{size:n=16,smoothing:a=.5,thinning:i=.5,simulatePressure:o=!0,easing:l=t=>t,start:h={},end:u={},last:p=!1}=e,{cap:c=!0,easing:f=t=>t*(2-t)}=h,{cap:d=!0,easing:g=t=>--t*t*t+1}=u;if(0===t.length||n<=0)return[];let k=t[t.length-1].runningLength,y=tH(h.taper,n,k),M=tH(u.taper,n,k),m=(n*a)**2,x=[],v=[],b=t.slice(0,10).reduce((t,e)=>{let s=e.pressure;return o&&(s=tj(t,e.distance,n)),(t+s)/2},t[0].pressure),$=tO(n,i,t[t.length-1].pressure,l),P,w=t[0].vector,S=t[0].point,O=S,L=S,j=O,I=!1;for(let e=0;e<t.length;e++){let{pressure:s}=t[e],{point:r,vector:a,distance:h,runningLength:u}=t[e],p=e===t.length-1;if(!p&&k-u<3)continue;i?(o&&(s=tj(b,h,n)),$=tO(n,i,s,l)):$=n/2,void 0===P&&(P=$),$=Math.max(.01,$*Math.min(u<y?f(u/y):1,k-u<M?g((k-u)/M):1));let c=(p?t[e]:t[e+1]).vector,d=p?1:tE(a,c),_=0>tE(a,w)&&!I,z=null!==d&&d<0;if(_||z){tG(tq,w),tC(tq,tq,$);for(let t=0;t<=1;t+=.07692307692307693)tW(tN,r,tq),tV(tN,tN,r,tP*t),L=[tN[0],tN[1]],x.push(L),t_(tQ,r,tq),tV(tQ,tQ,r,-(tP*t)),j=[tQ[0],tQ[1]],v.push(j);S=L,O=j,z&&(I=!0);continue}if(I=!1,p){tG(tq,a),tC(tq,tq,$),x.push(tz(r,tq)),v.push(tI(r,tq));continue}(function(t,e,s,r){let n=s[0]-e[0],a=s[1]-e[1];t[0]=e[0]+n*r,t[1]=e[1]+a*r})(tq,c,a,d),tG(tq,tq),tC(tq,tq,$),tW(tN,r,tq),L=[tN[0],tN[1]],(e<=1||tR(S,L)>m)&&(x.push(L),S=L),t_(tQ,r,tq),j=[tQ[0],tQ[1]],(e<=1||tR(O,j)>m)&&(v.push(j),O=j),b=s,w=a}let _=[t[0].point[0],t[0].point[1]],z=t.length>1?[t[t.length-1].point[0],t[t.length-1].point[1]]:tI(t[0].point,[1,1]),W=[],A=[];if(1===t.length){if(!(y||M)||p)return function(t,e){var s;let r=(s=tB(tT(tz(t,tI(t,[1,1])))),tI(t,tA(s,-e))),n=[],a=1/13;for(let e=a;e<=1;e+=a)n.push(tF(r,t,2*tP*e));return n}(_,P||$)}else{let e,n,a;y||M&&1===t.length||(c?W.push(...function(t,e,s){let r=[],n=1/13;for(let s=n;s<=1;s+=n)r.push(tF(e,t,tP*s));return r}(_,v[0],0)):W.push(...(n=tA(e=tz(x[0],v[0]),.5),a=tA(e,.51),[tz(_,n),tz(_,a),tI(_,a),tI(_,n)])));let i=tT([-(s=t[t.length-1].vector)[0],-s[1]]);M||y&&1===t.length?A.push(z):d?A.push(...function(t,e,s,r){let n=[],a=tI(t,tA(e,s)),i=1/29;for(let e=i;e<1;e+=i)n.push(tF(a,t,3*tP*e));return n}(z,i,$,0)):A.push(tI(z,tA(i,r=$)),tI(z,tA(i,.99*r)),tz(z,tA(i,.99*r)),tz(z,tA(i,r)))}return x.concat(A,v.reverse(),W)}(function(t,e={}){let{streamline:s=.5,size:r=16,last:n=!1}=e;if(0===t.length)return[];let a=.15+(1-s)*.85,i=Array.isArray(t[0])?t:t.map(({x:t,y:e,pressure:s=tw})=>[t,e,s]);if(2===i.length){let t=i[1];i=i.slice(0,-1);for(let e=1;e<5;e++)i.push(tZ(i[0],t,e/4))}1===i.length&&(i=[...i,[...tI(i[0],tS),...i[0].slice(2)]]);let o=[{point:[i[0][0],i[0][1]],pressure:tU(i[0][2])?i[0][2]:.25,vector:[...tS],distance:0,runningLength:0}],l=!1,h=0,u=o[0],p=i.length-1;for(let t=1;t<i.length;t++){var c,f;let e=n&&t===p?[i[t][0],i[t][1]]:tZ(u.point,i[t],a);if((c=u.point)[0]===e[0]&&c[1]===e[1])continue;let s=(f=u.point,Math.hypot(e[1]-f[1],e[0]-f[0]));if(h+=s,t<p&&!l){if(h<r)continue;l=!0}tW(tD,u.point,e),u={point:e,pressure:tU(i[t][2])?i[t][2]:tw,vector:tB(tD),distance:s,runningLength:h},o.push(u)}return o[0].vector=o[1]?.vector||[0,0],o}(t,e),e)}(function(t,e,s,r){let n=s?[...t,t[0]]:t,a=[];for(let t=0;t<n.length-1;t++){let r=n[t],i=n[t+1],o=Math.hypot(i.x-r.x,i.y-r.y)||1,l=Math.max(1,Math.ceil(o/14)),h=-(i.y-r.y)/o,u=(i.x-r.x)/o;for(let o=0;o<l;o++){if(t>0&&0===o)continue;let p=o/l,c=s||(0!==t||0!==o)&&(t!==n.length-2||o!==l)?(e()-.5)*2:0,f={x:tK(r.x,i.x,p)+h*c,y:tK(r.y,i.y,p)+u*c},d=tY(.52+.12*Math.sin((t+p)/Math.max(1,n.length-1)*Math.PI*2)+(e()-.5)*.16);a.push([f.x,f.y,d])}}let i=n[n.length-1];return a.push([i.x,i.y,s?a[0]?.[2]??.55:.46]),a}(t,e,s.closed,0),{size:s.width,thinning:.58,smoothing:.62,streamline:.35,simulatePressure:!1,start:{cap:!0,taper:10*!s.closed},end:{cap:!0,taper:14*!s.closed},last:!0});if(r.length<2)return"";let n=[`M${tJ(r[0][0])},${tJ(r[0][1])}`];for(let t=1;t<r.length;t++){let[e,s]=r[t],[a,i]=r[(t+1)%r.length];n.push(`Q${tJ(e)},${tJ(s)} ${tJ((e+a)/2)},${tJ((s+i)/2)}`)}return n.push("Z"),n.join(" ")}var t1=Object.freeze([a,tb,tv("hybrid",(t,e)=>{var s,r,n,a,i,o,l,h;let u=e.style?.stroke??"jittered",p=(e.style?.fill??"none")==="wash"&&void 0!==e.fill,c="freehand"===u,f=e.opacity?.fill===void 0?void 0:Number(e.opacity.fill),d=e.opacity?.stroke===void 0?void 0:Number(e.opacity.stroke);if(!p&&!c)return null;let g=[];if(p){let a,i=m((0x9e3779b9^e.seed)>>>0),o="path"===t.kind?null:tX(t);o?g.push((s=e.fill,r=f??e.style?.washOpacity??.3,n=e.style?.washEdge??.34,a=o.map(t=>({x:t.x+(i()-.5)*3,y:t.y+(i()-.5)*3})).map((t,e)=>`${e?"L":"M"}${tJ(t.x)},${tJ(t.y)}`).join(" ")+" Z",`<path d="${a}" fill="${s}" fill-opacity="${r}" stroke="none" />
10
- <path d="${a}" fill="none" stroke="${s}" stroke-width="1.4" stroke-opacity="${n}" />`)):"path"===t.kind&&g.push(`<path d="${t.d}" fill="${e.fill}" fill-opacity="${f??e.style?.washOpacity??.3}" stroke="${e.fill}" stroke-width="1.4" stroke-opacity="${e.style?.washEdge??.34}" />`)}if(c&&!e.dash){let s=m(e.seed||1),r=Math.max(2.5,2.2*e.width),n="";if("polyline"===t.kind)n=t0(t.points,s,{width:r,closed:!1});else if("line"===t.kind)n=t0([{x:t.x1,y:t.y1},{x:t.x2,y:t.y2}],s,{width:r,closed:!1});else{let e=tX(t);e&&(n=t0(e,s,{width:r,closed:!0}))}if(n){let t=e.strokeProjection?[...void 0!==e.strokeProjection.opacity?[`opacity="${y(String(e.strokeProjection.opacity))}"`]:[],...void 0!==e.strokeProjection.paintOrder?[`paint-order="${y(e.strokeProjection.paintOrder)}"`]:[],...void 0!==e.strokeProjection.mixBlendMode?[`style="mix-blend-mode:${e.strokeProjection.mixBlendMode}"`]:[]].join(" "):"",s=void 0===d?"":` fill-opacity="${y(String(d))}"`;return g.push(`<path d="${n}" fill="${e.stroke}" stroke="none"${s}${t?` ${t}`:""} />`),g.join(`
11
- `)}}let k=(a=e.seed,i=e.stroke,o=e.width,l=p?void 0:e.fill,h=e.p,tc(t,a,i,o,l,h,e.dash,e.strokeProjection,e.opacity));return k&&g.push(k),g.length>0?g.join(`
12
- `):null})]);for(let t of t1)t!==a&&i(t);export{t1 as BUILTIN_BACKENDS};
@@ -1,10 +0,0 @@
1
- import{a as e}from"./chunk-B5PDJUJG.js";import"./chunk-7AHX3HH7.js";import"./chunk-NMQQMRIR.js";import{D as t,E as i,M as n,P as a,Q as r,R as o,V as l,W as s,X as d,_ as c,ta as h}from"./chunk-CXQWSLJV.js";import"./chunk-LH7HUDKW.js";import"./chunk-5FQ534HP.js";import{d as g}from"./chunk-SBXYR7Z3.js";import{a as p,e as m,l as u}from"./chunk-QQ2U2KAY.js";import{d as f}from"./chunk-5GE2SFLQ.js";import{s as y,u as x}from"./chunk-KXPF5KIU.js";import{d as b}from"./chunk-FBL4ONAL.js";import{a as _,b as w}from"./chunk-HDKHAM2V.js";import{D as v,R as k,S as F,a as S,b as $,c as M,d as C,e as W,g as L,h as R,i as z,m as I,q as E,r as q,s as P,t as T,w as B,y as O}from"./chunk-SJYDRC6G.js";import{M as A,U as X,ba as j,c as N,ca as D,j as U,na as Y,oa as H,r as Z,x as J}from"./chunk-GMTB5UTY.js";import{La as Q,Sa as G,cb as V,m as K,u as ee}from"./chunk-EUBVLDYV.js";import{A as et,E as ei,H as en,U as ea,a as er}from"./chunk-P7DO3MRP.js";import{J as eo,K as el}from"./chunk-N5ELX7LR.js";import{a as es}from"./chunk-5UVGUSD6.js";import"./chunk-CSFUKSU6.js";var ed=Object.freeze({id:"c4",upstreamId:"c4",maturity:"experimental",label:"C4",headers:["C4Context","C4Container","C4Component","C4Dynamic","C4Deployment"],aliases:[],config:{section:"c4",keys:["diagramMarginX","diagramMarginY","c4ShapeMargin","c4ShapePadding","width","height","boxMargin","nextLinePaddingX","c4ShapeInRow","c4BoundaryInRow","wrap","wrapPadding","maxWidth","compact","typeLegend","personFontSize","personFontWeight","person_bg_color","person_border_color","external_personFontSize","external_personFontWeight","external_person_bg_color","external_person_border_color","systemFontSize","systemFontWeight","system_bg_color","system_border_color","system_dbFontSize","system_dbFontWeight","system_db_bg_color","system_db_border_color","system_queueFontSize","system_queueFontWeight","system_queue_bg_color","system_queue_border_color","external_systemFontSize","external_systemFontWeight","external_system_bg_color","external_system_border_color","external_system_dbFontSize","external_system_dbFontWeight","external_system_db_bg_color","external_system_db_border_color","external_system_queueFontSize","external_system_queueFontWeight","external_system_queue_bg_color","external_system_queue_border_color","containerFontSize","containerFontWeight","container_bg_color","container_border_color","container_dbFontSize","container_dbFontWeight","container_db_bg_color","container_db_border_color","container_queueFontSize","container_queueFontWeight","container_queue_bg_color","container_queue_border_color","external_containerFontSize","external_containerFontWeight","external_container_bg_color","external_container_border_color","external_container_dbFontSize","external_container_dbFontWeight","external_container_db_bg_color","external_container_db_border_color","external_container_queueFontSize","external_container_queueFontWeight","external_container_queue_bg_color","external_container_queue_border_color","componentFontSize","componentFontWeight","component_bg_color","component_border_color","component_dbFontSize","component_dbFontWeight","component_db_bg_color","component_db_border_color","component_queueFontSize","component_queueFontWeight","component_queue_bg_color","component_queue_border_color","external_componentFontSize","external_componentFontWeight","external_component_bg_color","external_component_border_color","external_component_dbFontSize","external_component_dbFontWeight","external_component_db_bg_color","external_component_db_border_color","external_component_queueFontSize","external_component_queueFontWeight","external_component_queue_bg_color","external_component_queue_border_color","boundaryFontSize","boundaryFontWeight","boundary_bg_color","boundary_border_color","nodeFontSize","nodeFontWeight","node_bg_color","node_border_color","useMaxWidth","personFont","personFontFamily","external_personFont","external_personFontFamily","systemFont","systemFontFamily","system_dbFont","system_dbFontFamily","system_queueFont","system_queueFontFamily","external_systemFont","external_systemFontFamily","external_system_dbFont","external_system_dbFontFamily","external_system_queueFont","external_system_queueFontFamily","containerFont","containerFontFamily","container_dbFont","container_dbFontFamily","container_queueFont","container_queueFontFamily","external_containerFont","external_containerFontFamily","external_container_dbFont","external_container_dbFontFamily","external_container_queueFont","external_container_queueFontFamily","componentFont","componentFontFamily","component_dbFont","component_dbFontFamily","component_queueFont","component_queueFontFamily","external_componentFont","external_componentFontFamily","external_component_dbFont","external_component_dbFontFamily","external_component_queueFont","external_component_queueFontFamily","boundaryFont","boundaryFontFamily","nodeFont","nodeFontFamily","messageFont","messageFontFamily","messageFontSize","messageFontWeight"],noopKeys:["useMaxWidth","personFont","personFontFamily","external_personFont","external_personFontFamily","systemFont","systemFontFamily","system_dbFont","system_dbFontFamily","system_queueFont","system_queueFontFamily","external_systemFont","external_systemFontFamily","external_system_dbFont","external_system_dbFontFamily","external_system_queueFont","external_system_queueFontFamily","containerFont","containerFontFamily","container_dbFont","container_dbFontFamily","container_queueFont","container_queueFontFamily","external_containerFont","external_containerFontFamily","external_container_dbFont","external_container_dbFontFamily","external_container_queueFont","external_container_queueFontFamily","componentFont","componentFontFamily","component_dbFont","component_dbFontFamily","component_queueFont","component_queueFontFamily","external_componentFont","external_componentFontFamily","external_component_dbFont","external_component_dbFontFamily","external_component_queueFont","external_component_queueFontFamily","boundaryFont","boundaryFontFamily","nodeFont","nodeFontFamily","messageFont","messageFontFamily","messageFontSize","messageFontWeight"]},identity:{id:"family:c4",kind:"family",version:"1.0.0",compatibility:{core:"0.5.1"},provenance:{owner:"agentic-mermaid",source:"built-in"}},collisionPriority:100,semanticChannels:["category","status"],semanticRoles:["prelude","title","defs","chrome","group","group-header","edge","edge-label","node","label","legend"],scenePrimitiveEvidence:[{role:"prelude",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"title",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"defs",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"defs",primitive:"marker",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"chrome",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"chrome",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"group",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"group",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"group-header",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"group-header",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"edge",primitive:"connector",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"edge-label",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"node",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"node",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"label",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"legend",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"legend",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"legend",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]}],example:`C4Context
2
- Person(user, "Customer")
3
- System(api, "API", "Serves requests")
4
- Rel(user, api, "Uses", "HTTPS")`,detect:eo,detectLoose:el}),ec=new Map([["person","person"],["box","rectangle"],["rectangle","rectangle"],["cylinder","database"],["database","database"],["db","database"],["queue","queue"],["pipe","queue"]]);function eh(e){return void 0===e?void 0:ec.get(e.trim().toLowerCase())}function eg(e){return eh(e.style.shape)??e.shape}var ep=(e,t,i=0)=>{if(void 0===e)return t;if("number"!=typeof e||!Number.isFinite(e)||e<i||e>1e4)throw RangeError(`Invalid C4 numeric configuration ${JSON.stringify(e)}; expected a finite number from ${i} to 10000`);return e},em=(e,t)=>{let i=ep(e,t,1);if(!Number.isSafeInteger(i))throw RangeError(`Invalid C4 row count ${JSON.stringify(e)}; expected a positive integer`);return i};function eu(e={},t={}){let i=!0===(e=Object.fromEntries(Object.entries(e).filter(([e,t])=>e_[e]?.valid(t)??!0))).compact;return{compact:i,typeLegend:!1!==e.typeLegend,...void 0===e.maxWidth?{}:{maxWidth:ep(e.maxWidth,1e4,1)},marginX:ep(e.diagramMarginX,i?16:24),marginY:ep(e.diagramMarginY,i?16:24),gap:ep(e.c4ShapeMargin,i?32:56),padding:ep(e.c4ShapePadding,i?10:16,4),minimumWidth:ep(e.width,i?120:150,24),minimumHeight:ep(e.height,i?60:76,24),boundaryPadding:ep(e.boxMargin,i?16:24,12),rowGap:ep(e.nextLinePaddingX,i?36:56),shapesPerRow:em(e.c4ShapeInRow,3),boundariesPerRow:em(e.c4BoundaryInRow,2),...!1===e.wrap?{}:{wrapWidth:ep(e.wrapPadding,i?220:260,40)},input:e,themeVariables:t}}function ef(e,t){let i="external"in e?`${e.external?"external_":""}${e.kind}${"database"===e.shape?"_db":"queue"===e.shape?"_queue":""}`:"deployment"===e.kind?"node":"boundary",{input:n,themeVariables:a}=t,r=(t,i)=>{if(void 0===t)return;let n=V(t,"color"!==i);if(void 0===n)throw new j(`C4 ${e.id}`,i,String(t),`UpdateElementStyle(${e.id})`);return n},o=n[`${i}FontSize`],l=n[`${i}FontWeight`];return{fill:r(e.style.bgColor??n[`${i}_bg_color`]??a[`${i}_bg_color`],"fill"),stroke:r(e.style.borderColor??n[`${i}_border_color`]??a[`${i}_border_color`],"stroke"),text:r(e.style.fontColor??e.style.textColor,"color"),...void 0===o?{}:{fontSize:ep(o,13,1)},...void 0===l?{}:{fontWeight:ep("string"==typeof l&&/^\d+$/.test(l)?Number(l):l,500,1)},dashed:void 0===e.style.lineStyle?"external"in e&&e.external:"dashed"===e.style.lineStyle||"dotted"===e.style.lineStyle}}var ey=["person","external_person",...["system","container","component"].flatMap(e=>["","external_"].flatMap(t=>["","_db","_queue"].map(i=>`${t}${e}${i}`))),"boundary","node"],ex=Object.freeze(["diagramMarginX","diagramMarginY","c4ShapeMargin","c4ShapePadding","width","height","boxMargin","nextLinePaddingX","c4ShapeInRow","c4BoundaryInRow","wrap","wrapPadding","maxWidth","compact","typeLegend",...ey.flatMap(e=>[`${e}FontSize`,`${e}FontWeight`,`${e}_bg_color`,`${e}_border_color`])]),eb=(Object.freeze(["useMaxWidth",...[...ey,"message"].flatMap(e=>[`${e}Font`,`${e}FontFamily`]),"messageFontSize","messageFontWeight"]),Object.freeze({maxWidth:1,diagramMarginX:0,diagramMarginY:0,c4ShapeMargin:0,c4ShapePadding:4,width:24,height:24,boxMargin:12,nextLinePaddingX:0,c4ShapeInRow:1,c4BoundaryInRow:1,wrapPadding:40})),e_=(()=>{let e=Object.assign(Object.create(null),{wrap:m,compact:m,typeLegend:m});for(let[t,i]of Object.entries(eb)){let n=u(i,1e4);e[t]="c4ShapeInRow"===t||"c4BoundaryInRow"===t?p("an integer from 1 through 10000",e=>Number.isSafeInteger(e)&&n.valid(e)):n}for(let t of ex)if(/FontSize$/.test(t)&&(e[t]=u(1,1e4)),/FontWeight$/.test(t)){let i=u(1,1e3);e[t]=p(i.expected,e=>i.valid("string"==typeof e&&/^\d+$/.test(e)?Number(e):e))}return Object.freeze(e)})();function ew(e){let t=new Map([...e.elements,...e.boundaries].map(e=>[e.id,e.id])),i=new Map(e.relationships.map(e=>[e.id,e.id]));return{nodes:t,relationships:i,generated:ea([...t.keys(),...i.keys(),...e.legend?.entries.map(e=>e.id)??[]])}}function ev(e){let t=`${e.external?"External ":""}${e.kind[0].toUpperCase()}${e.kind.slice(1)}${"database"===e.shape?": Database":"queue"===e.shape?": Queue":""}`,i=e.style.techn??e.technology;return[e.label,`[${t}${i?`: ${i}`:""}]`,e.description,e.tags.length?`[tags: ${e.tags.join(", ")}]`:void 0,e.sprite?`[sprite: ${e.sprite}]`:void 0].filter(e=>void 0!==e&&""!==e).join(`
5
- `)}function ek(e){let t="deployment"===e.kind?"Deployment Node":`${"boundary"===e.kind?"":`${e.kind[0].toUpperCase()}${e.kind.slice(1)} `}Boundary`;return[e.label,`[${t}${e.type?`: ${e.type}`:""}]`,e.description,e.tags.length?`[tags: ${e.tags.join(", ")}]`:void 0,e.sprite?`[sprite: ${e.sprite}]`:void 0].filter(e=>void 0!==e&&""!==e).join(`
6
- `)}function eF(e,t){let i=t.index??("C4Dynamic"===e.variant?String(t.order):void 0);return[`${void 0!==i?`${i}: `:""}${t.label}`,t.technology?`[${t.technology}]`:void 0,t.description,t.tags.length?`[tags: ${t.tags.join(", ")}]`:void 0,t.sprite?`[sprite: ${t.sprite}]`:void 0].filter(e=>void 0!==e&&""!==e).join(`
7
- `)}function eS(e,t){return e.statements.find(e=>e.id===t)?.span.line}function e$(e,t){let i=ew(e),n=new Map;for(let a of e.elements){let e=`${a.external?"external-":""}${a.kind}:${a.shape}`,r=`${a.external?"External ":""}${a.kind[0].toUpperCase()}${a.kind.slice(1)}${"database"===a.shape?" / Database":"queue"===a.shape?" / Queue":""}`;if(!n.has(e)){let o=t?ef(a,t):void 0;n.set(e,{id:i.generated(`c4:legend:${e}`,["c4","legend",e]),label:r,kind:"element",shape:eg(a),external:a.external,style:{...a.style,...o?.fill?{bgColor:o.fill}:{},...o?.stroke?{borderColor:o.stroke}:{}}})}}return[...t?.typeLegend!==!1&&n.size>1||e.legend?.visible?[...n.values()]:[],...e.legend?.visible?e.legend.entries:[]]}var eM=class extends RangeError{code="C4_ROUTE_WORK_LIMIT";constructor(){super("C4_ROUTE_WORK_LIMIT: physical corridor checks exceed 400000; split the diagram or reduce its relationships"),this.name="C4RouteWorkLimitError"}},eC={T:{x:0,y:-1},R:{x:1,y:0},B:{x:0,y:1},L:{x:-1,y:0}},eW=(e,t)=>e.x<=t.x&&e.y<=t.y&&e.x+e.width>=t.x+t.width&&e.y+e.height>=t.y+t.height,eL=e=>({x:e.x+e.width/2,y:e.y+e.height/2});function eR(e,t,i){if("T"===t||"B"===t){let n=e.cylinder?8*(1-Math.sqrt(Math.max(0,1-(2*i-1)**2))):0;return{x:e.x+e.width*i,y:e.y+("B"===t?e.height-n:n)}}let n=e.container?e.headerHeight??0:8*!!e.cylinder;return{x:e.x+("R"===t?e.width:0),y:e.y+n+(e.height-n-8*!!e.cylinder)*i}}function ez(e,t,i,n){return eR(e,t,(i+1)/(n+1))}var eI={T:"B",R:"L",B:"T",L:"R"};function eE(e){if(!e.label||!e.labelPosition||!e.labelBlock)return;let t=e.labelBlock.width+20,i=e.labelBlock.height+16;return{x:e.labelPosition.x-t/2,y:e.labelPosition.y-i/2,width:t,height:i}}var eq=(e,t)=>Math.max(0,Math.min(e.x+e.width,t.x+t.width)-Math.max(e.x,t.x))*Math.max(0,Math.min(e.y+e.height,t.y+t.height)-Math.max(e.y,t.y)),eP=(e,t)=>({x:e.x-t,y:e.y-t,width:e.width+2*t,height:e.height+2*t}),eT=e=>e.flatMap(e=>[e,...eT(e.children)]);function eB(e,t,i){let n=0,a=1;for(let r of["x","y"]){let o=t[r]-e[r],l=i[r]+.01,s=i[r]+("x"===r?i.width:i.height)-.01;if(.001>Math.abs(o)){if(e[r]<=l||e[r]>=s)return!1;continue}let d=(l-e[r])/o,c=(s-e[r])/o;if((n=Math.max(n,Math.min(d,c)))>=(a=Math.min(a,Math.max(d,c))))return!1}return n<a}function eO(e,t){let i=[],n=e.inlineStyle?.["stroke-width"]?1:t*("thick"===e.style?2:1),a=I.width*n,r=(e.inlineStyle?.["stroke-width"]?I.width:I.height)*n/2,o=.375*n;for(let t of[!0,!1]){if(!(t?e.hasArrowStart:e.hasArrowEnd))continue;let n=e.points.at(t?0:-1),l=(t?e.points.slice(1):e.points.slice(0,-1).reverse()).find(e=>n&&Math.hypot(e.x-n.x,e.y-n.y)>.01);if(!n||!l)continue;let s=Math.hypot(n.x-l.x,n.y-l.y),d=(n.x-l.x)/s,c=(n.y-l.y)/s,h=[n,{x:n.x-d*a-c*r,y:n.y-c*a+d*r},{x:n.x-d*a+c*r,y:n.y-c*a-d*r}],g=Math.min(...h.map(e=>e.x)),p=Math.min(...h.map(e=>e.y));i.push({...eP({x:g,y:p,width:Math.max(...h.map(e=>e.x))-g,height:Math.max(...h.map(e=>e.y))-p},o),endpoint:t?e.source:e.target,polygon:h,strokePadding:o})}return i}function eA(e,t){return[...e,...eT(t).flatMap(e=>[{x:e.x,y:e.y,width:e.width,height:e.headerHeight??0},{x:e.x,y:e.y,width:1,height:e.height},{x:e.x+e.width-1,y:e.y,width:1,height:e.height},{x:e.x,y:e.y+e.height-1,width:e.width,height:1}])]}var eX=["C4Context","C4Container","C4Component","C4Dynamic","C4Deployment"],ej=class extends Z{},eN=/^(Person|System|Container|Component)(Db|Queue)?(_Ext)?$/,eD={Boundary:"boundary",Enterprise_Boundary:"enterprise",System_Boundary:"system",Container_Boundary:"container",Deployment_Node:"deployment",Node:"deployment",Node_L:"deployment",Node_R:"deployment"},eU=new Set(["Rel","BiRel","Rel_U","Rel_Up","Rel_D","Rel_Down","Rel_L","Rel_Left","Rel_R","Rel_Right","Rel_Back","RelIndex"]),eY={U:"BT",Up:"BT",D:"TB",Down:"TB",L:"RL",Left:"RL",R:"LR",Right:"LR"},eH=["elementName","bgColor","fontColor","borderColor","shadowing","shape","sprite","techn","legendText","legendSprite"],eZ=["from","to","textColor","lineColor","offsetX","offsetY"],eJ=["tagStereo","bgColor","fontColor","borderColor","shadowing","shape","sprite","techn","legendText","legendSprite"],eQ=["tagStereo","textColor","lineColor","lineStyle","sprite","techn","legendText","legendSprite"];function eG(e,t){if(!W("c4"))return;let{start:i,end:n,line:a,column:r}=e.span;L("c4",t,e.raw,{line:a,column:r,offset:i,endOffset:n,unit:"physical"})}function eV(e,t=!0){let i=e.trim();if(i.length>=2&&('"'===i[0]||"'"===i[0])&&i.at(-1)===i[0]){let e=i.slice(1,-1).trim();return t?g(e):e}return t?g(i):i}function eK(e,t,i){let n;for(let a=0;a<e.length;a++)(e[a].name??t[a])===i&&(n=e[a]);if(n)return g(ei(eV(n.name?n.raw.replace(/^\s*\$[A-Za-z_][A-Za-z_0-9]*\s*=/,""):n.raw,!1)))}function e0(e,t=[]){return e.length>0&&e.length>=t.length&&e.every((i,n)=>{if(i.name&&(t.includes(i.name)||n<t.length&&"label"!==t[n])||i.raw.includes("%%{"))return!1;let a=(i.name?i.raw.replace(/^\s*\$[A-Za-z_][A-Za-z_0-9]*\s*=/,""):i.raw).trim();return i.name?/^ *\$[A-Za-z_][A-Za-z_0-9]* *= *"[^"]+"$/.test(i.raw):a.startsWith('"')?/^ *"[^"]*"$/.test(i.raw):""===i.raw&&n<e.length-1||n<e.length-1&&a.length>0&&!/^[\$']|[(),\r\n]/.test(a)})}function e4(e,t,i){if(!e.name&&t<i.length-1&&!/^["'$)]/.test(e.raw.trim())&&!e.raw.includes(","))return!1;for(let t of(e.name?e.raw.replace(/^\s*\$[A-Za-z_][A-Za-z_0-9]*\s*=/,""):e.raw).matchAll(/"[^"]*"|'[^']*'|(\$[A-Za-z_][A-Za-z_0-9]*\s*(?:=|["']))/g))if(t[1])return!0;return!1}function e1(e,t){let i=Object.create(null);for(let n=0;n<e.length;n++){let a=e[n],r=a.name??t[n];void 0!==r&&(i[r]=a.value)}return i}function e2(e){return e.startsWith("Person")||e.startsWith("System")?["alias","label","descr","sprite","tags","link"]:["alias","label","techn","descr","sprite","tags","link"]}function e3(e){return"deployment"===eD[e]?["alias","label","type","descr","sprite","tags","link"]:"Boundary"===e?["alias","label","type","tags","link"]:["alias","label","tags","link"]}function e6(e){return"RelIndex"===e?["index","from","to","label","tags","link"]:["from","to","label","techn","descr","sprite","tags","link"]}function e5(e){return e?e.split("+").map(e=>e.trim()).filter(Boolean):[]}function e8(e){return""===e?void 0:e}function e9(e,t,i){let n=e[t];if(void 0===n||"label"!==t&&!n.trim())throw Error(`C4: ${i} requires ${"label"===t?"a":"a non-empty"} ${t}`);return n}function e7(e,t,i,n){let a=eK(e,t,"label");return void 0!==a?a:e[t.indexOf("label")]?.name?"":e9(i,"label",n)}function te(e){let{args:t,style:i,effectiveLink:n,statementId:a,...r}=e;return"name"in e?JSON.stringify([e.name,e.args.map(e=>[e.name,e.value])]):JSON.stringify(r)}function tt(e,t,i,n,a="warning"){e.diagnostics.push({code:"UNSUPPORTED_SYNTAX",syntax:i,severity:a,statementId:t,message:n})}var ti=new Set(["UpdateElementStyle","UpdateRelStyle","UpdateLayoutConfig"]);function tn(e,t){return Object.fromEntries(Object.entries(e).filter(([e,i])=>!t.includes(e)&&""!==i))}var ta=N(function(t,i){let n=i.positioned,{body:a,config:r,identities:o}=n,l=E(i.resolved.renderOptions,void 0,i.resolved.styleFace),s=e=>e&&"strict"!==i.resolved.renderOptions.security&&b(e)?` data-href="${en(e)}" role="link" tabindex="0"`:"",d=(e,t)=>o.generated(`c4:${e}:${t}`,["c4",e,t]),c=(e,i,n,a,r=!1)=>t.shape({id:d(e,i),role:r?"group":"node",geometry:n,paint:a}),h=e=>[`data-id="${en(e.id)}"`,`data-c4-kind="${en(e.kind)}"`,`data-c4-macro="${en(e.macro)}"`,...e.parentId?[`data-parent-id="${en(e.parentId)}"`]:[],...e.tags.length?[`data-tags="${en(JSON.stringify(e.tags))}"`]:[],...s(e.effectiveLink??e.link)?[s(e.effectiveLink??e.link)]:[],...e.sprite?[`data-sprite="${en(e.sprite)}"`]:[],...void 0!==eS(a,e.statementId)?[`data-source-line="${eS(a,e.statementId)}"`]:[],..."external"in e?[`data-external="${e.external}"`,`data-c4-shape="${e.shape}"`,`data-effective-c4-shape="${eg(e)}"`]:[`data-alignment="${e.alignment??"center"}"`]].join(" "),g=new Map(a.boundaries.map(e=>[e.id,e])),p=e=>{let n=g.get(e.id),a=ef(n,r),{x:o,y:s,width:m,height:u}=e,f=a.stroke??l.groupBorderColor??"var(--_node-stroke)",y=a.fill??l.groupFillColor??"var(--_group-fill)",x=a.fill??l.groupHeaderFillColor??"var(--_group-hdr)",b=a.text??Y(a.fill?{fill:a.fill}:void 0,l.groupTextColor??H("var(--_text-sec)",x,i.colors)),_=e.headerHeight??36,w=[],v=e=>w.push({node:e,indent:2}),k="solid"===n.style.lineStyle?void 0:"dotted"===n.style.lineStyle?"1 3":"dashed"===n.style.lineStyle?"5 3":"deployment"===n.kind?void 0:"6 4";v(c(n.id,"boundary-frame",{kind:"rect",x:o,y:s,width:m,height:u,rx:l.groupCornerRadius,ry:l.groupCornerRadius},{fill:y,stroke:f,strokeWidth:String(l.groupLineWidth),...k?{strokeDasharray:k}:{}},!0));let F={kind:"path",d:Q(o,s,m,_,l.groupCornerRadius)},S={fill:x,stroke:f,strokeWidth:String(l.groupLineWidth)};v(t.shape({id:d(n.id,"boundary-band"),role:"group-header",geometry:F,paint:S}));let $=e.labelBlock,M="left"===n.alignment?"start":"right"===n.alignment?"end":"middle",C="left"===n.alignment?o+r.padding:"right"===n.alignment?o+m-r.padding:o+m/2,W=s+_/2;for(let i of(v(t.text({id:d(n.id,"boundary-text"),role:"group-header",text:$.text,block:$,x:C,y:W,fontSize:$.fontSize,fontWeight:$.fontWeight,letterSpacing:$.letterSpacing,anchor:M,paint:{fill:b}})),e.children))v(p(i));return t.group({id:d(n.id,"frame"),role:"group",open:`<g class="cluster c4-boundary" ${h(n)}>`,close:"</g>",children:w,channels:{category:n.kind}})},m=new Map(a.relationships.map(e=>[e.id,e])),u=e({...t,connector:e=>{let n=G(e),a=m.get(n.identity?.id??"");if(!a)return t.connector(e);let r="dotted"===a.style.lineStyle?{...n.stroke,dash:{array:"1 3"}}:n.stroke,o="strict"===i.resolved.renderOptions.security?void 0:a.effectiveLink??a.link,{markers:l}=n,s=n.labels[0],c={className:"edge",data:{style:n.lineStyle,"arrow-start":String(!!l.start),"arrow-end":String(!!l.end),...l.start?{"marker-start":l.start.shape}:{},...l.end?{"marker-end":l.end.shape}:{},...s?{label:er(s.text)}:{},"c4-macro":a.macro,"authored-from":a.from,"authored-to":a.to,order:String(a.order),...void 0!==a.index?{index:a.index}:{},...a.tags.length?{tags:JSON.stringify(a.tags)}:{},...o&&b(o)?{href:o}:{}},...o&&b(o)?{tabIndex:0}:{}},h={id:d(a.id,"relationship"),role:"edge",identity:n.identity,geometry:n.route.geometry,paint:{stroke:r.color,strokeWidth:String(r.width)},lineStyle:n.lineStyle,endpoints:n.endpoints,relationship:{...n.relationship,kind:`c4-${a.macro}`},route:n.route,stroke:r,markers:n.markers,hit:n.hit,labels:n.labels.map(e=>({...e,visual:{kind:"companion",markId:d(a.id,"label-text")},...a.style.textColor?{paint:{...e.paint,fill:a.style.textColor}}:{}})),channels:{category:"relationship",...a.tags.length?{status:a.tags.join(",")}:{}},attributes:c};return t.connector(h)}},i,{surfaces:!1,edgeLabels:!1,beforeEdges:()=>n.groups.map(p)}),f=u.parts,y=n.edges.flatMap(e=>{if(!e.label||!e.labelBlock||!e.labelPosition)return[];let n=m.get(e.id),a=e.labelBlock,{x:r,y:o}=e.labelPosition,s=n.style.textColor??n.style.fontColor??l.edgeTextColor??"var(--_text-sec)",c={kind:"rect",...eE(e),rx:3,ry:3};return[t.group({id:d(n.id,"relationship-label"),role:"edge-label",open:`<g class="edge-label" data-id="${en(d(n.id,"label"))}" data-role="edge-label" data-edge-id="${en(n.id)}" data-from="${en(n.source)}" data-to="${en(n.target)}">`,close:"</g>",children:[{indent:2,node:t.shape({id:d(n.id,"label-halo"),role:"chrome",geometry:c,paint:{fill:"var(--bg)",stroke:"var(--_inner-stroke)",strokeWidth:"1"}})},{indent:2,node:t.text({id:d(n.id,"label-text"),role:"label",text:a.text,block:a,x:r,y:o,fontSize:a.fontSize,fontWeight:a.fontWeight,letterSpacing:a.letterSpacing,anchor:"middle",paint:{fill:s},pageFill:n.style.textColor??n.style.fontColor??H("var(--_text-sec)","var(--bg)",i.colors)})}]})]});if(f.splice(f.length-1,0,...y,...n.nodes.map(e=>((e,n)=>{let{x:a,y:o,width:s,height:g}=n,p=ef(e,r),m=eg(e),u=p.fill??l.nodeFillColor??"var(--_node-fill)",f=p.stroke??l.nodeBorderColor??"var(--_node-stroke)",y=p.text??Y(p.fill?{fill:p.fill}:void 0,l.nodeTextColor??H("var(--_text)",u,i.colors)),x={fill:u,stroke:f,strokeWidth:String(l.nodeLineWidth),...p.dashed?{strokeDasharray:"5 3"}:{}},b=[],_=e=>b.push({node:e,indent:2});if("database"===m){let t=`M ${a} ${o+8} A ${s/2} 8 0 0 1 ${a+s} ${o+8} L ${a+s} ${o+g-8} A ${s/2} 8 0 0 1 ${a} ${o+g-8} Z`;_(c(e.id,"surface",{kind:"path",d:t},x)),_(c(e.id,"database-rim",{kind:"ellipse",cx:a+s/2,cy:o+8,rx:s/2,ry:8},{fill:"none",stroke:f,strokeWidth:"1"}))}else{if(_(c(e.id,"surface",{kind:"rect",x:a,y:o,width:s,height:g,rx:l.cornerRadius??0,ry:l.cornerRadius??0},x)),"queue"===m)for(let[t,i]of[a+8,a+s-8].entries())_(c(e.id,`queue-end:${t}`,{kind:"line",x1:i,y1:o,x2:i,y2:o+g},{stroke:f,strokeWidth:"1"}));if("person"===m){let t=a+s/2,i=o+g/2+19-n.labelBlock.height/2-31,r={fill:y,stroke:y,strokeWidth:"1"};_(c(e.id,"person-head",{kind:"circle",cx:t,cy:i,r:7},r));let l=`M ${t-16} ${i+26} Q ${t-16} ${i+11} ${t} ${i+11} Q ${t+16} ${i+11} ${t+16} ${i+26} Z`;_(c(e.id,"person-shoulders",{kind:"path",d:l},r))}}let w=n.labelBlock;return _(t.text({id:d(e.id,"text"),role:"label",text:w.text,block:w,x:a+s/2,y:o+g/2+("person"===m?19:4*("database"===m)),fontSize:w.fontSize,fontWeight:w.fontWeight,letterSpacing:w.letterSpacing,anchor:"middle",paint:{fill:y}})),t.group({id:d(e.id,"card"),role:"node",open:`<g class="node c4-${e.kind}" ${h(e)}>`,close:"</g>",children:b,channels:{category:`${e.external?"external-":""}${e.kind}`,...e.tags.length?{status:e.tags.join(",")}:{}}})})(a.elements.find(t=>t.id===e.id),e))),n.legend){let e=n.legend,a=[],r=K(i.resolved.styleFace,"legend",{},{includeFallback:!1}),o=r?.textColor??"var(--_text)",s=e.heading,c=e.x+12,h=e.y+8+s.height/2,g=t.text({id:d("legend","heading"),role:"legend",text:s.text,block:s,x:c,y:h,fontSize:s.fontSize,fontWeight:s.fontWeight,letterSpacing:s.letterSpacing,anchor:"start",paint:{fill:o}});a.push({node:g,indent:2});let p=e.y+20+s.height;for(let i of e.entries){let{block:n}=i,s=e.x+38,c=p+n.height/2,h=i.style.borderColor??i.style.lineColor??r?.strokeColor??r?.borderColor??l.nodeBorderColor??"var(--_line)",g=i.style.bgColor??r?.fillColor??l.nodeFillColor??"var(--_node-fill)",m=String(r?.lineWidth??1),u="dotted"===i.style.lineStyle?"1 3":"dashed"===i.style.lineStyle||i.external?"5 3":void 0,f={fill:g,stroke:h,strokeWidth:m,...u?{strokeDasharray:u}:{}},y=e.x+10,x=n.height,b=(e,n)=>a.push({indent:2,node:t.shape({id:d(i.id,e),role:"legend",geometry:n,paint:f})});if("relationship"===i.kind)b("legend-swatch",{kind:"line",x1:y,y1:c,x2:y+18,y2:c});else if("database"===i.shape){let e=Math.min(3,x/4);b("legend-swatch",{kind:"path",d:`M ${y} ${p+e} A 9 ${e} 0 0 1 ${y+18} ${p+e} L ${y+18} ${p+x-e} A 9 ${e} 0 0 1 ${y} ${p+x-e} Z`}),b("legend-rim",{kind:"ellipse",cx:y+9,cy:p+e,rx:9,ry:e})}else if("person"===i.shape){let e=Math.min(3,x/5),t=y+9;b("legend-head",{kind:"circle",cx:t,cy:p+e,r:e}),b("legend-swatch",{kind:"path",d:`M ${y+3} ${p+x} Q ${y+3} ${p+2.5*e} ${t} ${p+2.5*e} Q ${y+15} ${p+2.5*e} ${y+15} ${p+x} Z`})}else if(b("legend-swatch",{kind:"rect",x:y,y:p,width:18,height:x}),"queue"===i.shape)for(let[e,t]of[y+3,y+15].entries())b(`legend-end:${e}`,{kind:"line",x1:t,y1:p,x2:t,y2:p+x});a.push({indent:2,node:t.text({id:d(i.id,"legend-text"),role:"legend",text:n.text,block:n,x:s,y:c,fontSize:n.fontSize,fontWeight:n.fontWeight,letterSpacing:n.letterSpacing,anchor:"start",paint:{fill:o}})}),p+=n.height+10}f.splice(f.length-1,0,t.group({id:d("legend","container"),role:"legend",open:'<g class="c4-legend">',close:"</g>",children:a}))}return{...u,family:"c4",parts:f}}),tr=C(ed,{configDiagnostics:e=>f("c4",e,e_),normalizeRequest:e=>{let t=e.source.authoredWrapperLength??e.source.wrapperSource?.length??0,i=e.source.originalText.slice(0,t),n=function(e){let t=function(e,t){let i="string"==typeof e?e:e.join(`
8
- `),n=function(e="C4Context"){return{kind:"c4",variant:e,elements:[],boundaries:[],relationships:[],directives:[],statements:[],diagnostics:[],layout:{hints:[]}}}();W("c4")&&z("c4","initialize",n),n.statements=function(e){let t=[],i=0,n=1,a=1,r=!0,o=(r,o="unknown")=>{let l=e.slice(i,r);t.push({id:`c4-statement-${t.length+1}`,kind:o,raw:l,span:{start:i,end:r,line:n,column:a}}),W("c4")&&R("c4",`chunk:${o}`,l,{line:n,column:a,offset:i,endOffset:r,unit:"physical"});let s=e[i-1];for(let e of l)"\r"===e||e===`
9
- `&&"\r"!==s?(n++,a=1):e!==`
10
- `&&a++,s=e;i=r};for(;i<e.length;){let t=i;if(/\s|;/.test(e[t])){let i=t+1;for(;i<e.length&&/\s|;/.test(e[i]);)i++;o(i,"trivia");continue}if(e.startsWith("%%",t)){let i=y(e,t),n=i<0?e.length:i,a=!r&&J([e.slice(t,n)],0)?.form==="native";o(n,a?"accessibility":"trivia");continue}if(r){r=!1;let i=y(e,t),n=i<0?e.length:i,a=n;for(let i=t;i<n;i++){if("&"===e[i]){let t=/^&(?:#\d+|#x[0-9a-f]+|[a-z][a-z0-9]*);/i.exec(e.slice(i,n));if(t){i+=t[0].length-1;continue}}if(";"===e[i]){a=i;break}}let l=es(e.slice(t,a)).trim();if(eX.some(e=>e.toLowerCase()===l.toLowerCase())){o(a,"header");continue}}if("}"===e[t]){o(t+1,"boundary-close");continue}let a=e.slice(t),l=/^[A-Za-z_][A-Za-z_0-9]*/.exec(a)?.[0],s=t+(l?.length??0);for(;s<e.length&&/[ \t\r\n]/.test(e[s]);)s++;if(l&&"("===e[s]){let t=0,i="";for(;s<e.length;s++){let n=e[s];if(i)n===i&&(i="");else if('"'===n||"'"===n)i=n;else if("("===n)t++;else if(")"===n&&0==--t){s++;break}}if(t||i)throw Error(`C4: unclosed ${l} argument list at line ${n}`);let a=s;for(;a<e.length&&/\s/.test(e[a]);)a++;if("{"===e[a]){if(eD[l]){o(a+1,"boundary-open");continue}let t=1;for(i="",s=a+1;s<e.length&&t;s++){let n=e[s];if(i)n===i&&(i="");else if('"'===n||"'"===n)i=n;else if("%"===n&&"%"===e[s+1]){let t=y(e,s+2);s=t<0?e.length:t}else"{"===n?t++:"}"===n&&t--}if(t)throw Error(`C4: unclosed ${l} block at line ${n}`)}o(s);continue}let d=y(e,t);if(/^accDescr[ \t]*:?[ \t]*\{/i.test(a)){let i=e.indexOf("}",t);if(i<0)throw Error(`C4: unclosed accessibility block at line ${n}`);o(i+1,"accessibility");continue}o(d<0?e.length:d)}return t}(i);let a=[],r=new Set,o=new Set,l=!1,s=!1,d=!1;for(let e of n.statements){let i=e.raw.trim();if("trivia"===e.kind){eG(e,"trivia"),!i.startsWith("%%")&&i.includes(";")?(tt(n,e.id,"c4_semicolon_separator","Semicolon statement separators are a reader extension; pinned Mermaid C4 requires line breaks"),s=d=!1):i.startsWith("%%")?d||=s:/[\r\n]/.test(e.raw)&&!d&&(s=!1);continue}if(s&&"boundary-close"!==e.kind&&tt(n,e.id,"c4_statements_on_one_line","Statements sharing a line are a reader extension; pinned Mermaid C4 requires a line break after each statement and after `{`, and a comment after a statement takes its line break"),s=!0,d=!1,!l){let t=es(i),a=eX.find(e=>e.toLowerCase()===t.toLowerCase());if(!a)throw Error("C4: expected C4Context, C4Container, C4Component, C4Dynamic, or C4Deployment");eG(e,"header"),n.variant=a,W("c4")&&z("c4","set-variant",a),e.kind="header",e.signature=a,l=!0;continue}if("boundary-close"===e.kind){eG(e,"boundary-close");let t=a.pop();if(!t)throw Error(`C4: unmatched closing boundary at line ${e.span.line}`);W("c4")&&z("c4","close-boundary",{id:t}),e.entityId=t;continue}if(U(i)!==i&&tt(n,e.id,"c4_entity_prepass","The global Mermaid entity prepass changes this statement; the writer protects its text fields without changing their values"),/^title\s/i.test(i)){eG(e,"title"),a.length&&tt(n,e.id,"c4_nested_header_directive","Metadata inside a boundary is read as global. Pinned Mermaid requires it at document scope; the writer moves it after the header"),/[#;]/.test(U(i.replace(/^title\s+/i,"")))&&tt(n,e.id,"c4_title_token","The title contains literal token delimiters; serialization writes entity escapes for pinned Mermaid"),n.title=g(ei(i.replace(/^title\s+/i,""))),W("c4")&&z("c4","set-title",n.title),e.kind="title",e.signature=n.title;continue}let c=J(i.split(/\r\n?|\n/),0);if(c){eG(e,"accessibility"),a.length&&tt(n,e.id,"c4_nested_header_directive","Metadata inside a boundary is read as global. Pinned Mermaid requires it at document scope; the writer moves it after the header"),c.title||"native"===c.form||""!==c.value||tt(n,e.id,"c4_empty_accessibility_description","An empty accessibility description block is a reader extension; the writer preserves its value in a native metadata comment"),c.title?n.accessibilityTitle=c.value:n.accessibilityDescription=c.value,W("c4")&&z("c4",c.title?"set-accessibility-title":"set-accessibility-description",c.value),e.kind="accessibility",e.entityId=c.title?"title":"description",e.signature=c.value;continue}if(/^accDescription\s+/i.test(i)){eG(e,"accessibility"),n.accessibilityDescription=i.replace(/^accDescription\s+/i,""),W("c4")&&z("c4","set-accessibility-description",n.accessibilityDescription),e.kind="accessibility",e.entityId="description",e.signature=n.accessibilityDescription;continue}let h=/^direction\s+(LR|RL|TB|BT)\s*$/.exec(i);if(h){eG(e,"direction");let t={id:e.id,name:"direction",args:[{value:h[1],raw:h[1]}],category:"layout",statementId:e.id};n.directives.push(t),W("c4")&&z("c4","add-directive",t),e.kind="directive",e.entityId=t.id,e.signature=te(t);continue}let p=/^([A-Za-z_][A-Za-z_0-9]*)\s*\(([\s\S]*)\)\s*(\{)?$/.exec(i);if(!p){eG(e,"unknown"),tt(n,e.id,"c4_unknown_statement","C4 statement is preserved but has no native interpretation","error");continue}let m=p[1],u=function(e){if(!e.trim())return[];let t=[],i=0,n=0,a="";for(let r=0;r<e.length;r++){let o=e[r];a?o===a&&(a=""):'"'===o||"'"===o?a=o:"("===o?n++:")"===o?n--:","===o&&0===n&&(t.push(e.slice(i,r)),i=r+1)}return t.push(e.slice(i)),t.map(e=>{let t=/^\s*\$([A-Za-z_][A-Za-z_0-9]*)\s*=([\s\S]*)$/.exec(e);return{...t?{name:t[1]}:{},value:eV(t?t[2]:e),raw:e}})}(p[2]);if("UpdateLayoutConfig"===m&&(0===u.length||1===u.length&&!u[0].name&&""===u[0].value)&&!p[3]){a.length&&r.add(a.at(-1)),"("===i[m.length]&&e0(u)||tt(n,e.id,"c4_empty_layout_arguments","An empty layout call is a no-op; the writer supplies the attribute required by pinned Mermaid"),e.kind="trivia";continue}/[\r\n]/.test(p[2].replace(/"[^"]*"|'[^']*'/g,""))&&tt(n,e.id,"c4_multiline_arguments","Line breaks between C4 arguments are a reader extension; quoted multiline text remains supported"),u.some(e=>e.name&&""===e.value)&&tt(n,e.id,"c4_empty_named_argument","Empty named arguments are retained; pinned Mermaid requires a positional empty slot");let f=eN.exec(m),y=!!(f&&!("Person"===f[1]&&f[2]))||Object.hasOwn(eD,m)||eU.has(m)||ti.has(m);if(y&&a.length&&r.add(a.at(-1)),y&&u.some(e4))throw new ej(`C4 argument is ambiguous in ${i}: separate named arguments with commas and use $name="value", or quote the entire value when it is literal text`);if(y&&u.some((e,t)=>{let i=e.raw.trim();return e.name?!/^\$[A-Za-z_][A-Za-z_0-9]*\s*=\s*"/.test(i)&&""!==e.value:i.startsWith("$")||t===u.length-1&&""!==i&&!/^["']/.test(i)})&&tt(n,e.id,"c4_unquoted_argument","Unquoted C4 argument text is read literally here, but pinned Mermaid requires a quoted final argument and quoted named values; serialization writes those values in double quotes"),y&&"("!==i[m.length]&&tt(n,e.id,"c4_space_before_arguments",`Pinned Mermaid reads "(" only straight after ${m} and rejects whitespace between them; ours reads the call. Write ${m}( with no space`),f&&!("Person"===f[1]&&f[2])){if(eG(e,"element"),p[3])throw Error(`C4: ${m} cannot open a boundary`);let i=e1(u,e2(m)),r=e9(i,"alias",m);if(o.has(r))throw Error(`C4: duplicate declaration alias ${JSON.stringify(r)}`);o.add(r);let l={id:r,macro:m,kind:f[1].toLowerCase(),external:!!f[3],shape:"Person"===f[1]?"person":"Db"===f[2]?"database":"Queue"===f[2]?"queue":"rectangle",label:e7(u,e2(m),i,m),technology:e8(eK(u,e2(m),"techn")),description:e8(eK(u,e2(m),"descr")),parentId:a.at(-1),tags:e5(i.tags),link:e8(i.link),sprite:e8(i.sprite),style:{},args:u,statementId:e.id};t&&A("nodes",n.elements.length+n.boundaries.length+1),n.elements.push(l),W("c4")&&z("c4","add-element",l),e.kind="element",e.entityId=r,e.signature=te(l)}else if(eD[m]){if(eG(e,"boundary-open"),!p[3])throw Error(`C4: ${m} requires a boundary block`);let i=e1(u,e3(m)),r=e9(i,"alias",m);if(o.has(r))throw Error(`C4: duplicate declaration alias ${JSON.stringify(r)}`);o.add(r);let l={id:r,macro:m,kind:eD[m],label:e7(u,e3(m),i,m),type:e8(eK(u,e3(m),"type")),description:e8(eK(u,e3(m),"descr")),parentId:a.at(-1),tags:e5(i.tags),link:e8(i.link),sprite:e8(i.sprite),style:{},args:u,statementId:e.id,..."Node_L"===m?{alignment:"left"}:"Node_R"===m?{alignment:"right"}:{}};t&&(A("nodes",n.elements.length+n.boundaries.length+1),A("nesting",a.length+1)),n.boundaries.push(l),a.push(r),W("c4")&&z("c4","open-boundary",l),e.entityId=r,e.signature=te(l)}else if(eU.has(m)){eG(e,"relationship");let i=e1(u,e6(m)),a=e9(i,"from",m),r=e9(i,"to",m),o="Rel_Back"===m,l={id:"",macro:m,from:a,to:r,source:o?r:a,target:o?a:r,label:e7(u,e6(m),i,m),technology:e8(eK(u,e6(m),"techn")),description:e8(eK(u,e6(m),"descr")),tags:e5(i.tags),link:e8(i.link),sprite:e8(i.sprite),style:{},args:u,statementId:e.id,index:"RelIndex"===m?e9(i,"index",m):void 0,order:n.relationships.length+1,bidirectional:"BiRel"===m,reversed:o,direction:eY[m.slice(4)]};t&&A("edges",n.relationships.length+n.layout.hints.length+1),n.relationships.push(l),W("c4")&&z("c4","add-relationship",l),e.kind="relationship","RelIndex"===m&&u.slice(4).some(e=>!e.name)&&tt(n,e.id,"c4_relindex_positional_metadata","RelIndex positional metadata follows documented tags/link slots; pinned Mermaid instead treats them as technology/description. Named $tags/$link avoids this ambiguity")}else{eG(e,"directive");let t={id:e.id,name:m,args:u,category:"UpdateElementStyle"===m?"element-style":"UpdateRelStyle"===m?"relationship-style":"AddElementTag"===m?"element-tag":"AddRelTag"===m?"relationship-tag":"UpdateLayoutConfig"===m||m.startsWith("Lay_")||m.startsWith("LAYOUT_")?"layout":"ShowLegend"===m||"SHOW_LEGEND"===m||"SHOW_FLOATING_LEGEND"===m?"legend":"AddElementLink"===m||"AddRelLink"===m?"link":"unknown",statementId:e.id};n.directives.push(t),W("c4")&&z("c4","add-directive",t),e.kind="directive",e.entityId=t.id,e.signature=te(t),"unknown"===t.category?tt(n,e.id,"c4_unknown_macro",`${m} is preserved but has no native interpretation`,"error"):m.startsWith("Update")||tt(n,e.id,"c4_directive_extension",`${m} is a reader extension; pinned Mermaid does not accept this directive`)}let x=f?e2(m):eD[m]?e3(m):eU.has(m)?e6(m):("UpdateElementStyle"===m?eH:"UpdateRelStyle"===m?eZ:"UpdateLayoutConfig"===m?["c4ShapeInRow","c4BoundaryInRow"]:void 0)??("AddElementTag"===m?eJ:"AddRelTag"===m?eQ:void 0);if(x){let t=new Set;for(let i=0;i<u.length;i++){let a=u[i],r=a.name??x[i];void 0!==r&&x.includes(r)?t.has(r)&&tt(n,e.id,"c4_duplicate_argument",`${m} assigns ${r} more than once; every argument is retained`,"error"):tt(n,e.id,"c4_unknown_argument",`${m} argument ${a.name??i+1} is retained but has no native interpretation`,"error"),r&&t.add(r)}}u.some(e=>/^\s*'/.test(e.raw)||/\\["']/.test(e.raw))?tt(n,e.id,"c4_quoted_string_extension","Quoted-string extension is preserved; typed edits write Mermaid entity escapes"):!y||e0(u)||n.diagnostics.some(t=>t.statementId===e.id&&["c4_multiline_arguments","c4_empty_named_argument"].includes(t.syntax))||tt(n,e.id,"c4_argument_spelling","Argument text is retained as its native value; the writer emits complete quoted argument tokens instead of ambiguous imported spelling")}if(!l)throw Error("C4: missing diagram header");if(a.length)throw Error(`C4: unclosed boundary ${JSON.stringify(a.at(-1))}`);t&&X(n);let c=ea(o),h=new Map(n.statements.map(e=>[e.id,e]));for(let e of n.relationships){if(e.id=c(`c4-rel-${e.order}`,["c4-relationship",e.order]),W("c4")&&z("c4","set-relationship-identity",{id:e.id,order:e.order}),!o.has(e.from)||!o.has(e.to))throw Error(`C4: relationship ${e.id} references an undeclared endpoint`);let t=h.get(e.statementId);t.entityId=e.id,t.signature=te(e)}for(let e of(!function(e,t=!1){for(let t of[...e.elements,...e.boundaries,...e.relationships])t.style={},delete t.effectiveLink,W("c4")&&z("c4","reset-presentation",{id:t.id,style:t.style});e.layout={hints:[]},W("c4")&&z("c4","reset-layout",e.layout);let i=new Map([...e.elements,...e.boundaries].map(e=>[e.id,e])),n=new Map,a=(e,t)=>JSON.stringify([e,t]);for(let t of e.relationships){let e=a(t.from,t.to),i=n.get(e)??[];i.push(t),n.set(e,i)}let r=(e,t)=>{let i=e1(e.args,t);for(let n of["techn","legendText"]){let a=eK(e.args,t,n);void 0!==a&&(i[n]=a)}return i},o=new Map,l=new Map;for(let t of e.directives){if("element-tag"!==t.category&&"relationship-tag"!==t.category)continue;let e=r(t,"element-tag"===t.category?eJ:eQ);("element-tag"===t.category?o:l).set(e.tagStereo??"",tn(e,["tagStereo"])),W("c4")&&z("c4","define-tag",{category:t.category,tag:e.tagStereo??"",style:("element-tag"===t.category?o:l).get(e.tagStereo??"")})}for(let t of[...e.elements,...e.boundaries])for(let e of t.tags)Object.assign(t.style,o.get(e)),W("c4")&&z("c4","apply-tag",{id:t.id,tag:e,style:t.style});for(let t of e.relationships)for(let e of t.tags)Object.assign(t.style,l.get(e)),W("c4")&&z("c4","apply-tag",{id:t.id,tag:e,style:t.style});for(let o of e.directives)if("element-style"===o.category){let e=r(o,eH),t=i.get(e.elementName);if(!t)throw Error(`C4: UpdateElementStyle references undeclared alias ${JSON.stringify(e.elementName)}`);Object.assign(t.style,tn(e,["elementName"])),W("c4")&&z("c4","set-element-style",{id:t.id,style:t.style})}else if("relationship-style"===o.category){let e=e1(o.args,eZ),t=n.get(a(e.from,e.to));if(!t)throw Error("C4: UpdateRelStyle references an undeclared relationship pair");for(let t of["offsetX","offsetY"])if(void 0!==e[t]&&!Number.isFinite(Number(e[t])))throw Error(`C4: ${t} must be finite`);for(let i of t)Object.assign(i.style,tn(e,["from","to"])),W("c4")&&z("c4","set-relationship-style",{id:i.id,style:i.style})}else if("UpdateLayoutConfig"===o.name){let t=e1(o.args,["c4ShapeInRow","c4BoundaryInRow"]);for(let[i,n]of[["c4ShapeInRow","shapesPerRow"],["c4BoundaryInRow","boundariesPerRow"]]){if(void 0===t[i]||""===t[i])continue;let a=Number(t[i]);if(!Number.isSafeInteger(a)||a<1)throw Error(`C4: ${i} must be a positive integer`);e.layout[n]=a,W("c4")&&z("c4","set-layout-option",{name:n,value:a})}}else if(o.name.startsWith("Lay_")){let n=eY[o.name.slice(4)],a=e1(o.args,["from","to"]);if(!n||!a.from||!a.to||!i.has(a.from)||!i.has(a.to))throw Error(`C4: ${o.name} requires two declared aliases`);n&&a.from&&a.to&&(t&&A("edges",e.relationships.length+e.layout.hints.length+1),e.layout.hints.push({from:a.from,to:a.to,direction:n,statementId:o.statementId}),W("c4")&&z("c4","add-layout-hint",e.layout.hints.at(-1)))}else if("direction"===o.name)e.layout.direction=o.args[0]?.value,W("c4")&&z("c4","set-direction",e.layout.direction);else if("LAYOUT_LEFT_RIGHT"===o.name||"LAYOUT_TOP_DOWN"===o.name)e.layout.direction="LAYOUT_LEFT_RIGHT"===o.name?"LR":"TB",W("c4")&&z("c4","set-direction",e.layout.direction);else if("AddElementLink"===o.name){let e=e1(o.args,["alias","link"]),t=i.get(e.alias);t&&(t.effectiveLink=e.link,W("c4")&&z("c4","set-effective-link",{id:t.id,link:t.effectiveLink}))}else if("AddRelLink"===o.name){let e=e1(o.args,["from","to","link"]);for(let t of n.get(a(e.from,e.to))??[])t.effectiveLink=e.link,W("c4")&&z("c4","set-effective-link",{id:t.id,link:t.effectiveLink})}let s=ea([...e.elements,...e.boundaries,...e.relationships].map(e=>e.id));e.legend={visible:e.directives.some(e=>"legend"===e.category),entries:[...[...o.entries()].map(([e,t])=>({id:s(`c4-tag-${e}`,["element-tag",e]),label:t.legendText??e,kind:"element",style:{...t}})),...[...l.entries()].map(([e,t])=>({id:s(`c4-tag-${e}`,["relationship-tag",e]),label:t.legendText??e,kind:"relationship",style:{...t}}))]},W("c4")&&z("c4","set-legend",e.legend)}(n,t),n.boundaries))r.has(e.id)||tt(n,e.statementId,"c4_empty_boundary","An empty boundary is retained; the writer supplies a no-op layout statement because pinned Mermaid requires a statement inside its block");if(n.directives.some(e=>"direction"===e.name)){let e=n.directives.find(e=>"direction"===e.name);tt(n,e.statementId,"c4_direction","A standalone direction directive is a reader extension to legacy C4")}for(let e of[...n.elements,...n.boundaries,...n.relationships])for(let t of(e.sprite&&tt(n,e.statementId,"c4_sprite","C4 sprite metadata is preserved; offline native output uses an explicit text fallback"),void 0===e.style.lineStyle||["solid","dashed","dotted"].includes(e.style.lineStyle)||tt(n,e.statementId,"c4_line_style",`C4 lineStyle ${JSON.stringify(e.style.lineStyle)} is preserved but has no native paint effect; the route uses solid strokes`),Object.keys(e.style)))"shape"===t&&"external"in e&&void 0!==eh(e.style.shape)||["bgColor","fontColor","borderColor","textColor","lineColor","lineStyle","offsetX","offsetY","legendText","techn"].includes(t)||tt(n,e.statementId,"c4_style_property",`C4 style ${t} is preserved as metadata but has no native paint effect`);return n}(e,!0),i=t.diagnostics.find(e=>"error"===e.severity);if(i){let e;throw Error(`C4 unsupported syntax: ${(e=t.statements.find(e=>e.id===i.statementId))?`${i.message} (in: ${e.raw.trim()})`:i.message}`)}return t}(e.source.originalText.slice(t)),a=i.split(/\r\n?|\n/).length-1;for(let e of n.statements)e.span.start+=i.length,e.span.end+=i.length,e.span.line+=a;let r=x(e.source.frontmatter);return void 0===n.title&&void 0!==r&&(n.title=r),void 0!==e.source.accessibility.title&&(n.accessibilityTitle=e.source.accessibility.title),void 0!==e.source.accessibility.descr&&(n.accessibilityDescription=e.source.accessibility.descr),{familyConfig:{model:n,c4:e.source.config.c4??{},themeVariables:e.source.config.themeVariables??{}}}},layout:e=>{let g=e.familyConfig;return M(function(e,g={},p,m={},u={}){var f;let y,x,b,_,w,k,F,S,$,M;X(e);let C=eu({...void 0===g.padding?{}:{diagramMarginX:g.padding,diagramMarginY:g.padding},...void 0===g.nodeSpacing?{}:{c4ShapeMargin:g.nodeSpacing},...void 0===g.layerSpacing?{}:{nextLinePaddingX:g.layerSpacing},...m},u),W=E(g,void 0,p),L=function(e,t=eu()){for(let t of[...e.elements,...e.boundaries,...e.relationships,...e.legend?.entries??[]]){let e=t.style;D({...void 0===e.bgColor?{}:{fill:e.bgColor},...void 0===e.borderColor&&void 0===e.lineColor?{}:{stroke:e.borderColor??e.lineColor},...void 0===e.fontColor&&void 0===e.textColor?{}:{color:e.fontColor??e.textColor}},`C4 ${t.id}`)}let i=ew(e),n={direction:e.layout.direction??e.layout.hints[0]?.direction??e.relationships.find(e=>e.direction)?.direction??"LR",nodes:new Map,edges:[],subgraphs:[],classDefs:new Map,classAssignments:new Map,nodeStyles:new Map,linkStyles:new Map},a=new Map;for(let t of e.boundaries)a.set(t.id,{id:i.nodes.get(t.id)??t.id,label:ek(t),nodeIds:[],children:[]});for(let t of e.boundaries){let e=a.get(t.id),i=t.parentId&&a.get(t.parentId);i?i.children.push(e):n.subgraphs.push(e)}for(let r of e.elements){let e=i.nodes.get(r.id)??r.id,o=ef(r,t),l=eg(r);n.nodes.set(e,{id:e,label:ev(r),shape:"database"===l?"cylinder":"queue"===l?"subroutine":"rectangle",href:r.effectiveLink??r.link}),r.parentId&&a.get(r.parentId)?.nodeIds.push(e),n.nodeStyles.set(e,{...o.fill?{fill:o.fill}:{},...o.stroke?{stroke:o.stroke}:{},...o.text?{color:o.text}:{},...o.dashed?{"stroke-dasharray":"5 3"}:{}})}for(let t of e.relationships){let a=eF(e,t);n.edges.push({id:i.relationships.get(t.id)??t.id,source:t.source,target:t.target,label:a,labelContent:{value:a,prepared:et(a,"literal")},style:"dashed"===t.style.lineStyle||"dotted"===t.style.lineStyle?"dotted":"solid",hasArrowStart:t.bidirectional,hasArrowEnd:!0}),n.linkStyles.set(n.edges.length-1,D({...t.style.lineColor?{stroke:t.style.lineColor}:{},...t.style.textColor?{color:t.style.textColor}:{}},`UpdateRelStyle(${t.from}, ${t.to})`))}return n}(e,C),R=new Map,z=new Map([...e.elements,...e.boundaries].map(e=>[e.id,e.parentId])),I=e=>{let t=[];for(let i=z.get(e);i&&!t.includes(i);i=z.get(i))t.push(i);return t},O=e=>void 0!==C.input.c4ShapePadding?C.padding:C.compact&&p?.node?.["X"===e?"paddingX":"paddingY"]===void 0?Math.min(C.padding,W["X"===e?"nodePaddingX":"nodePaddingY"]):W["X"===e?"nodePaddingX":"nodePaddingY"],A=e=>{if(void 0===C.wrapWidth)return;if(void 0===C.maxWidth)return C.wrapWidth;let t=void 0===e?0:I(e).length;return Math.max(24,C.minimumWidth-2*O("X")-20,Math.min(C.wrapWidth,C.maxWidth-(C.marginX+40)*2-t*C.boundaryPadding*2-2*O("X")-20))},j=(e,t,i=!1)=>{let n=ef(e,C);return ee(t,{display:"literal",fontSize:n.fontSize??(i?W.groupHeaderFontSize:W.nodeLabelFontSize),fontWeight:n.fontWeight??(i?W.groupHeaderFontWeight:W.nodeLabelFontWeight),transform:i?W.groupTextTransform:W.nodeTextTransform,maxWidth:A(e.id),letterSpacing:i?W.groupLetterSpacing:W.nodeLetterSpacing,fontFamily:n.fontFamily??(i?W.groupFont:void 0)})},N=e.elements.map(e=>{let t=ev(e),i=j(e,t),n=eg(e),a=Math.max(C.minimumWidth,i.width+2*O("X")+20*("queue"===n)),r=Math.max(C.minimumHeight,i.height+2*O("Y")+("person"===n?38:16*("database"===n)));return R.set(e.id,{id:e.id,x:0,y:0,width:a,height:r,..."database"===n?{cylinder:!0}:{}}),{...L.nodes.get(e.id),x:0,y:0,width:a,height:r,labelBlock:i,inlineStyle:L.nodeStyles.get(e.id)}}),U=new Map;for(let t of e.boundaries){let e=ek(t),i=j(t,e,!0),n=i.height+2*C.padding,a={id:t.id,label:e,labelBlock:i,x:0,y:0,width:Math.max(C.minimumWidth,i.width+2*C.padding),height:n+2*C.boundaryPadding,headerHeight:n,children:[]};U.set(t.id,a),R.set(t.id,{...a,container:!0})}let Y=L.edges.map((t,i)=>({...t,points:[],labelBlock:ee(eF(e,e.relationships[i]),{display:"literal",fontSize:W.edgeLabelFontSize,fontWeight:W.edgeLabelFontWeight,letterSpacing:W.edgeLetterSpacing,transform:W.edgeTextTransform,...void 0===C.maxWidth?{}:{maxWidth:A()}}),inlineStyle:L.linkStyles.get(i),edgeIndex:i}));for(let t of e.boundaries){let e=Y.filter(e=>e.source===t.id&&I(e.target).includes(t.id)||e.target===t.id&&I(e.source).includes(t.id));e.length&&(R.get(t.id).bottomPadding=Math.max(C.boundaryPadding,...e.map(e=>(e.labelBlock?.height??0)+48))*e.length)}let H="LR"===L.direction||"RL"===L.direction;for(let[e,t]of R){let i=Y.filter(t=>t.source===e||t.target===e),n=Math.max(0,...i.map(e=>(e.labelBlock?.height??0)+28)),a=Math.max(0,...i.map(e=>(e.labelBlock?.width??0)+24)),r=new Map;for(let t of i){let i=t.source===e?t.target:t.source;r.set(i,(r.get(i)??0)+1)}let o=Math.max(0,...r.values());H?t.height=Math.max(t.height,(o+1)*n+(t.headerHeight??0),(i.length+1)*16+(t.headerHeight??0)):t.width=Math.max(t.width,(o+1)*a,(i.length+1)*16)}let Z=g.diagramTitle??e.title,J=void 0===Z?void 0:ee(Z,{display:"literal",fontSize:q,fontWeight:P,transform:W.groupTextTransform,letterSpacing:W.groupLetterSpacing,fontFamily:W.groupFont,...void 0===C.maxWidth?{}:{maxWidth:Math.max(24,C.maxWidth-2*C.marginX)}}),Q=J?{text:J.text,width:J.width,height:J.height+T,block:J}:void 0,G=Math.max(C.gap,...Y.map(e=>(e.labelBlock?.width??0)*2+48)),V=Math.max(C.rowGap,...Y.map(e=>(e.labelBlock?.height??0)*2+48)),K=new Map;for(let e of Y){let t=JSON.stringify([e.source,e.target].sort());K.set(t,(K.get(t)??0)+1)}let ei=Math.max(1,...K.values()),en=ei>1?ei+1:1,ea=(f={gapX:G*en,gapY:V*en,padding:C.boundaryPadding,marginX:C.marginX+40,marginY:C.marginY+40+(Q?.height??0),shapesPerRow:e.layout.shapesPerRow??C.shapesPerRow,boundariesPerRow:e.layout.boundariesPerRow??C.boundariesPerRow,direction:"TD"===L.direction?"TB":L.direction,maxWidth:C.maxWidth},y=new Map([...R].map(([e,t])=>[e,{...t}])),x=[],b=new Map(e.statements.map((e,t)=>[e.id,t])),w=new Map((_=[...e.boundaries,...e.elements].sort((e,t)=>(b.get(e.statementId)??0)-(b.get(t.statementId)??0))).map(e=>[e.id,e.parentId])),k=[...e.layout.hints,...e.relationships.filter(e=>e.direction).map(e=>({from:e.from,to:e.to,direction:e.direction,statementId:e.statementId}))],F=(e,t)=>{let i=new Set;for(;w.get(e)!==t;){if(i.has(e))return;i.add(e);let t=w.get(e);if(!t)return;e=t}return e},$=(S=(e,t,i)=>{let n=_.filter(t=>t.parentId===e&&y.has(t.id));for(let e of n)if(y.get(e.id).container&&!t.has(e.id)){let n=new Set(t);n.add(e.id);let a=S(e.id,n,void 0===i?void 0:Math.max(1,i-2*f.padding)),r=y.get(e.id);r.width=Math.max(r.width,a.width+2*f.padding),r.height=Math.max(r.height,a.height+(r.headerHeight??0)+f.padding+Math.max(f.padding,r.bottomPadding??0))}let a=n.some(e=>y.get(e.id).container)?f.boundariesPerRow:f.shapesPerRow,r=f.direction,o="LR"===r||"RL"===r;if(!o&&void 0!==i){let e=Math.max(1,...n.map(e=>y.get(e.id).width)),t=Math.max(1,Math.floor((i+f.gapX)/(e+f.gapX)));a=Math.max(a,Math.ceil(n.length/t))}let l=0,s=0,d=0,c=0,h=0;n.forEach(e=>{let t=y.get(e.id);h&&(h>=a||o&&void 0!==i&&l+t.width>i)&&(o?(l=0,s+=d+f.gapY,d=0):(s=0,l+=c+f.gapX,c=0),h=0),t.x=l,t.y=s,o?l+=t.width+f.gapX:s+=t.height+f.gapY,d=Math.max(d,t.height),c=Math.max(c,t.width),h++});let g=[];for(let t of k){let i=F(t.from,e),n=F(t.to,e);if(!i||!n||i===n||!y.has(i)||!y.has(n))continue;let a="LR"===t.direction||"RL"===t.direction?"x":"y",r="RL"===t.direction||"BT"===t.direction,o=r?n:i,l=r?i:n,s=(e,t,i=new Set)=>e===t||!i.has(e)&&(i.add(e),g.some(n=>n.axis===a&&n.before===e&&s(n.after,t,i)));if(s(l,o)){x.push({code:"C4_LAYOUT_CONFLICT",severity:"warning",statementId:t.statementId,message:`Conflicting C4 ${"x"===a?"horizontal":"vertical"} direction for ${t.from} and ${t.to}; the earlier constraint is retained.`});continue}g.push({before:o,after:l,axis:a,statementId:t.statementId})}if(g.length){for(let e of n){let t=y.get(e.id);g.some(t=>"x"===t.axis&&(t.before===e.id||t.after===e.id))&&(t.x=0),g.some(t=>"y"===t.axis&&(t.before===e.id||t.after===e.id))&&(t.y=0)}let e=()=>{for(let e=0;e<n.length;e++)for(let e of g){let t=y.get(e.before),i=y.get(e.after);i[e.axis]=Math.max(i[e.axis],t[e.axis]+("x"===e.axis?t.width+f.gapX:t.height+f.gapY))}};e();for(let t=0;t<n.length;t++){let t=!1;for(let e=0;e<n.length;e++)for(let i=e+1;i<n.length;i++){let a=y.get(n[e].id),r=y.get(n[i].id);a.x<r.x+r.width&&r.x<a.x+a.width&&a.y<r.y+r.height&&r.y<a.y+a.height&&(r.y=a.y+a.height+f.gapY,t=!0)}if(e(),!t)break}}else if("RL"===r||"BT"===r){let e=Math.max(0,...n.map(e=>{let t=y.get(e.id);return"RL"===r?t.x+t.width:t.y+t.height}));for(let t of n){let i=y.get(t.id);"RL"===r?i.x=e-i.x-i.width:i.y=e-i.y-i.height}}return{width:Math.max(0,...n.map(e=>{let t=y.get(e.id);return t.x+t.width})),height:Math.max(0,...n.map(e=>{let t=y.get(e.id);return t.y+t.height}))}})(void 0,new Set,void 0===f.maxWidth?void 0:Math.max(1,f.maxWidth-2*f.marginX)),(M=(e,t,i,n)=>{for(let a of _.filter(t=>t.parentId===e)){let e=y.get(a.id);!e||n.has(a.id)||(n.add(a.id),e.x+=t,e.y+=i,e.container&&M(a.id,e.x+f.padding,e.y+(e.headerHeight??0)+f.padding,n))}})(void 0,f.marginX,f.marginY,new Set),{boxes:y,width:$.width+2*f.marginX,height:$.height+2*f.marginY,diagnostics:x});for(let e of N)Object.assign(e,ea.boxes.get(e.id));let er=[];for(let t of e.boundaries){let e=U.get(t.id);Object.assign(e,ea.boxes.get(t.id));let i=t.parentId&&U.get(t.parentId);i?i.children.push(e):er.push(e)}(function(e,i,g,p,m){let{edges:u}=i,f=[...e.values()].filter(e=>e.container).map(e=>({...e,id:m.generated(`c4-header-obstacle:${e.id}`,["c4","header-obstacle",e.id]),height:e.headerHeight??1,shape:"rectangle",label:""})),y=[...i.nodes,...f],x=0,b=()=>{if(++x>4e5)throw new eM},_=(e,t,i)=>(b(),c(e,t,i)),w=(e,t,i,n,a)=>{let r={x:eC[t].x*i,y:eC[t].y*i},o=n;for(let t of y){if(b(),t.id===a||!(r.x?e.y>t.y&&e.y<t.y+t.height:e.x>t.x&&e.x<t.x+t.width))continue;let i=r.x>0?t.x-e.x:r.x<0?e.x-t.x-t.width:r.y>0?t.y-e.y:e.y-t.y-t.height;i>=0&&(o=Math.min(o,Math.max(0,i-2)))}return{x:e.x+r.x*o,y:e.y+r.y*o}},k=new Map,F=new Map,S=new Map,$=u.flatMap(t=>{let i=e.get(t.source),n=e.get(t.target);if(!i||!n)return[];let[a,r]=function(e,t){if(e.id===t.id)return["R","B"];if(e.container&&eW(e,t)||t.container&&eW(t,e))return["B","B"];let i=eL(e),n=eL(t);return Math.abs(i.x-n.x)>=Math.abs(i.y-n.y)?i.x<=n.x?["R","L"]:["L","R"]:i.y<=n.y?["B","T"]:["T","B"]}(i,n);for(let[e,t]of[[i.id,a],[n.id,r]]){let i=`${e}\0${t}`;F.set(i,(F.get(i)??0)+1)}return[{edge:t,source:i,target:n,startSide:a,endSide:r}]}),M=new Map;for(let e of $){let t=JSON.stringify([e.source.id,e.target.id].sort()),i=M.get(t)??[];i.push(e),M.set(t,i)}for(let[e,i]of $.entries()){let n,{edge:a,source:r,target:o,startSide:l,endSide:s}=i,d=(e,t)=>{let i=`${e.id}\0${t}`,n=S.get(i)??0;return S.set(i,n+1),{index:n,count:F.get(i)}},c=d(r,l),h=d(o,s),g=ez(r,l,c.index,c.count),p=r.id===o.id?ez(o,s,h.index,h.count):function(e,t,i,n,a,r){let o=ez(i,n,a,r);if(eI[t]!==n)return o;let l="L"===n||"R"===n?"y":"x",s=e[l]-o[l];if(0===s||Math.abs(s)>=8)return o;let d=eR(i,n,0),c=eR(i,n,1),h=(e[l]-d[l])/(c[l]-d[l]);if(!(h>0&&h<1))return o;let g=eR(i,n,h);for(let e=0;e<r;e++)if(e!==a&&8>Math.abs(ez(i,n,e,r)[l]-g[l]))return o;return g}(g,l,o,s,h.index,h.count),m=r.container&&r.id!==o.id&&eW(r,o)?-1:1,u=o.container&&r.id!==o.id&&eW(o,r)?-1:1,f=M.get(JSON.stringify([r.id,o.id].sort())),y="R"===l||"L"===l?Math.max(24,...f.map(e=>(e.edge.labelBlock?.width??0)+32)):Math.max(24,...f.map(e=>(e.edge.labelBlock?.height??0)+24)),x=(f.indexOf(i)-(f.length-1)/2)*y,b=14+e%5*4,_=w(g,l,m,b,r.id),$=w(p,s,u,b,o.id);if(k.set(a,{start:g,end:p,startExit:_,endExit:$}),r.id===o.id){let e=r.x+r.width+b+(a.labelBlock?.width??0)/2,t=r.y+r.height+b+(a.labelBlock?.height??0)/2;n=[_,{x:e,y:_.y},{x:e,y:t},{x:$.x,y:t},$]}else if("R"===l||"L"===l){let e=(_.x+$.x)/2+x;n=[_,{x:e,y:_.y},{x:e,y:$.y},$]}else{let e=(_.y+$.y)/2+x;n=[_,{x:_.x,y:e},{x:$.x,y:e},$]}a.points=t([g,...n,p]),k.get(a).seed=a.points,a.label&&(a.labelPosition=v(a.points))}for(let n of(r(i,g,new Set,p),l(i,g,p),s(i,g,p),d(i,g,p),u)){let a=k.get(n),r=e.get(n.source),o=e.get(n.target),l=Math.abs(eL(r).x-eL(o).x)>=Math.abs(eL(r).y-eL(o).y)?eL(r).x<=eL(o).x?"LR":"RL":eL(r).y<=eL(o).y?"TB":"BT",s={id:m.generated(`${n.id}:routing-source`,["c4",n.id,"routing-source"]),label:"",shape:"rectangle",...a.startExit,width:0,height:0},d={id:m.generated(`${n.id}:routing-target`,["c4",n.id,"routing-target"]),label:"",shape:"rectangle",...a.endExit,width:0,height:0},c={...n,source:s.id,target:d.id,points:t([a.startExit,...a.seed.slice(1,-1),a.endExit])},p=(n.labelBlock?.width??0)/2+10,u=(n.labelBlock?.height??0)/2+8;h([...[...i.nodes,...f].map(e=>e.id===n.source||e.id===n.target?e:{...e,x:e.x-p,y:e.y-u,width:e.width+2*p,height:e.height+2*u}),s,d],[c],{...g,direction:l}),c.points.slice(1).some((e,t)=>y.some(i=>_(c.points[t],e,i)))&&(c.points=function(e,i,n,a){let r=(t,a)=>{let r=[...new Set(n.flatMap(e=>[e[t]-10,e[t]+e[a]+10]))],o=[Math.min(e[t],i[t],...r),Math.max(e[t],i[t],...r)],l=n=>Math.min(Math.abs(n-e[t]),Math.abs(n-i[t]));return[...new Set([...o,...r.sort((e,t)=>l(e)-l(t)||e-t).slice(0,14)])]},o=r("x","width"),l=r("y","height"),s=[];for(let t of o)s.push([e,{x:t,y:e.y},{x:t,y:i.y},i]);for(let t of l)s.push([e,{x:e.x,y:t},{x:i.x,y:t},i]);for(let t of o)for(let n of l)s.push([e,{x:e.x,y:n},{x:t,y:n},{x:t,y:i.y},i]),s.push([e,{x:t,y:e.y},{x:t,y:n},{x:i.x,y:n},i]);let d=e=>e.slice(1).reduce((t,i,n)=>t+Math.hypot(i.x-e[n].x,i.y-e[n].y),0),c=(e,t)=>n.every(i=>!a(e,t,i)),h=e=>e.map(t).sort((e,t)=>d(e)-d(t)||e.length-t.length).find(e=>e.slice(1).every((t,i)=>c(e[i],t))),g=h(s);if(g)return g;let p=l.filter(t=>c(e,{x:e.x,y:t})),m=l.filter(e=>c({x:i.x,y:e},i)),u=o.filter(t=>c(e,{x:t,y:e.y})),f=o.filter(e=>c({x:e,y:i.y},i)),y=[];for(let t of o)for(let n of p)for(let a of m)y.push([e,{x:e.x,y:n},{x:t,y:n},{x:t,y:a},{x:i.x,y:a},i]);for(let t of l)for(let n of u)for(let a of f)y.push([e,{x:n,y:e.y},{x:n,y:t},{x:a,y:t},{x:a,y:i.y},i]);return h(y)}(a.startExit,a.endExit,y,_)??c.points),n.points=t([a.start,...c.points,a.end]),n.labelPosition=v(n.points)}let C=[...i.nodes,...f],W={...i,nodes:C},{ctx:L}=a(C,u,g.direction,p,i.groups);for(let e of(L.finalLabelClearance=!0,u))if(e.label)for(let{start:t,end:i}of e.points.slice(1).map((t,i)=>({start:e.points[i],end:t})).sort((e,t)=>Math.abs(t.end.x-t.start.x)+Math.abs(t.end.y-t.start.y)-(Math.abs(e.end.x-e.start.x)+Math.abs(e.end.y-e.start.y)))){let a=n(e,t,i,L);if(a){e.labelPosition=a;break}}for(let t of(s(W,g,p),u)){let i=e.get(t.source),n=e.get(t.target);o(t,t.routeCertificate,{...i,label:"",shape:"rectangle"},{...n,label:"",shape:"rectangle"})}})(ea.boxes,{nodes:N,groups:er,edges:Y},L,W,ew(e)),function(e,t,i){let{edges:n}=e,a=eA(e.nodes,e.groups),r=n.flatMap(e=>eO(e,t)),o=[],l=new Map(i.relationships.map(e=>[e.id,e.style])),s=n.flatMap(e=>e.points.slice(1).map((t,i)=>({edge:e,start:e.points[i],end:t})));for(let{edge:e,rect:t}of n.map((e,t)=>({edge:e,index:t,rect:eE(e)})).filter(e=>e.rect).sort((e,t)=>t.rect.width*t.rect.height-e.rect.width*e.rect.height||e.index-t.index)){let i=l.get(e.id),n=e=>Number.isFinite(Number(e))?Number(e):0,d=n(i?.offsetX),c=n(i?.offsetY),h=e=>({x:e.x+d,y:e.y+c}),g=h(e.labelPosition),p=[g],m=t.width,u=t.height,f=t=>{let i={x:t.x-m/2,y:t.y-u/2,width:m,height:u},n=eP(i,3);return[r.reduce((e,t)=>e+eq(n,t),0),a.reduce((e,t)=>e+eq(n,t),0),o.reduce((e,t)=>e+eq(eP(i,4),t),0),s.reduce((t,n)=>t+(n.edge!==e&&eB(n.start,n.end,eP(i,2))?1:0),0)]},y=g,x=f(g);if(x.every(e=>0===e)){e.labelPosition=g,o.push(eE(e));continue}for(let{start:t,end:i}of s.filter(t=>t.edge===e).sort((e,t)=>Math.hypot(t.end.x-t.start.x,t.end.y-t.start.y)-Math.hypot(e.end.x-e.start.x,e.end.y-e.start.y))){let e=Math.hypot(i.x-t.x,i.y-t.y);if(e<.01)continue;let n=-(i.y-t.y)/e,a=(i.x-t.x)/e,r=Math.abs(n)*m/2+Math.abs(a)*u/2;for(let e of[.5,.25,.75,.1,.9])for(let o of[0,r+6,-r-6,r+20,-r-20])p.push(h({x:t.x+(i.x-t.x)*e+n*o,y:t.y+(i.y-t.y)*e+a*o}))}for(let e of(p.sort((e,t)=>Math.hypot(e.x-g.x,e.y-g.y)-Math.hypot(t.x-g.x,t.y-g.y)),p)){let t=f(e),i=t.findIndex((e,t)=>e!==x[t]);if(i>=0&&t[i]<x[i]&&(y=e,x=t),t.every(e=>0===e))break}e.labelPosition=y,o.push(eE(e))}}({nodes:N,groups:er,edges:Y},W.lineWidth,e);let eo=Y.flatMap(e=>{let t=eE(e);return t?[{...t,id:e.id,label:"",shape:"rectangle"}]:[]}),el=Y.flatMap(e=>eO(e,W.lineWidth).map(t=>({...t,id:e.id,label:"",shape:"rectangle"})));i([...N,...eo,...el],Y,er,Math.max(C.marginX,C.marginY)+(Q?.height??0));let es=[...N,...U.values(),...eo,...el],ed=Math.max(ea.width,...es.map(e=>e.x+e.width+C.marginX),...Y.flatMap(e=>[...e.points.map(e=>e.x+C.marginX),(e.labelPosition?.x??0)+(e.labelBlock?.width??0)/2+C.marginX]),Q?Q.width+2*C.marginX:0),ec=Math.max(ea.height,...es.map(e=>e.y+e.height+C.marginY),...Y.flatMap(e=>[...e.points.map(e=>e.y+C.marginY),(e.labelPosition?.y??0)+(e.labelBlock?.height??0)/2+C.marginY])),eh=e$(e,C).map(e=>({...e,block:ee(e.label,{display:"literal",fontSize:W.edgeLabelFontSize,fontWeight:W.edgeLabelFontWeight,letterSpacing:W.edgeLetterSpacing,transform:W.edgeTextTransform,...void 0===C.maxWidth?{}:{maxWidth:Math.max(24,C.maxWidth-2*C.marginX-64)}})})),ep=ee("Legend",{display:"literal",fontSize:p?.text?.fontSize??13,fontWeight:p?.text?.fontWeight??600,letterSpacing:p?.text?.letterSpacing??0,transform:p?.text?.textTransform,...void 0===C.maxWidth?{}:{maxWidth:Math.max(24,C.maxWidth-2*C.marginX-24)}}),em=eh.length?{x:C.marginX,y:ec+12,width:Math.max(ep.width+24,...eh.map(e=>e.block.width+64)),height:ep.height+20+eh.reduce((e,t)=>e+t.block.height+10,0),heading:ep,entries:eh}:void 0;em&&(ed=Math.max(ed,em.x+em.width+C.marginX),ec=em.y+em.height+C.marginY);let ey=[...ea.diagnostics,...function(e,t,i,n){let a=[],{edges:r,nodes:o,groups:l}=t,s=eA(o,l),d=r.map(e=>({edge:e,box:eE(e)})).filter(e=>e.box),c=t=>e.relationships.find(e=>e.id===t.id)?.statementId;for(let{edge:e,box:t}of d)(s.some(e=>eq(t,e)>.01)||d.some(i=>i.edge!==e&&eq(t,i.box)>.01)||r.some(i=>i!==e&&i.points.slice(1).some((e,n)=>eB(i.points[n],e,t))))&&a.push({code:"C4_LABEL_COLLISION",severity:"warning",statementId:c(e),message:`Relationship ${e.id} has a label halo overlapping another label, card, boundary header/frame or relationship route; all authored text is retained.`});let h=eT(l).map(e=>({...e,height:e.headerHeight??0})),g=r.flatMap(e=>eO(e,i).map(t=>({edge:e,head:t})));for(let e of r){let t=g.filter(t=>t.edge===e).map(e=>e.head);((e.hasArrowEnd||e.hasArrowStart)&&!t.length||t.some(e=>d.some(t=>eq(e,t.box)>.01)||[...o,...h].some(t=>t.id!==e.endpoint&&eq(e,t)>.01)||g.some(t=>t.head!==e&&function(e,t){if(.01>=eq(e,t))return!1;for(let i of[e.polygon,t.polygon])for(let[n,a]of i.entries()){let r=i[(n+1)%i.length],o=-(r.y-a.y),l=r.x-a.x,s=Math.hypot(o,l);if(s<.001)continue;let d=e=>e.polygon.map(e=>(e.x*o+e.y*l)/s),c=d(e),h=d(t);if(Math.max(...c)+e.strokePadding<=Math.min(...h)-t.strokePadding+.01||Math.max(...h)+t.strokePadding<=Math.min(...c)-e.strokePadding+.01)return!1}return!0}(e,t.head))||n&&(e.x<-.01||e.y<-.01||e.x+e.width>n.width+.01||e.y+e.height>n.height+.01)))&&a.push({code:"C4_ARROW_OCCLUDED",severity:"warning",statementId:c(e),message:`Relationship ${e.id} has an arrowhead overlapping a label, card, boundary header or another arrowhead, exceeds the final canvas, or lacks a nonzero terminal segment.`})}return a}(e,{nodes:N,groups:er,edges:Y},W.lineWidth,{width:ed,height:ec})];return void 0!==C.maxWidth&&ed>C.maxWidth+.01&&ey.push({code:"C4_WIDTH_EXCEEDED",severity:"warning",message:`The requested C4 width ${C.maxWidth}px cannot contain the ${Math.ceil(ed)}px artifact without shrinking or clipping content; minimum card widths, nesting, explicit direction constraints and authored offsets retain precedence.`}),{width:ed,height:ec,...em?{legend:em}:{},nodes:N,groups:er,edges:Y,...Q?{title:B(Q,ed,C.marginY)}:{},body:e,config:C,diagnostics:ey,identities:ew(e),textContext:{node:W.nodeTextTransform,edge:W.edgeTextTransform,group:W.groupTextTransform,legendHeading:p?.text?.textTransform,title:Z}}}(g.model,e.renderOptions,e.styleFace,g.c4,g.themeVariables))},projectPositioned:S(function({positioned:e,options:t}){let i=e.body,n=e.textContext,a=(e,t,i,n)=>{if(!i||i.prepared.source!==t||"literal"!==i.prepared.display||i.prepared.transform!==n)throw Error("C4 "+e+" changed its retained prepared text")},r=new Map(i.elements.map(e=>[e.id,e])),o=new Map(i.relationships.map(e=>[e.id,e])),l=new Map,s=new Map,d=(e,t)=>{for(let i of e){if(l.has(i.id))throw Error(`C4 boundary "${i.id}" has a repeated positioned frame`);l.set(i.id,i),s.set(i.id,t),d(i.children,i.id)}};d(e.groups);let c=new Set(e.nodes.map(e=>e.id));if(c.size!==e.nodes.length||c.size!==r.size||i.elements.some(e=>!c.has(e.id)))throw Error("C4 positioned cards do not match the authored identities");if(l.size!==i.boundaries.length)throw Error("C4 positioned frames do not match the authored boundaries");let h=new Set(e.edges.map(e=>e.id));if(h.size!==e.edges.length||h.size!==o.size)throw Error("C4 positioned relationships do not match the authored identities");for(let t of e.nodes){let e=ev(r.get(t.id));if(t.label!==e)throw Error("C4 card "+t.id+" changed its authored text");a(t.id,e,t.labelBlock,n.node)}for(let t of e.edges){let e=void 0===t.id?void 0:o.get(t.id);if(!e)throw Error("C4 positioned relationship has no authored interaction identity");let r=eF(i,e),l="dashed"===e.style.lineStyle||"dotted"===e.style.lineStyle?"dotted":"solid";if(t.source!==e.source||t.target!==e.target||t.label!==r||t.style!==l||t.hasArrowStart!==e.bidirectional||!t.hasArrowEnd||(t.startMarker??"arrow")!=="arrow"||(t.endMarker??"arrow")!=="arrow")throw Error("C4 relationship "+t.id+" changed its authored endpoints, label, shaft or markers");a(t.id,r,t.labelBlock,n.edge)}let g=[];for(let t of i.boundaries){let i=l.get(t.id);if(!i||s.get(t.id)!==t.parentId)throw Error(`C4 boundary "${t.id}" changed its authored parent`);let r=ek(t);if(i.label!==r)throw Error("C4 boundary "+t.id+" changed its authored text");a(t.id,r,i.labelBlock,n.group);let o="left"===t.alignment?"start":"right"===t.alignment?"end":"middle",d="left"===t.alignment?i.x+e.config.padding:"right"===t.alignment?i.x+i.width-e.config.padding:i.x+i.width/2,c=i.headerHeight??36;g.push({id:`boundary-label:${t.id}`,text:i.labelBlock?.text??i.label,bounds:k(i.labelBlock,d,i.y+c/2,o),container:w({...i,height:c})})}if(void 0!==n.title!=(void 0!==e.title))throw Error("C4 positioned title does not match the authored title");if(e.title){let t=e.title;a("title",n.title,t.block,n.group),g.push({id:"title",text:t.text,bounds:k(t.block,t.x,t.y),container:w(_(e))})}let p=e$(i,e.config);if(p.length>0!=(void 0!==e.legend))throw Error("C4 positioned legend does not match the authored legend");if(e.legend){let t=e.legend;if(t.entries.length!==p.length||t.entries.some((e,t)=>e.id!==p[t].id))throw Error("C4 positioned legend entries do not match the authored legend");a("legend heading","Legend",t.heading,n.legendHeading);let i=w(t);g.push({id:"legend:heading",text:t.heading.text,bounds:k(t.heading,t.x+12,t.y+8+t.heading.height/2,"start"),container:i});let r=t.y+20+t.heading.height;for(let[e,o]of t.entries.entries())a(o.id,p[e].label,o.block,n.edge),g.push({id:`legend:entry:${o.id}`,text:o.block.text,bounds:k(o.block,t.x+38,r+o.block.height/2,"start"),container:i}),r+=o.block.height+10}return{version:1,nodes:e.nodes.map(e=>{let t=r.get(e.id),i=eg(t),n=e.y+e.height/2+("person"===i?19:4*("database"===i));return{id:t.id,x:O(e.x),y:O(e.y),w:O(e.width),h:O(e.height),shape:i,label:t.label,role:"box",...F(e.labelBlock,e.x+e.width/2,n,e),...void 0!==t.parentId?{parentId:t.parentId}:{}}}),edges:e.edges.map(e=>{let i=void 0===e.id?void 0:o.get(e.id);if(!i)throw Error("C4 positioned relationship has no authored interaction identity");return{id:i.id,from:e.source,to:e.target,path:e.points.map(e=>[O(e.x),O(e.y)]),...void 0!==e.label&&e.labelPosition?{label:{x:O(e.labelPosition.x),y:O(e.labelPosition.y),text:e.label,bounds:k(e.labelBlock,e.labelPosition.x,e.labelPosition.y)}}:{},...t.debug&&e.routeCertificate?{route:e.routeCertificate}:{}}}),groups:i.boundaries.map(e=>{let t=l.get(e.id);if(!t)throw Error(`C4 boundary "${e.id}" has no positioned frame`);return{id:e.id,label:e.label,x:O(t.x),y:O(t.y),w:O(t.width),h:O(t.height),members:i.elements.filter(t=>t.parentId===e.id).map(e=>e.id),...void 0!==e.parentId?{parentId:e.parentId}:{}}}),bounds:{w:O(e.width),h:O(e.height)},labels:g}}),lowerScene:$(ta)});export{tr as default};
@@ -1 +0,0 @@
1
- import{$ as e,Ca as t,Na as i,Pa as r,U as n,Z as o,_ as a,aa as l,ba as s,ca as d,ea as u,fa as f,fb as y,ga as h,ia as c,ja as p,ka as x,la as m,ma as g,oa as b,ob as k,pb as v,ra as w,t as M,ta as O,tb as N,za as j}from"./chunk-EUBVLDYV.js";import{L as P,M as z}from"./chunk-P7DO3MRP.js";var S=new WeakMap,F=new WeakMap;function E(e){return F.get(e)??S.get(e)}var B=new WeakMap,T=new WeakSet,L=Object.freeze([1,0,0,1,0,0]);function C(e){return B.get(e)}function W(e){return[e.x0,e.x1,e.y0,e.y1].every(Number.isFinite)&&e.x0<=e.x1&&e.y0<=e.y1}function D(e){return"none"===e||"transparent"===e||!!e&&n(e)?.[3]===0}function I(e){if(void 0===e)return 1;let t=e.trim();if(!/^[+-]?(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?$/.test(t))return NaN;let i=Number(t);return Number.isFinite(i)?Math.max(0,Math.min(1,i)):NaN}function $(e,t){return 0===e||0===t?0:e*t}function A(e,t){return e&&0!==Number(t.opacity??1)&&(!D(t.fill)||void 0!==t.stroke&&!D(t.stroke)&&0!==Number.parseFloat(t.strokeWidth??"1"))}function U(e,t){return e?e.lineBlocks.some(e=>e.runs.some(e=>""!==e.text.trim())):""!==t.trim()}var R=new WeakSet,_=Object.freeze([]);function q(e){return Object.freeze({id:e.id,role:e.role})}function V(e,t){let i=q(t),r=Object.freeze([...void 0===e?_:R.has(e)?e:Array.from(e,q),i]);return R.add(r),r}function J(e){let t=K(e,void 0,!0);return{leaf(e,i,r,n=_,o=!1,a=1,l){if(!R.has(n))throw TypeError("Native paint ancestors must be owned snapshots");t.leaf(e,i,r,n,o,a,l)},finish:t.finish}}function K(t,r,n=!1){let l=[],s={measured:0,unmeasured:0,nonPainting:0,preparedText:0,fallbackText:0};return{leaf:(t,d,u,f,y,h,c,m=void 0===u)=>{let g=c??t.owner??f.at(-1)??t.identity??{id:t.id,role:t.role},k=n?function(e){switch(e.kind){case"shape":return Object.freeze({kind:e.kind,geometry:e.geometry,paint:e.paint,...e.childPaints?{childPaints:e.childPaints}:{},...e.transform?{transform:e.transform}:{}});case"connector":return Object.freeze({kind:e.kind,lineStyle:e.lineStyle,endpoints:e.endpoints,route:e.route,stroke:e.stroke,markers:e.markers,...e.transform?{transform:e.transform}:{}});case"text":return Object.freeze({kind:e.kind,paint:e.paint});case"document":return Object.freeze({kind:e.kind})}}(t):void 0,v=0===h||("document"===t.kind?"content"!==t.element||void 0!==t.nonPaint||""===i(t).trim():"text"===t.kind?!A(U(t.block,t.text),t.paint):"connector"===t.kind?"invisible"===t.lineStyle:"shape"===t.kind&&!t.conditionalPaint&&[t.paint,...t.childPaints??[]].every(e=>void 0!==e.opacity&&0===Number(e.opacity)||D(e.fill)&&(void 0===e.stroke||D(e.stroke)))),[w,M,O,N,j,P]=u??o,z=u||t.transform?{kind:"matrix",a:w,b:M,c:O,d:N,e:j,f:P}:void 0,E=u||t.transform?Object.freeze(e(u??o,a(t.transform))):L,C=v?void 0:b(t,z),I=!!C&&W(C),$=Object.freeze({key:d,id:t.id,kind:t.kind,role:t.role,owner:n&&f.includes(g)?g:q(g),ancestors:f,order:l.length,coverage:v?"non-painting":I?"measured":"unmeasured",...y||"conditional"===t.visibility||!Number.isFinite(h)?{visibility:"conditional"}:{},...h<1?{groupOpacity:h}:{},...I?{bounds:Object.freeze(C)}:{},...!v&&!I?{reason:"document"===t.kind?"opaque-visible-content":"missing-paint-geometry"}:{},..."text"===t.kind?{text:Object.freeze({measurement:t.measurement??"unavailable",...r?.(t.text,t.block,!0)})}:{}});k?F.set($,k):S.set($,t),B.set($,E),m&&!t.transform&&T.add($),l.push($),v?s.nonPainting++:I?s.measured++:s.unmeasured++,"text"===t.kind&&!v&&("prepared"===t.measurement?s.preparedText++:s.fallbackText++),"connector"===t.kind&&t.labels.forEach((e,i)=>{if(e.visual?.kind!=="inline")return;let n={...e.paint,...e.halo?{stroke:e.halo.color??"var(--bg)",strokeWidth:String(e.halo.width)}:{}},o=0===h||!A(U(e.block,e.text),n),a=o?void 0:p(e),[u,f,y,c,m,g]=E,b=a&&x(a,{kind:"matrix",a:u,b:f,c:y,d:c,e:m,f:g}),v=!!b&&W(b),w=Object.freeze({key:`${d}.label.${i}`,id:e.id??`${t.id}:label:${i}`,kind:"text",role:"label",owner:$.owner,ancestors:$.ancestors,order:l.length,coverage:o?"non-painting":v?"measured":"unmeasured",...$.visibility?{visibility:$.visibility}:{},...h<1?{groupOpacity:h}:{},...v?{bounds:Object.freeze(b)}:o?{}:{reason:"missing-inline-label-geometry"},text:Object.freeze({measurement:e.block?"prepared":"fallback",...r?.(e.text,e.block)})});k?F.set(w,k):S.set(w,t),B.set(w,E),l.push(w),o?s.nonPainting++:(v?s.measured++:s.unmeasured++,e.block?s.preparedText++:s.fallbackText++)})},finish:()=>Object.freeze({version:1,family:t.family,bounds:Object.freeze({width:t.width,height:t.height}),primitives:Object.freeze(l),coverage:Object.freeze(s)})}}function G(e,t,i,r,n,o){o?.();let a=e.geometry;if(!a)return[];let l="start"===r&&"auto-start-reverse"===e.orient?-1:1,s=Math.hypot(i.x,i.y);if(!s)return[];let d=l*i.x/s,u=l*i.y/s,f=e.viewBox,y=("userSpaceOnUse"===e.units?1:n)*Math.max(1,e.scale??1)*(f&&e.size?Math.min(e.size.width/f.width,e.size.height/f.height):1);if(!Number.isFinite(y))throw TypeError("Nonfinite Class marker scale");if(y<=0)return[];let h=i=>{o?.();let r=(i.x-(e.ref?.x??0))*y,n=(i.y-(e.ref?.y??0))*y;return{x:t.x+d*r-u*n,y:t.y+u*r+d*n}},c=e.paint??{},p=c.stroke&&"none"!==c.stroke&&"transparent"!==c.stroke?Number.parseFloat(c.strokeWidth??"1")/2:0,x=void 0!==c.fill&&"none"!==c.fill&&"transparent"!==c.fill;if("circle"===a.kind){let e=h({x:a.cx,y:a.cy});return[{kind:"circle",cx:e.x,cy:e.y,r:(a.r+p)*y}]}if("polygon"!==a.kind&&"polyline"!==a.kind)throw TypeError("Unmeasured Class marker geometry");let m=a.points,g=[];if(x&&"polygon"===a.kind){for(let e=0;e<m.length;e++)o?.();g.push([...m])}let b="polygon"===a.kind?m.length:m.length-1,k=(e,t)=>{o?.();let i=Math.hypot(t.x-e.x,t.y-e.y);return{x:(t.x-e.x)/i,y:(t.y-e.y)/i}};if(p>0){for(let e=0;e<b;e++){o?.();let t=m[e],i=m[(e+1)%m.length],r=k(t,i),n={x:-r.y*p,y:r.x*p};g.push([{x:t.x+n.x,y:t.y+n.y},{x:i.x+n.x,y:i.y+n.y},{x:i.x-n.x,y:i.y-n.y},{x:t.x-n.x,y:t.y-n.y}])}for(let e=+("polygon"!==a.kind);e<("polygon"===a.kind?m.length:m.length-1);e++){o?.();let t=m[e],i=m[(e-1+m.length)%m.length],r=m[(e+1)%m.length],n=k(i,t),a=k(t,r),l=n.x*a.y-n.y*a.x;if(!l)continue;let s=l>0?-1:1,d={x:t.x-s*n.y*p,y:t.y+s*n.x*p},u={x:t.x-s*a.y*p,y:t.y+s*a.x*p},f=((u.x-d.x)*a.y-(u.y-d.y)*a.x)/l,y={x:d.x+f*n.x,y:d.y+f*n.y};g.push(Math.hypot(y.x-t.x,y.y-t.y)<=Number(c.strokeMiterlimit??"4")*p?[t,d,y,u]:[t,d,u])}}let v=(e,t,i,r)=>{let n=[];for(let a=0;a<e.length;a++){o?.();let l=e[a],s=e[(a+1)%e.length],d=e=>r?e[t]>=i:e[t]<=i,u=d(l),f=d(s);if(u&&n.push(l),u!==f){let e=(i-l[t])/(s[t]-l[t]);n.push({x:l.x+e*(s.x-l.x),y:l.y+e*(s.y-l.y)})}}return n};return g.flatMap(t=>{if(o?.(),"hidden"===e.overflow&&f)for(let[e,i,r]of[["x",f.x,!0],["x",f.x+f.width,!1],["y",f.y,!0],["y",f.y+f.height,!1]])o?.(),t=v(t,e,i,r);let i=t[0],r=0;if(i)for(let e=0;e<t.length;e++){o?.();let n=t[e],a=t[(e+1)%t.length];r+=(n.x-i.x)*(a.y-i.y)-(n.y-i.y)*(a.x-i.x)}return t.length>=3&&0!==r?[{kind:"polygon",points:t.map(h)}]:[]})}R.add(_);var X=4e5,Y=new WeakSet,H=new WeakMap;function Z(e){let i=0,n=!1,o=!1,a=new Map,l=[],s=(t=1)=>!n&&(!Number.isSafeInteger(t)||t<0||t>e-i?(n=!0,!1):(i+=t,!0)),u=Symbol("unsupported-emission"),f=(e,t=0,i=new Set)=>{if(t>64)throw u;if(null==e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e)return e;if("object"!=typeof e||!s()||i.has(e))throw u;let r=Object.getPrototypeOf(e);if(r!==Object.prototype&&null!==r&&r!==Array.prototype)throw u;let n=Object.getOwnPropertyNames(e);if(!s(n.length))throw u;i.add(e);let o=Array.isArray(e)?[]:{},a,l=w(e);for(let r of n){if(!s())throw u;let n=Object.getOwnPropertyDescriptor(e,r);if(n){if("length"===r&&Array.isArray(e)){a=n;continue}if(!("terminalProjection"===r&&l)){if(!("value"in n))throw u;Object.defineProperty(o,r,{value:f(n.value,t+1,i),enumerable:n.enumerable,configurable:!1,writable:!1})}}}if(Array.isArray(e)){if(!a||!("value"in a))throw u;Object.defineProperty(o,"length",{value:a.value,writable:!1})}if(l){if(!s(3)||!O(e,o))throw u;let t=Object.getOwnPropertyDescriptor(o,"terminalProjection");Object.defineProperty(o,"terminalProjection",{...t,configurable:!1})}return M(e,o),i.delete(e),Object.preventExtensions(o)},h=e=>{try{return f(e)}catch{return}},c=(e,t)=>{if(!s())return!1;if("string"==typeof e&&"string"==typeof t)return s(e.length+t.length)&&e===t;if(e===t)return!0;if(!e||!t||"object"!=typeof e||"object"!=typeof t)return!1;let i=0,r=0;if(!s(2))return!1;let n=Object.getOwnPropertyNames(e),o=Object.getOwnPropertyNames(t);if(!s(n.length+o.length))return!1;for(let r of n){if(!s(3))return!1;let n=Object.getOwnPropertyDescriptor(e,r),o=Object.getOwnPropertyDescriptor(t,r);if(n&&(i++,!o||!("value"in n)||!("value"in o)||n.enumerable!==o.enumerable||!c(n.value,o.value)))return!1}for(let e of o){if(!s())return!1;Object.hasOwn(t,e)&&r++}return i===r},p=t=>{if(!s())return;if("string"==typeof t)return 6*t.length+2;if("number"==typeof t)return 32;if(!t||"object"!=typeof t)return 8;let i=64;if(!s())return;let r=Object.getOwnPropertyNames(t);if(s(r.length)){for(let n of r){if(!s(3))return;let r=Object.getOwnPropertyDescriptor(t,n);if(!r||!("value"in r))return;let o=p(r.value);if(void 0===o||!Number.isSafeInteger(i+=n.length+16+o)||i>e)return}return i}};return{snapshot:h,same:c,retainFragment:()=>s(),parts(e,t){if(!s()||!Array.isArray(e))return o=!0,e;let i=Object.getOwnPropertyDescriptor(e,"length")?.value;if(!Number.isSafeInteger(i)||i<0||i>t)throw RangeError("Native drawing contains too many emitted nodes");if(!s(4*i))return o=!0,e;let r=[];for(let t=0;t<i;t++){let i=Object.getOwnPropertyDescriptor(e,String(t));i&&"value"in i?r.push(i.value):(o=!0,r.push(e[t]))}return Object.freeze(r)},uncertain(){o=!0},header(e,i){if(!s(8*i.length+128))return e;let r=j(i).find(e=>"svg"===e.name);if(!r)return o=!0,e;let n=P(e.width),a=P(e.height),l=t(r,"viewBox");for(let i of((void 0!==l?l!==`0 0 ${n} ${a}`:t(r,"width")!==n||t(r,"height")!==a)&&(o=!0),r.attributes)){if(!s())return e;["xmlns","width","height","viewBox","style","role","class","id"].includes(i.name)||i.name.startsWith("data-")||i.name.startsWith("aria-")||(o=!0)}let d=Object.freeze({...e,width:Number(n),height:Number(a)}),u=e.colors,f=t(r,"style");if(void 0===f)return d;let h=new Set;for(let e of f.split(";")){if(!s(e.length+4))break;if(!e.trim())continue;let t=e.indexOf(":"),i=e.slice(0,t).trim(),r=e.slice(t+1).trim();if(t<0||h.has(i)){o=!0;continue}if(h.add(i),"background"!==i||"var(--bg)"!==r){if("--font"===i){s("string"==typeof u.font?4*u.font.length:1)&&y(u.font)===r||(o=!0);continue}["bg","fg","line","accent","muted","surface","border","font"].some(e=>`--${e}`===i)&&u[i.slice(2)]===r||(o=!0)}}return d},group(e){if(!s(8*e.open.length))return;let i=j(e.open)[0];if(!i||"g"!==i.name){o=!0;return}(t(i,"opacity")!==e.paint?.opacity||e.paint?.fill!==void 0||void 0!==t(i,"style"))&&(o=!0);let r=t(i,"transform");if(void 0===r)return;let n=d(r);return n||(o=!0),n&&Object.freeze(n)},observe(e,i){if(!s(2*(1+("connector"===e.kind?e.labels.length:0))))return!1;if("connector"===e.kind){let t=e=>{e&&s(2)&&l.push(e)};for(let i of(t(e.markers.start),e.markers.mid)){if(!s())break;t(i)}t(e.markers.end)}else if("document"===e.kind&&"definitions"===e.element){if(!s(8*i.length))return!1;for(let e of j(i)){if(!s(e.attributes.length+1))break;if("marker"!==e.name)continue;let r=t(e,"id"),n=i.indexOf("</marker>",e.end);if(!r||n<0||a.has(r)){o=!0;continue}let l=i.slice(e.start,n+9).replace(/(^|\n)[ \t]+(?=<)/g,"$1");if(!s(2))break;a.set(r,l)}}return!n},leaf(e){let t=h(e);return t?(r(e,t),{node:t,conditional:!1}):{node:e,conditional:!0}},finish(e,t){let r=new Map;for(let e of l){if(!s())break;try{if(!s(2))break;let t=r.get(e.id);if(t&&c(t,e))continue;let i=p(e);if(void 0===i||!s(2*i)){o=!0;break}let n=N(e,{indent:0}).replace(/(^|\n)[ \t]+(?=<)/g,"$1");s(3*n.length)&&a.get(e.id)===n?s(2)&&r.set(e.id,e):o=!0}catch{o=!0}}for(let t of e.primitives)"conditional"!==t.visibility&&Y.add(t);H.set(e,Object.freeze({operations:i,exhausted:n,uncertain:o,header:t}))}}}var Q=1e5,ee=(e,t,i=0)=>e.x0<=t.x0+i&&e.y0<=t.y0+i&&e.x1>=t.x1-i&&e.y1>=t.y1-i,et=(e,t)=>e.x0<t.x1&&t.x0<e.x1&&e.y0<t.y1&&t.y0<e.y1,ei=e=>({x0:e.x,y0:e.y,x1:e.x+e.w,y1:e.y+e.h});function er(e,t){let i=I(t.opacity),r=I(t.fillOpacity),o=t.fill?n(t.fill):null;return"line"!==e.kind&&"none"!==t.fill&&"transparent"!==t.fill&&!(i<1||r<1||o&&o[3]<1)}function en(e,t){return 0!==I(t.opacity)&&0!==I(t.strokeOpacity)&&0!==g(t,["polygon","polyline","path","compound"].includes(e.kind))}function eo(e,t,i,r,n=0,o=()=>!0,a,d,u=!1){let f=E(e.primitive);if(f?.kind!=="shape")return!1;let y=s(C(e.primitive));if(!y)return!1;let{geometry:h,paint:c,childPaints:p}=f,x=(r??[{x:t.x0,y:t.y0},{x:t.x0,y:t.y1},{x:t.x1,y:t.y0},{x:t.x1,y:t.y1}]).map(e=>l(e,y)),[m,b,k,v]=y,w=(Math.hypot(m+v,b-k)+Math.hypot(m-v,b+k))/2,M=n*w,O=d?l(d,y):void 0,N=!1,j,S=[],F=(r,n=e.borderWidth??0,a=c,s=!0,d=e.bounds,m)=>{if(!o())return!1;if(!m&&S.includes(r)||m&&(m.x<d.x0||m.x>d.x1||m.y<d.y0||m.y>d.y1))return!0;let b=m?[l(m,y)]:x,k=m?0:M,v=m?-1e-8:1e-8*!u,E=m?-1e-8:0;if("compound"===r.kind)return r===h&&r.children.length<=64&&r.children.every((t,i)=>"compound"!==t.kind&&F(t,e.partBorderWidths?.[i]??0,p?.[i]??c,e.partFilled?.[i]??!0,e.partBounds?.[i]??e.bounds,m));if(!s&&(0===I(a.opacity)||0===I(a.strokeOpacity)||0===g(a,"line"!==r.kind)))return!0;if("line"===r.kind){if(!m&&j&&O&&["butt","round","square"].includes(a.strokeLinecap??"butt")){if(!o())return!1;let e=r.x2-r.x1,t=r.y2-r.y1,i=O.x===r.x1&&O.y===r.y1?1:O.x===r.x2&&O.y===r.y2?-1:0;if(i&&Number.isFinite(e)&&Number.isFinite(t)&&(0!==e||0!==t)&&x.every(r=>{if(!o())return!1;let n=((r.x-O.x)*e+(r.y-O.y)*t)*i;return Number.isFinite(n)&&n<=0}))return F(r,n,a,s,d,j)}let e=g(a,!1);if(void 0===e)return!1;if(0===e)return!0;let t=e*("non-scaling-stroke"===a.vectorEffect?w:1);return b.every(e=>o()&&e.x+k<=Math.min(r.x1,r.x2)-t+E)||b.every(e=>o()&&e.x-k>=Math.max(r.x1,r.x2)+t-E)||b.every(e=>o()&&e.y+k<=Math.min(r.y1,r.y2)-t+E)||b.every(e=>o()&&e.y-k>=Math.max(r.y1,r.y2)+t-E)}let B=g(a,["polygon","polyline","path"].includes(r.kind));if(void 0===B)return!1;if(m)k=B*("non-scaling-stroke"===a.vectorEffect?w:1);else if(B>0&&0!==I(a.opacity)&&0!==I(a.strokeOpacity)&&!(i&&N&&n>0)&&et(d,t))return!1;let L=!m&&i&&N?Math.max(0,n/2):0;if("rect"===r.kind){let t=Math.min(r.width/2,r.rx??r.ry??0),i=Math.min(r.height/2,r.ry??r.rx??0);if(t>0&&i>0){var C;let l=!f.transform&&(C=e.primitive,T.has(C))&&y.every((e,t)=>e===[1,0,0,1,0,0][t])&&Number(P(n))===n&&Number.parseFloat(z("stroke-width",a.strokeWidth??"1"))===Number.parseFloat(a.strokeWidth??"1"),s=l&&Number(P(r.x))===r.x&&Number(P(r.width))===r.width,d=l&&Number(P(r.y))===r.y&&Number(P(r.height))===r.height;if(s&&(b.every(e=>o()&&e.x+k<=r.x+L+v)||b.every(e=>o()&&e.x-k>=r.x+r.width-L-v))||d&&(b.every(e=>o()&&e.y+k<=r.y+L+v)||b.every(e=>o()&&e.y-k>=r.y+r.height-L-v)))return!0;let u=r.x+r.width/2,h=r.y+r.height/2,c=r.width/2-t,p=r.height/2-i;for(let e of b){if(!o())break;let r=e.x-u,n=e.y-h,a=(r-Math.max(-c,Math.min(c,r)))/(t*t),l=(n-Math.max(-p,Math.min(p,n)))/(i*i),s=Math.hypot(a,l);if(!s)continue;let d=a/s,f=l/s,y=c*Math.abs(d)+p*Math.abs(f)+Math.hypot(t*d,i*f)-L+k;if(b.every(e=>o()&&(e.x-u)*d+(e.y-h)*f>=y-v))return!0}return!1}}if("ellipse"===r.kind||"circle"===r.kind){let e="circle"===r.kind?r.r:r.rx,t="circle"===r.kind?r.r:r.ry;if(!(e>0&&t>0))return!1;if("circle"===r.kind){let t=Math.max(Math.min(...b.map(e=>e.x)),Math.min(r.cx,Math.max(...b.map(e=>e.x)))),i=Math.max(Math.min(...b.map(e=>e.y)),Math.min(r.cy,Math.max(...b.map(e=>e.y))));if(Math.hypot(t-r.cx,i-r.cy)>=e-L+k-v)return!0}for(let i of b){if(!o())break;let n=(i.x-r.cx)/(e*e),a=(i.y-r.cy)/(t*t),l=Math.hypot(n,a);if(!l)continue;let s=n/l,d=a/l,u=Math.hypot(e*s,t*d)-L+k;if(b.every(e=>o()&&(e.x-r.cx)*s+(e.y-r.cy)*d>=u-v))return!0}return!1}let W="rect"===r.kind?[{x:r.x,y:r.y},{x:r.x+r.width,y:r.y},{x:r.x+r.width,y:r.y+r.height},{x:r.x,y:r.y+r.height}]:"polygon"===r.kind?r.points:void 0;if(!W||W.length<3||W.length>64)return!1;let D=(e,t,i)=>(t.x-e.x)*(i.y-e.y)-(t.y-e.y)*(i.x-e.x),$=Math.sign(W.reduce((e,t,i)=>{let r=W[(i+1)%W.length];return e+t.x*r.y-r.x*t.y},0));return!!$&&!!W.every((e,t)=>W.every(i=>o()&&$*D(e,W[(t+1)%W.length],i)>=-(m||u?0:1e-8)))&&W.some((e,t)=>{let i=W[(t+1)%W.length],r=Math.hypot(i.x-e.x,i.y-e.y);return r>0&&b.every(t=>o()&&$*D(e,i,t)<=(L-k+v)*r)})};if(i&&(j=a?.find(t=>o()&&F(h,e.borderWidth??0,c,!0,e.bounds,t))),(N=void 0!==j)&&O&&"compound"===h.kind&&y.every((e,t)=>e===[1,0,0,1,0,0][t])){let t=h.children[0];if(o()&&t?.kind==="rect"&&!t.rx&&!t.ry&&e.partFilled?.[0]&&0===g(p?.[0]??c,!1)){let i=O.x===t.x?1:2*(O.x===t.x+t.width),r=h.children[i],n=e.partOwnBorderWidths?.[i]??0;i&&r?.kind==="line"&&n>0&&r.x1===r.x2&&r.x1===O.x&&Math.min(r.y1,r.y2)===t.y&&Math.max(r.y1,r.y2)===t.y+t.height&&O.y>t.y&&O.y<t.y+t.height&&x.every(e=>o()&&(1===i?-1:1)*(e.x-r.x1)>=M-n/2)&&(S=[t,r])}}return F(h)}function ea(e,t,i,r,o,a){let l,s=e=>{for(let t=0;t<e;t++)if(!o())return!1;return!0};if(!s(3)||!i||"mid"===r||i.geometry?.kind!=="polygon"&&i.geometry?.kind!=="polyline"||i.geometry.points.length<3||i.geometry.points.length>64||t.transform||"polyline"===i.geometry.kind&&i.paint?.strokeLinecap!==void 0&&!["butt","round"].includes(i.paint.strokeLinecap)||t.route.closed||t.stroke.nonScaling||t.stroke.mixBlendMode&&"normal"!==t.stroke.mixBlendMode||(i.scale??1)!==1||i.paint?.vectorEffect==="non-scaling-stroke"||i.paint?.strokeLinejoin&&!["miter","round","bevel"].includes(i.paint.strokeLinejoin)||!i.size||!i.ref||!(i.size.width>0)||!(i.size.height>0)||!Number.isFinite(i.size.width+i.size.height+i.ref.x+i.ref.y)||i.viewBox&&(!(i.viewBox.width>0)||!(i.viewBox.height>0)||!Number.isFinite(i.viewBox.x+i.viewBox.y+i.viewBox.width+i.viewBox.height)))return;let d=String(t.stroke.width);if(!/^\s*(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?(?:px)?\s*$/i.test(d))return;let u=Number.parseFloat("number"==typeof t.stroke.width?P(t.stroke.width):z("stroke-width",t.stroke.width));if(!(u>0)||!Number.isFinite(u)||!s(12+5*i.geometry.points.length))return;let f=t.route.geometry,y,h,p=(e,t)=>{if(!o())return!1;let i={x:Number(P(e)),y:Number(P(t))};if(!Number.isFinite(i.x)||!Number.isFinite(i.y))return!1;if(y){if(i.x!==y.x||i.y!==y.y)return h=i,!1}else y=i;return!0};if("line"===f.kind)p("start"===r?f.x1:f.x2,"start"===r?f.y1:f.y2),p("start"===r?f.x2:f.x1,"start"===r?f.y2:f.y1);else if("polyline"!==f.kind)return;else for(let e=0;e<f.points.length;e++){let t=f.points["start"===r?e:f.points.length-e-1];if(!p(t.x,t.y))break}if(!y||!h||!o()||y.x!==h.x&&y.y!==h.y)return;let x=i.geometry.points,m="polygon"===i.geometry.kind?i:{...i,geometry:{kind:"polygon",points:x}},g="start"===r?{x:h.x-y.x,y:h.y-y.y}:{x:y.x-h.x,y:y.y-h.y},b="start"===r?y:h,v="start"===r?h:y,w={kind:"line",x1:b.x,y1:b.y,x2:v.x,y2:v.y},M=c({route:{...t.route,geometry:w,contours:[{start:b,end:v,closed:!1,startTangent:g,endTangent:g}]},stroke:{...t.stroke,width:u},markers:{mid:[],..."start"===r?{start:m}:{end:m}}})[0],O=M?.hull;if(!O||O.length!==x.length||!s(O.length))return;let N=0;for(let e=0;e<O.length;e++){let t=O[e],i=O[(e+1)%O.length];for(let e of O){if(!o())return;let r=(i.x-t.x)*(e.y-t.y)-(i.y-t.y)*(e.x-t.x);if(!Number.isFinite(r))return;if(r){if(N&&Math.sign(r)!==N)return;N||=Math.sign(r)}}}if(!N)return;let j=m.viewBox??(m.size?{x:0,y:0,...m.size}:void 0),S=e=>"visible"===m.overflow||!!j&&e.x>j.x&&e.x<j.x+j.width&&e.y>j.y&&e.y<j.y+j.height,F=i.paint??{},E=t=>{if(!t||!o())return;let i=a?a(t):k(t,e.colors);return i?n(i)??void 0:void 0},B=E(F.fill),T=E(F.stroke),L=I(F.opacity),C="none"===F.fill||L<1||B&&B[3]<1?"absent":B?.[3]===1&&1===L&&x.every(e=>o()&&S(e))?"opaque":"unknown",W=void 0===F.stroke||"none"===F.stroke||0===L||T?.[3]===0,D=F.strokeWidth??"1",$=/^\s*(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?(?:px)?\s*$/i.test(D)?Number.parseFloat(D):void 0,A=("userSpaceOnUse"===m.units?1:u)*(m.viewBox&&m.size?Math.min(m.size.width/m.viewBox.width,m.size.height/m.viewBox.height):1),U=W?0:void 0!==$&&Number.isFinite($*A)?$*A/2:void 0,R=W||0===$?"absent":void 0!==$&&$>0&&T?.[3]===1&&1===L&&!F.strokeDasharray?"visible":"unknown",_=[];if(!W&&void 0!==$&&$>0&&T?.[3]===1&&1===L&&!F.strokeDasharray){for(let e=0;e<x.length-("polyline"===i.geometry.kind);e++){let t=x[e],i=x[(e+1)%x.length];if(t.x!==i.x||t.y!==i.y)for(let r=1;r<4;r++){if(!s(3))return;let n=r/4;S({x:t.x*(1-n)+i.x*n,y:t.y*(1-n)+i.y*n})&&_.push({x:O[e].x*(1-n)+O[(e+1)%O.length].x*n,y:O[e].y*(1-n)+O[(e+1)%O.length].y*n})}}let e=+("polygon"!==i.geometry.kind),t=x.length-("polygon"!==i.geometry.kind);for(let i=e;i<t;i++){if(!s(2))return;let e=x[(i+x.length-1)%x.length],t=x[i],r=x[(i+1)%x.length];(e.x!==t.x||e.y!==t.y)&&(t.x!==r.x||t.y!==r.y)&&S(t)&&_.push(O[i])}}let q=!1;if("hidden"===i.overflow){if(!s(5))return;q=i.viewBox?.x===0&&0===i.viewBox.y&&i.viewBox.width===i.size.width&&i.viewBox.height===i.size.height}if(("visible"===i.overflow||q)&&(void 0===i.orient||"auto"===i.orient||"auto-start-reverse"===i.orient)&&"unknown"!==C&&"unknown"!==R&&1===L&&("polygon"===i.geometry.kind||"none"===F.fill||B?.[3]===0)&&!F.strokeDasharray&&(void 0===F.strokeLinecap||"butt"===F.strokeLinecap)&&(void 0===F.strokeLinejoin||"miter"===F.strokeLinejoin)&&(void 0===F.strokeMiterlimit||4===Number(F.strokeMiterlimit))){if(q&&!s(16))return;l={marker:q?{id:i.id,shape:i.shape,geometry:i.geometry,paint:i.paint,units:i.units,size:i.size,ref:i.ref,orient:i.orient,viewBox:i.viewBox,scale:i.scale,overflow:"visible"}:i,anchor:y,tangent:g,position:r,width:u}}return(!l||o())&&s(6)?{repaint:{resource:M.repaint,anchor:y,geometry:i.geometry.kind},hull:O,fill:C,stroke:R,fillColor:B,strokeColor:T,innerStroke:U,strokeWitnesses:_,padding:M.padding,...l?{paintPieceSource:l}:{}}:void 0}function el(e,t){let i=e.marker.geometry;if("polygon"!==i.kind&&"polyline"!==i.kind)return;let r=i.points,n="polygon"===i.kind?r.length:r.length-2;for(let e=0;e<n;e++){for(let e=0;e<8;e++)if(!t())return;let n="polygon"===i.kind?e:e+1,o=r[(n+r.length-1)%r.length],a=r[n],l=r[(n+1)%r.length],s=a.x-o.x,d=a.y-o.y,u=l.x-a.x,f=l.y-a.y,y=Math.hypot(s,d),h=Math.hypot(u,f),c=s/y*(u/h)+d/y*(f/h);if(!(y>0)||!(h>0)||!Number.isFinite(c)||c<=-.875+128*Number.EPSILON)return}let o={},a;try{a=G(e.marker,e.anchor,e.tangent,e.position,e.width,()=>{if(!t())throw o})}catch(e){if(e===o)return;throw e}for(let e of a){if(!t()||"polygon"!==e.kind||e.points.length<3)return;let i=0;for(let r=0;r<e.points.length;r++){if(!t())return;let n=e.points[r],o=e.points[(r+1)%e.points.length];if(!Number.isFinite(n.x)||!Number.isFinite(n.y))return;i+=(n.x-e.points[0].x)*(o.y-e.points[0].y)-(n.y-e.points[0].y)*(o.x-e.points[0].x)}if(!Number.isFinite(i)||0===i)return}return a}function es(e,t,i){if(!i())return"exhausted";let r=e=>e?.fill==="absent"&&"absent"===e.stroke&&(e.fillColor?.[3]===0||e.paintPieceSource?.marker.paint?.fill==="none");if(r(e)||r(t))return"clear";if(!e?.paintPieceSource||!t?.paintPieceSource)return"unknown";let n={},o=()=>{if(!i())throw n;return!0};try{let i=el(e.paintPieceSource,o);if(i){let e=el(t.paintPieceSource,o);if(e&&function(e,t,i){for(let r of e)for(let e of t){if(!i()||"polygon"!==r.kind||"polygon"!==e.kind)return!1;let t=!1;for(let n of[r.points,e.points]){for(let o=0;o<n.length;o++){if(!i())return!1;let a=n[o],l=n[(o+1)%n.length],s=a.y-l.y,d=l.x-a.x,u=Math.hypot(s,d);if(!(u>0)||!Number.isFinite(u))continue;let f=s/u,y=d/u,h=r.points[0],c=1/0,p=-1/0,x=1/0,m=-1/0,g=1;for(let e of r.points){if(!i())return!1;let t=(e.x-h.x)*f+(e.y-h.y)*y;c=Math.min(c,t),p=Math.max(p,t),g=Math.max(g,Math.abs(e.x),Math.abs(e.y))}for(let t of e.points){if(!i())return!1;let e=(t.x-h.x)*f+(t.y-h.y)*y;x=Math.min(x,e),m=Math.max(m,e),g=Math.max(g,Math.abs(t.x),Math.abs(t.y))}let b=1e-8+128*Number.EPSILON*g;if(Number.isFinite(c+p+x+m)&&(p+b<x||m+b<c)){t=!0;break}}if(t)break}if(!t)return!1}return!0}(i,e,o))return"clear"}}catch(e){if(e===n)return"exhausted";throw e}return"unknown"}function ed(e,t,i,r=0){if(!i()||!Number.isSafeInteger(r)||r<0)return"unknown";if(t?.fill==="absent"||e?.stroke==="absent"&&"absent"===e.fill)return"clear";if(!e||!t)return"unknown";let n=t.hull;if(void 0!==e.innerStroke){let t=0;for(let r=0;r<e.hull.length;r++){if(!i())return"unknown";let n=e.hull[r],o=e.hull[(r+1)%e.hull.length],a=e.hull[(r+2)%e.hull.length],l=(o.x-n.x)*(a.y-o.y)-(o.y-n.y)*(a.x-o.x);if(l){t=Math.sign(l);break}}if(t)for(let r=0;r<e.hull.length;r++){if(!i())return"unknown";let o=e.hull[r],a=e.hull[(r+1)%e.hull.length],l=a.x-o.x,s=a.y-o.y,d=Math.hypot(l,s);if(!d)continue;let u=!0;for(let r of n){if(!i())return"unknown";let n=t*(l*(r.y-o.y)-s*(r.x-o.x))/d,f=1e-8+64*Number.EPSILON*Math.max(1,Math.abs(r.x),Math.abs(r.y),Math.abs(o.x),Math.abs(o.y),Math.abs(a.x),Math.abs(a.y));if(!Number.isFinite(n)||n>=-e.innerStroke-f){u=!1;break}}if(u)return"clear"}}if(void 0!==e.padding&&Number.isFinite(e.padding))for(let t of[e.hull,n])for(let r=0;r<t.length;r++){if(!i())return"unknown";let o=t[r],a=t[(r+1)%t.length],l=a.y-o.y,s=o.x-a.x,d=Math.hypot(l,s);if(!d)continue;let u=1/0,f=-1/0,y=1/0,h=-1/0;for(let t of e.hull){if(!i())return"unknown";let e=(t.x-o.x)*l+(t.y-o.y)*s;u=Math.min(u,e),f=Math.max(f,e)}for(let e of n){if(!i())return"unknown";let t=(e.x-o.x)*l+(e.y-o.y)*s;y=Math.min(y,t),h=Math.max(h,t)}if(f+e.padding*d<y||h<u-e.padding*d)return"clear"}if(e.paintPieceSource&&t.paintPieceSource){let r=es(e,t,i);if("clear"===r)return"clear";if("exhausted"===r)return"unknown"}if("visible"!==e.stroke||"opaque"!==t.fill||void 0===t.innerStroke||!e.strokeColor||!t.fillColor)return"unknown";let o=!0;for(let r=0;r<3;r++){if(!i())return"unknown";e.strokeColor[r]!==t.fillColor[r]&&(o=!1)}if(o)return"unknown";for(let o=r;o<e.strokeWitnesses.length&&i();o++){let r=e.strokeWitnesses[o],a=0,l=!0;for(let e=0;e<n.length;e++){if(!i())return"unknown";let o=n[e],s=n[(e+1)%n.length],d=s.x-o.x,u=s.y-o.y,f=Math.hypot(d,u),y=d*(r.y-o.y)-u*(r.x-o.x),h=1e-8+64*Number.EPSILON*Math.max(1,Math.abs(r.x),Math.abs(r.y),Math.abs(o.x),Math.abs(o.y),Math.abs(s.x),Math.abs(s.y));if(!Number.isFinite(y)||!f||Math.abs(y)/f<=t.innerStroke+h||a&&Math.sign(y)!==a){l=!1;break}a||=Math.sign(y)}if(l&&a)return r}return"unknown"}var eu=new Set(["node","service","class-box","entity"]),ef=new Set([...eu,"group","note","actor","junction"]);function ey(t,i,r={}){let n,l;return eh(t,(n=K(t,void 0),(l=(t,i,r,o,s=!1,d=1,u=!0)=>{t.forEach((t,f)=>{let y=`${i}.${f}`;if("group"===t.kind){let i=t.identity??{id:t.id,role:t.role};l(t.children.map(e=>e.node),y,e(r,a(t.transform)),Object.freeze([...o,q(i)]),s||"conditional"===t.visibility,$(d,I(t.paint?.opacity)),u&&!t.transform)}else n.leaf(t,y,r,o,s,d,void 0,u)})})(t.parts,"scene",o,Object.freeze([])),n.finish()),i,r)}function eh(t,i,r,o={}){let d=[],y=!1,p=!1,w=(e,t=!1)=>{d.length<64&&d.push(Object.freeze(e)),t?y=!0:p=!0},M=(e,t,i)=>w({code:"POTENTIAL_OCCLUSION",id:e,by:t,message:i}),O=(e,t,i=!1)=>w({code:"UNMEASURED_PAINT",id:e,message:t},i),N=e=>w({code:"OUTPUT_SCOPE",message:e}),j=H.get(i);j&&t!==j.header&&(N("Retained emission is paired with a different document header"),t=j.header);let S=0,F=0,B=t.width,T=t.height,L=0;for(let e of i.primitives){if(!j&&Y.has(e)&&N("Native paint occurrences have no bound emission context"),"conditional"===e.visibility){L++;continue}"unmeasured"===e.coverage&&O(e.id,e.reason??"Paint geometry is unavailable"),e.text&&"non-painting"!==e.coverage&&"prepared"!==e.text.measurement&&w({code:"UNPREPARED_TEXT",id:e.id,message:"Text was not retained from layout preparation"});let t=e.bounds;t&&(S=Math.min(S,t.x0),F=Math.min(F,t.y0),B=Math.max(B,t.x1),T=Math.max(T,t.y1))}L&&w({code:"CONDITIONAL_PAINT",message:`${L} primitives depend on unresolved paint or interaction state`}),(!1===o.outputSupported||t.family.startsWith("family:"))&&N("Selected backend, style or external family has no native final-paint proof"),S=Math.min(0,S+1e-6),F=Math.min(0,F+1e-6),B=Math.max(t.width,B-1e-6),T=Math.max(t.height,T-1e-6);let W=S<0||F<0||B>t.width||T>t.height,D={x:Math.floor(S),y:Math.floor(F),width:Math.ceil(B)-Math.floor(S),height:Math.ceil(T)-Math.floor(F)};if(W&&t.width>0&&t.height>0){let e=t.width/t.height;D.width/D.height>e?D.height=D.width/e:D.width=D.height*e}let $=Object.freeze(W?D:{x:0,y:0,width:t.width,height:t.height}),A={x0:$.x,y0:$.y,x1:$.x+$.width,y1:$.y+$.height};W&&i.primitives.some(e=>{let t=E(e);return t?.kind==="connector"?t.stroke.nonScaling:(t?.kind==="shape"||t?.kind==="text")&&"non-scaling-stroke"===t.paint.vectorEffect})&&N("Viewport expansion changes the user-unit extent of non-scaling strokes; final painted containment is unverified");let U=0,R=(e,i,r)=>{if(U++,!i||!r)return void O(e,"Projected label has no retained occupied or available region");let n=ei(r);0===n.x0&&0===n.y0&&n.x1===t.width&&n.y1===t.height&&(n=A),ee(n,ei(i),.5)||w({code:"LABEL_CONTAINMENT",id:e,message:"Retained text extends beyond its declared available region"},!0)};if(r){for(let e of r.nodes)e.label?.trim()&&"hidden"!==e.labelVisibility&&"semantic"!==e.labelVisibility&&R(String(e.id),e.labelBounds,e.labelContainer);for(let e of r.labels??[])e.text.trim()&&"hidden"!==e.visibility&&"semantic"!==e.visibility&&R(e.id,e.bounds,e.container)}let _=function e(t){if(!t.length)return;let i={x0:1/0,y0:1/0,x1:-1/0,y1:-1/0};for(let e of t)i.x0=Math.min(i.x0,e.bounds.x0),i.y0=Math.min(i.y0,e.bounds.y0),i.x1=Math.max(i.x1,e.bounds.x1),i.y1=Math.max(i.y1,e.bounds.y1);if(t.length<=8)return{bounds:i,leaves:t};let r=i.x1-i.x0>=i.y1-i.y0?"x0":"y0";t.sort((e,t)=>e.bounds[r]-t.bounds[r]||e.primitive.order-t.primitive.order);let n=Math.floor(t.length/2);return{bounds:i,left:e(t.slice(0,n)),right:e(t.slice(n))}}(function(e,t){let i=new Map,r=t=>{if(i.has(t))return i.get(t);let r=k(t,e.colors),o=!!r&&n(r)?.[3]===1;return i.set(t,o),o},o=e=>{if("non-scaling-stroke"===e.vectorEffect||!e.stroke||!r(e.stroke)||1!==Number(e.opacity??1)||1!==Number(e.strokeOpacity??1)||e.strokeDasharray)return 0;let t=Number(e.strokeWidth?.replace(/px$/,"")??1);return Number.isFinite(t)&&t>0?t:0},a=new Map,s=(e,t)=>JSON.stringify([e.owner,t,C(e)]);for(let e of t){let t=E(e);if(t?.kind!=="shape"||"measured"!==e.coverage||"conditional"===e.visibility||void 0!==e.groupOpacity)continue;let i="compound"===t.geometry.kind?t.geometry.children:[t.geometry];for(let r=0;r<i.length;r++){let n=o("compound"===t.geometry.kind?t.childPaints?.[r]??t.paint:t.paint);n>0&&a.set(s(e,i[r]),n)}}let d=[];for(let e of t){let t=E(e);if(!t||"shape"!==t.kind||"conditional"===e.visibility||"measured"!==e.coverage||void 0!==e.groupOpacity)continue;let{geometry:i,paint:n,childPaints:f}=t,y="compound"===i.kind?i.children:void 0,h=y?void 0:i,c=y?.map((e,t)=>f?.[t]??n),p=y?void 0:n,m=y?.map((e,t)=>er(e,c[t])),k=!y&&er(h,p),v=y?.map((e,t)=>en(e,c[t])),w=!y&&en(h,p);if(!(m?m.some(Boolean):k)&&!(v?v.some(Boolean):w))continue;let M=C(e),[O,N,j,P,z,S]=M,F={kind:"matrix",a:O,b:N,c:j,d:P,e:z,f:S},B,T=y?[]:void 0;for(let t=0,i=y?.length??1;t<i;t++){if(y&&!(t in y))continue;let i=y?y[t]:h,r=c?c[t]:p;if(!(m?m[t]:k)&&!(v?v[t]:w))continue;let n=b({kind:"shape",id:e.id,role:e.role,geometry:i,paint:r},F)??e.bounds;T&&(T[t]=n),B=u(B,n)}if(!B)continue;let L={primitive:e,bounds:B,borderWidth:a.get(s(e,i)),...y?{partBorderWidths:y.map(t=>a.get(s(e,t))??0),partOwnBorderWidths:c.map(o),partFilled:m,partBounds:T}:{}};if(Math.abs(M[1])>1e-12||Math.abs(M[2])>1e-12){d.push(L);continue}let W=[],D=[];for(let e=0,t=y?.length??1;e<t;e++){if(y&&!(e in y))continue;let t=y?y[e]:h,i=c?c[e]:p;if("rect"===t.kind&&1===M[0]&&1===M[3]&&0===M[1]&&0===M[2]&&"non-scaling-stroke"!==i.vectorEffect&&i.stroke&&r(i.stroke)&&1===I(i.opacity)&&1===I(i.strokeOpacity)&&!i.strokeDasharray&&void 0!==g(i,!1)){let e=Number.parseFloat(i.strokeWidth??"1")/2,r=Math.max(0,Math.min(t.width/2,t.rx??t.ry??0)),n=Math.max(0,Math.min(t.height/2,t.ry??t.rx??0));if(e>0)for(let i of[{x0:t.x-e,y0:t.y+n,x1:t.x+e,y1:t.y+t.height-n},{x0:t.x+t.width-e,y0:t.y+n,x1:t.x+t.width+e,y1:t.y+t.height-n},{x0:t.x+r,y0:t.y-e,x1:t.x+t.width-r,y1:t.y+e},{x0:t.x+r,y0:t.y+t.height-e,x1:t.x+t.width-r,y1:t.y+t.height+e}])i.x0<i.x1&&i.y0<i.y1&&D.push(x(i,F))}if(!(m?m[e]:k)||"rect"!==t.kind||1!==I(i.opacity)||1!==I(i.fillOpacity)||!i.fill||!r(i.fill))continue;let n=Math.min(t.width/2,t.rx??t.ry??0),o=Math.min(t.height/2,t.ry??t.rx??0),a=l({x:t.x+n,y:t.y+o},M),s=l({x:t.x+t.width-n,y:t.y+t.height-o},M);W.push({x0:Math.min(a.x,s.x),y0:Math.min(a.y,s.y),x1:Math.max(a.x,s.x),y1:Math.max(a.y,s.y)})}d.push({...L,interiors:W,strokeInteriors:D})}return d}(t,i.primitives));j?.uncertain&&N("Emitted document context or marker resource differs from retained paint evidence");let q=0,V=j?.operations??0,J=j?.exhausted??!1,K=()=>V>=X?(J=!0,!1):(V++,!0),G=new Map;for(let e of i.primitives){if(J)break;for(let t of[e.owner,...e.ancestors]){if(!K())break;if(!ef.has(t.role))continue;let e=G.get(t.id)??new Set;e.add(t.role),G.set(t.id,e)}}let Z=(e,t)=>{let i=!1;for(let[r,n]of[[e.endpoints.from,e.endpoints.start],[e.endpoints.to,e.endpoints.end]])if(r===t.id)if(n?.owner){if(n.owner.id!==r){i=!0;continue}if(n.owner.role===t.role)return"attached"}else{if(!((G.get(r)?.size??0)>1))return"attached";i=!0}return i?"ambiguous":"unrelated"},el=(e,t)=>{if(!(J||!K()||!e||!et(e.bounds,t.bounds))){if(!e.leaves){el(e.left,t),el(e.right,t);return}for(let i of e.leaves){if(!K())return;if(++q>Q){J=!0;return}i.primitive.order<=t.order||!et(i.bounds,t.bounds)||(i.interiors?.some(e=>K()&&ee(e,t.bounds))?w({code:"TEXT_OCCLUDED",id:t.id,by:i.primitive.id,message:`Retained text is fully covered by later opaque artwork owned by ${i.primitive.owner.id}`},!0):M(t.id,i.primitive.id,"Later filled artwork overlaps the occupied text band; its exact ink intersection is unverified"))}}};for(let e of i.primitives)"text"===e.kind&&"measured"===e.coverage&&"conditional"!==e.visibility&&el(_,e);let ey=new Map;for(let e of i.primitives){if(!K())break;let i=E(e);if(i?.kind!=="connector"||!["edge","relationship"].includes(e.role)||"invisible"===i.lineStyle||"conditional"===e.visibility||"measured"!==e.coverage)continue;let r=Number.parseFloat(String(i.stroke.width)),a=Number(i.stroke.opacity??1);if(0===r||0===a||"none"===i.stroke.color||"transparent"===i.stroke.color)continue;if(!ey.has(i.stroke.color)){let e=k(i.stroke.color,t.colors);ey.set(i.stroke.color,e?n(e)?.[3]:void 0)}let s=ey.get(i.stroke.color);if(0===s)continue;let d=!1!==o.outputSupported&&!t.family.startsWith("family:")&&!!i.endpoints?.from&&!!i.endpoints.to&&void 0!==s&&s>0&&r>0&&a>0&&!i.stroke.dash,u=C(e),[y,c,p,b,v,N]=u,j={kind:"matrix",a:y,b:c,c:p,d:b,e:v,f:N},P=g({stroke:i.stroke.color,strokeWidth:String(i.stroke.width),strokeLinecap:i.stroke.lineCap,strokeLinejoin:i.stroke.lineJoin,strokeMiterlimit:String(i.stroke.miterLimit)},m(i.route));if(void 0===P){O(e.id,"Final connector stroke has no bounded cap/join extent");continue}let z=t=>{if(!K())return!1;let n=i.stroke.nonScaling?f(x(t.bounds,j),P):x(f(t.bounds,P),j),o=t.line?.map(e=>l(e,u)),a=t=>{if(!(J||!K()||!t||!et(t.bounds,n))){if(!t.leaves){a(t.left),a(t.right);return}for(let a of t.leaves){if(!K())return;if(++q>Q){J=!0;return}let t=d&&"note"===a.primitive.role&&!!a.interiors?.length;if(!eu.has(a.primitive.role)&&!t||a.primitive.owner.id===e.owner.id&&a.primitive.owner.role===e.owner.role||!et(a.bounds,n))continue;let l=Z(i,a.primitive.owner);"attached"!==l&&(d&&o&&function(e,t,i,r,n,o,a){if(!a()||!o.every(Number.isFinite)||1!==o[0]||0!==o[1]||0!==o[2]||1!==o[3]||i.nonScaling||!["butt","round","square"].includes(i.lineCap??"butt")||!["miter","round","bevel"].includes(i.lineJoin??"miter")||!Number.isFinite(r)||r<=0||!Number.isFinite(n)||n<r/2)return!1;let[l,s]=e;if(![l.x,l.y,s.x,s.y].every(Number.isFinite)||l.x!==s.x&&l.y!==s.y||l.x===s.x&&l.y===s.y)return!1;let d=r/2,u={x0:Math.min(l.x,s.x)-d,y0:Math.min(l.y,s.y)-d,x1:Math.max(l.x,s.x)+d,y1:Math.max(l.y,s.y)+d};if(!a()||!Object.values(u).every(Number.isFinite)||et(u,t))return!1;for(let i of e){if(!a())return!1;let e={x0:i.x-n,y0:i.y-n,x1:i.x+n,y1:i.y+n};if(!Object.values(e).every(Number.isFinite)||et(e,t))return!1}return!0}(o,a.bounds,i.stroke,r,P,u,K)||(d&&"unrelated"===l&&o&&a.interiors?.some(e=>K()&&function(e,t){let[i,r]=e,n=0,o=1;for(let[e,a,l,s]of[[i.x,r.x-i.x,t.x0,t.x1],[i.y,r.y-i.y,t.y0,t.y1]])if(1e-12>Math.abs(a)){if(e<=l+1e-8||e>=s-1e-8)return!1}else{let t=(l-e)/a,i=(s-e)/a;n=Math.max(n,Math.min(t,i)),o=Math.min(o,Math.max(t,i))}return(o-n)*Math.hypot(r.x-i.x,r.y-i.y)>1e-8}(o,e))?w({code:"CONNECTOR_CARD_CROSSING",id:e.id,by:a.primitive.id,message:`Final connector shaft crosses opaque artwork owned by unrelated ${t?"note":"card"} ${a.primitive.owner.id}`},!0):M(e.id,a.primitive.id,t?"Final connector envelope intersects unrelated filled note artwork; actual route/note crossing is unverified":"Final connector envelope intersects unrelated filled card artwork; actual route/card crossing is unverified")))}}};return a(_),!J},S=i.route.geometry;if("path"===S.kind)h(S.d,z,K)||J||O(e.id,"Final connector segments could not be measured from typed path geometry");else{let e="line"===S.kind?[{x:S.x1,y:S.y1},{x:S.x2,y:S.y2}]:S.points;for(let t=1;t<e.length;t++){let i=e[t-1],r=e[t];if(!z({bounds:{x0:Math.min(i.x,r.x),y0:Math.min(i.y,r.y),x1:Math.max(i.x,r.x),y1:Math.max(i.y,r.y)},line:[i,r]}))break}}}let ec=new Map,ep,ex=e=>(ep??=v())(e,t.colors);for(let r of i.primitives){let i=E(r);if("connector"!==r.kind||i?.kind!=="connector"||"invisible"===i.lineStyle||"non-painting"===r.coverage)continue;let l=s(a(i.transform));if(!l)continue;let[d,f,y,p,x,m]=e(C(r),l);for(let e of c(i,{kind:"matrix",a:d,b:f,c:y,d:p,e:x,f:m})){if(!e.bounds){O(r.id,"Endpoint marker has no painted footprint");continue}let a=JSON.stringify([r.owner.id,r.owner.role,e.position,e.resource,e.anchor,e.repaint]),l="number"==typeof i.stroke.width?Number.isFinite(i.stroke.width)&&i.stroke.width>0:/^\s*(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?(?:px)?\s*$/i.test(i.stroke.width)&&Number.parseFloat(i.stroke.width)>0,d="start"===e.position?i.markers.start:"end"===e.position?i.markers.end:1===i.markers.mid.length?i.markers.mid[0]:void 0,f="measured"===r.coverage&&!!s(C(r)),y=d?.units==="userSpaceOnUse"||l,p=ec.get(a),x=!1!==o.outputSupported&&!t.family.startsWith("family:")&&(["edge","relationship"].includes(r.role)&&!!i.endpoints?.from&&!!i.endpoints.to||p?.semantic===!0),m=C(r),b="measured"===r.coverage&&"conditional"!==r.visibility&&(r.groupOpacity??1)===1&&0===r.ancestors.length&&!!m&&1===m[0]&&0===m[1]&&0===m[2]&&1===m[3]&&0===m[4]&&0===m[5],k=x&&b&&y?function(e,t,i,r){let{position:n,anchor:o}=i;for(let e=0;e<18;e++)if(!r())return;if(!t||"mid"===n||e.transform||e.route.closed||e.stroke.nonScaling||"visible"===t.overflow||(t.scale??1)!==1||t.paint?.vectorEffect==="non-scaling-stroke"||void 0!==t.orient&&"auto"!==t.orient&&"auto-start-reverse"!==t.orient||!t.size||!t.ref||!(t.size.width>0)||!(t.size.height>0)||!Number.isFinite(t.size.width+t.size.height+t.ref.x+t.ref.y)||t.ref.y<0||t.ref.y>t.size.height||0!==t.ref.x&&t.ref.x!==t.size.width||t.viewBox&&(0!==t.viewBox.x||0!==t.viewBox.y||t.viewBox.width!==t.size.width||t.viewBox.height!==t.size.height))return;let a=e.route.geometry,l,s,d=(e,t)=>{if(!r()||!Number.isFinite(e)||!Number.isFinite(t))return!1;if(l){if(e!==l.x||t!==l.y)return s={x:e,y:t},!1}else l={x:e,y:t};return!0};if("line"===a.kind){if(!d("start"===n?a.x1:a.x2,"start"===n?a.y1:a.y2))return;d("start"===n?a.x2:a.x1,"start"===n?a.y2:a.y1)}else if("polyline"!==a.kind)return;else for(let e=0;e<a.points.length;e++){let t=a.points["start"===n?e:a.points.length-e-1];if(!d(t.x,t.y))break}if(!l||!s||l.x!==o.x||l.y!==o.y||l.x!==s.x&&l.y!==s.y)return;let f=e=>({x:Number(P(e.x)),y:Number(P(e.y))}),y=f(l),h=f(s),p=l.y===s.y;if(![y.x,y.y,h.x,h.y].every(Number.isFinite)||p&&(y.x!==l.x||y.y!==h.y||Math.sign(h.x-y.x)!==Math.sign(s.x-l.x))||!p&&(y.y!==l.y||y.x!==h.x||Math.sign(h.y-y.y)!==Math.sign(s.y-l.y)))return;let x=1;if("userSpaceOnUse"!==t.units){let t=String(e.stroke.width);if(!/^\s*(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?(?:px)?\s*$/i.test(t)||!((x=Number.parseFloat("number"==typeof e.stroke.width?P(e.stroke.width):z("stroke-width",e.stroke.width)))>0)||!Number.isFinite(x)||x!==Number.parseFloat(t))return}let m="start"===n?y:h,g="start"===n?h:y,b={x:g.x-m.x,y:g.y-m.y},k=c({route:{geometry:{kind:"line",x1:m.x,y1:m.y,x2:g.x,y2:g.y},closed:!1,contours:[{start:m,end:g,closed:!1,startTangent:b,endTangent:b}]},stroke:{width:x},markers:{mid:[],..."start"===n?{start:t}:{end:t}}})[0];if(!r()||!k?.bounds||!i.bounds)return;let v=u(i.bounds,k.bounds),w="end"===n||"auto-start-reverse"===t.orient?-1:1,M=0===t.ref.x?1:-1,O=Math.sign(s.x-l.x)*w*M,N=Math.sign(s.y-l.y)*w*M;if(!r())return;let j={x0:O>0?Math.max(v.x0,k.anchor.x):v.x0,y0:N>0?Math.max(v.y0,k.anchor.y):v.y0,x1:O<0?Math.min(v.x1,k.anchor.x):v.x1,y1:N<0?Math.min(v.y1,k.anchor.y):v.y1};return j.x0<=j.x1&&j.y0<=j.y1?{region:{...k,bounds:v},clipped:j}:void 0}(i,d,e,K):void 0,v=k?.region??e,w=f&&y?function(e,t,i,r){if(!e||!t||e.geometry?.kind!=="polygon"||(e.scale??1)>1||1!==I(e.paint?.opacity)||1!==I(e.paint?.fillOpacity)||!e.paint?.fill)return;let o=i(e.paint.fill);if(!o||n(o)?.[3]!==1)return;let a=e.geometry.points;if(a.length<3||a.length>64||a.length!==t.length)return;let l=Math.sign(a.reduce((e,t,i)=>{let r=a[(i+1)%a.length];return e+t.x*r.y-r.x*t.y},0));if(!l||!a.every((e,t)=>a.every(i=>r()&&l*((a[(t+1)%a.length].x-e.x)*(i.y-e.y)-(a[(t+1)%a.length].y-e.y)*(i.x-e.x))>=0)))return;let s=e=>({x:e.reduce((e,t)=>e+t.x,0)/e.length,y:e.reduce((e,t)=>e+t.y,0)/e.length}),d=s(a),u=s(t),f=e.viewBox??(e.size?{x:0,y:0,width:e.size.width,height:e.size.height}:void 0),y=[];for(let i=-1,n=a.length;i<n;i++){if(!r())continue;let n=i<0?d:{x:(d.x+a[i].x)/2,y:(d.y+a[i].y)/2};("visible"===e.overflow||f&&n.x>f.x&&n.x<f.x+f.width&&n.y>f.y&&n.y<f.y+f.height)&&y.push(i<0?u:{x:(u.x+t[i].x)/2,y:(u.y+t[i].y)/2})}return y}(d,v.hull,ex,K):void 0,M=f&&y&&d?.paint?.vectorEffect!=="non-scaling-stroke"&&function(e,t,i,r){if(t?.length)return!0;if(!e?.geometry||1!==I(e.paint?.opacity))return!1;let o=e.viewBox??(e.size?{x:0,y:0,width:e.size.width,height:e.size.height}:void 0),a=t=>Number.isFinite(t.x)&&Number.isFinite(t.y)&&("visible"===e.overflow||!!o&&t.x>o.x&&t.x<o.x+o.width&&t.y>o.y&&t.y<o.y+o.height),l=e=>{if(!e||!r())return!1;let t=i(e);return!!t&&n(t)?.[3]===1},s=e.geometry;if(1===I(e.paint?.fillOpacity)&&l(e.paint?.fill)&&("circle"===s.kind&&s.r>0&&a({x:s.cx,y:s.cy})||"ellipse"===s.kind&&s.rx>0&&s.ry>0&&a({x:s.cx,y:s.cy})||"rect"===s.kind&&s.width>0&&s.height>0&&a({x:s.x+s.width/2,y:s.y+s.height/2})))return!0;if(1!==I(e.paint?.strokeOpacity)||!l(e.paint?.stroke)||e.paint?.strokeDasharray||!(Number.parseFloat(e.paint?.strokeWidth??"1")>0)||void 0===g(e.paint??{},!0))return!1;let d=(e,t)=>r()&&Math.hypot(t.x-e.x,t.y-e.y)>0&&a({x:(e.x+t.x)/2,y:(e.y+t.y)/2});if("line"===s.kind)return d({x:s.x1,y:s.y1},{x:s.x2,y:s.y2});if("polygon"===s.kind||"polyline"===s.kind)return s.points.length<=64&&s.points.some((e,t)=>t>0&&d(s.points[t-1],e));if("path"===s.kind){let e=!1;return h(s.d,t=>(t.line&&d(t.line[0],t.line[1])&&(e=!0),r()),r)&&e}return!1}(d,w,ex,K),N=function(e,t,i){if(!i()||!t)return!0;if(t.geometry?.kind==="line"||t.paint?.fill==="none"||t.paint?.fill==="transparent"||1>I(t.paint?.opacity))return!1;let r=t.paint?.fill;if(!r||!i())return!0;let o=e(r),a=o?n(o):null;return!a||1===a[3]}(ex,d,K),j=x&&(r.groupOpacity??1)===1&&0===r.ancestors.length&&(!i.stroke.mixBlendMode||"normal"===i.stroke.mixBlendMode)?function(e,t,i){let r=e?.paint;if(!i()||!r||!Number.isFinite(I(r.opacity))||void 0===g(r,!0)||void 0!==r.strokeDasharray&&"none"!==r.strokeDasharray||void 0!==r.strokeDashoffset||void 0!==r.paintOrder&&"normal"!==r.paintOrder||!r.fill||!r.stroke||!i())return;let o=t(r.fill);if(!o||"none"!==o&&!n(o)||!i())return;let a=t(r.stroke);if(!(!a||"none"!==a&&!n(a)))return`${o}\0${a}`}(d,ex,K):void 0,S=x&&b?ea(t,i,d,e.position,K,ex):void 0;ec.set(a,{primitive:r,position:e.position,clipped:k?.clipped,anchor:v.anchor,repaint:v.repaint,bounds:v.bounds,hull:v.hull,padding:v.padding,witnesses:w,actualInk:M,strokeProof:S,paintIdentity:j,semantic:x,mayFill:N})}}let em=(e,t)=>{if("conditional"!==t.primitive.visibility&&!(J||!K()||!e||!et(e.bounds,t.bounds))){if(!e.leaves){em(e.left,t),em(e.right,t);return}for(let i of e.leaves){if(!K())return;if(++q>Q){J=!0;return}if(i.primitive.order<=t.primitive.order||!et(i.bounds,t.bounds))continue;if(t.actualInk&&(i.interiors?.some(e=>K()&&ee(e,t.bounds))||i.strokeInteriors?.some(e=>K()&&ee(e,t.bounds)))){w({code:"MARKER_OCCLUDED",id:t.primitive.id,by:i.primitive.id,message:"Endpoint marker is fully covered by later opaque artwork with no owned repaint"},!0);continue}let e=E(t.primitive),r=e?.kind==="connector"&&"attached"===Z(e,i.primitive.owner);eo(i,t.bounds,r,t.hull,t.padding,K,t.witnesses,t.anchor)||t.clipped&&eo(i,t.clipped,r,void 0,0,K,t.witnesses,t.anchor,!0)||M(t.primitive.id,i.primitive.id,"Later filled artwork overlaps an endpoint marker; its exact ink intersection is unverified")}}},eg=Array.from(ec.values());for(let e=0;e<eg.length;e++)em(_,eg[e]);for(let e=0;e<eg.length;e++){let t=eg[e];if(!K())break;if(!t.semantic||"conditional"===t.primitive.visibility||t.strokeProof?.fill==="absent"&&"absent"===t.strokeProof.stroke)continue;let r=i.primitives;for(let e=0;e<r.length;e++){let i=r[e];if(!K())break;if("text"!==i.kind||"measured"!==i.coverage||"conditional"===i.visibility||!i.bounds||!et(i.bounds,t.bounds))continue;if(++q>Q){J=!0;break}let n=t.primitive.order>i.order;M(n?i.id:t.primitive.id,n?t.primitive.id:i.id,n?"Later endpoint-marker ink overlaps occupied text; actual text visibility is unverified.":"Later occupied text or its halo overlaps an endpoint marker; actual marker ink visibility is unverified.")}}for(let e=0;e<eg.length;e++){let t=eg[e];if(J)break;if(!(!t.semantic||"conditional"===t.primitive.visibility))for(let e=0;e<eg.length;e++){let r=eg[e];if(!K())break;let n=t.strokeProof?.repaint,o=r.strokeProof?.repaint,a=void 0!==t.paintIdentity&&t.paintIdentity===r.paintIdentity;if(!r.semantic||"conditional"===r.primitive.visibility||r.primitive.order<=t.primitive.order||a&&(t.anchor.x===r.anchor.x&&t.anchor.y===r.anchor.y&&t.repaint===r.repaint||n&&o&&n.resource===o.resource&&n.geometry===o.geometry&&n.anchor.x===o.anchor.x&&n.anchor.y===o.anchor.y)||!et(t.bounds,r.bounds))continue;if(++q>Q){J=!0;break}let l=0,s="unknown";for(;!J;){let e=r.mayFill?ed(t.strokeProof,r.strokeProof,K,l):es(t.strokeProof,r.strokeProof,K);if("exhausted"===e&&(e="unknown"),"string"==typeof e){s=e;break}let n=!1,o=i.primitives;for(let t=0;t<o.length;t++){let i=o[t];if(!K())break;let a=i.bounds;if(i.order<=r.primitive.order||"non-painting"===i.coverage)continue;if(!a){n=!0;break}if(a.x0>e.x||e.x>a.x1||a.y0>e.y||e.y>a.y1)continue;let l=E(i);if(l?.kind==="connector"&&0===Number(l.stroke.opacity)){let t=!1;for(let r=0;r<eg.length;r++){let n=eg[r];if(!K())break;if(!(n.primitive.order!==i.order||n.bounds.x0>e.x||e.x>n.bounds.x1||n.bounds.y0>e.y||e.y>n.bounds.y1)&&!function(e,t,i){if(!e||void 0===e.innerStroke)return!1;let r=e.hull,n=0;for(let e=0;e<r.length;e++){if(!i())return!1;let t=r[e],o=r[(e+1)%r.length],a=r[(e+2)%r.length],l=(o.x-t.x)*(a.y-o.y)-(o.y-t.y)*(a.x-o.x);if(l){n=Math.sign(l);break}}if(!n)return!1;for(let o=0;o<r.length&&i();o++){let i=r[o],a=r[(o+1)%r.length],l=a.x-i.x,s=a.y-i.y,d=Math.hypot(l,s),u=n*(l*(t.y-i.y)-s*(t.x-i.x))/d,f=1e-8+64*Number.EPSILON*Math.max(1,Math.abs(t.x),Math.abs(t.y),Math.abs(i.x),Math.abs(i.y),Math.abs(a.x),Math.abs(a.y));if(Number.isFinite(u)&&u<-e.innerStroke-f)return!0}return!1}(n.strokeProof,e,K)){t=!0;break}}if(!t&&!J)continue}n=!0;break}if(!n&&!J){s="covered";break}let a=t.strokeProof.strokeWitnesses,d=!1;for(;l<a.length&&K();l++)if(a[l]===e){l++,d=!0;break}if(!d)break}"covered"!==s||J?"unknown"===s&&M(t.primitive.id,r.primitive.id,"Distinct endpoint-marker envelopes overlap; actual marker ink separation is unverified."):w({code:"MARKER_OCCLUDED",id:t.primitive.id,by:r.primitive.id,message:"Later opaque endpoint-marker fill covers actual stroke ink of a distinct marker."},!0)}}for(let e of(J&&w({code:"CHECK_BUDGET",message:`Occlusion checking reached its ${Q}-pair or ${X}-operation limit`}),i.primitives))e.bounds&&"conditional"!==e.visibility&&!ee(A,e.bounds,1e-6)&&O(e.id,"Final viewport does not contain retained paint",!0);for(let e of eg)"conditional"===e.primitive.visibility||ee(A,e.bounds,1e-6)||O(e.primitive.id,"Final viewport does not contain serialized marker paint",!0);return Object.freeze({version:1,unit:"px",scope:"native-scene",status:y?"failed":p?"unverified":"passed",viewport:$,attempts:W?2:1,repairs:Object.freeze(W?["expand-viewport"]:[]),coverage:Object.freeze({measured:i.coverage.measured,unmeasured:i.coverage.unmeasured,preparedText:i.coverage.preparedText,fallbackText:i.coverage.fallbackText,conditional:L}),checks:Object.freeze({primitives:i.primitives.length,labels:U,occlusionPairs:Math.min(q,Q),maxOcclusionPairs:Q,operations:V,maxOperations:X,markers:ec.size}),issues:Object.freeze(d),limitations:Object.freeze(["Prepared occupied text regions bound native geometry; exact glyph ink depends on the resolved font.","Declared transparency, intentional data-mark overlap and externally modified CSS are outside this proof."])})}var ec=class extends Error{constructor(e){super(`Final paint certification failed: ${e.issues.map(e=>`${e.id??"scene"}: ${e.message}`).join("; ")}`),this.certification=e,this.name="PaintLayoutCertificationError"}certification;code="PAINT_LAYOUT_CERTIFICATION_FAILED"};export{I as a,$ as b,V as c,J as d,G as e,X as f,Z as g,Q as h,ea as i,ed as j,ey as k,eh as l,ec as m};