agentic-mermaid 0.5.1 → 0.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/AGENT_NATIVE.md +63 -375
  2. package/CHANGELOG.md +39 -0
  3. package/README.md +87 -50
  4. package/assets/hero.png +0 -0
  5. package/dist/agent-core.d.ts +7 -7
  6. package/dist/agent-core.js +1 -1
  7. package/dist/agent.d.ts +7 -7
  8. package/dist/agent.js +1 -1
  9. package/dist/agentic-mermaid-mcp.js +1 -1
  10. package/dist/am.js +1 -1
  11. package/dist/browser-lazy/chunks/agentic-producer-core-CC6OOLDW.js +1 -0
  12. package/dist/browser-lazy/chunks/architecture-QUFVKYJR.js +13 -0
  13. package/dist/browser-lazy/chunks/block-6J3Q63BO.js +11 -0
  14. package/dist/browser-lazy/chunks/builtin-backends-7SOZZHPF.js +12 -0
  15. package/dist/browser-lazy/chunks/c4-SQVBZAKJ.js +10 -0
  16. package/dist/browser-lazy/chunks/{chunk-MSP3S2VS.js → chunk-2GPK4VFF.js} +1 -1
  17. package/dist/browser-lazy/chunks/chunk-2SH76OTH.js +1 -0
  18. package/dist/browser-lazy/chunks/chunk-2UIA2IME.js +3 -0
  19. package/dist/browser-lazy/chunks/chunk-4LHYF3BS.js +1 -0
  20. package/dist/browser-lazy/chunks/{chunk-HR5TE7TE.js → chunk-5B2Z7575.js} +1 -1
  21. package/dist/browser-lazy/chunks/{chunk-REBVEXI2.js → chunk-5X6MJX3H.js} +1 -1
  22. package/dist/browser-lazy/chunks/chunk-AMJLVPUB.js +4 -0
  23. package/dist/browser-lazy/chunks/chunk-BU5LHXNJ.js +3 -0
  24. package/dist/browser-lazy/chunks/chunk-BY2CPG6B.js +1 -0
  25. package/dist/browser-lazy/chunks/{chunk-HDKHAM2V.js → chunk-CN7WTBWB.js} +1 -1
  26. package/dist/browser-lazy/chunks/chunk-CQE4HQEW.js +1 -0
  27. package/dist/browser-lazy/chunks/{chunk-KXPF5KIU.js → chunk-DF6765YX.js} +3 -3
  28. package/dist/browser-lazy/chunks/chunk-E2WMJZNM.js +1 -0
  29. package/dist/browser-lazy/chunks/chunk-FAIMVOX5.js +6 -0
  30. package/dist/browser-lazy/chunks/chunk-GVOEAY52.js +1 -0
  31. package/dist/browser-lazy/chunks/chunk-HLWUNUCM.js +1 -0
  32. package/dist/browser-lazy/chunks/chunk-ICC7HBJX.js +1 -0
  33. package/dist/browser-lazy/chunks/{chunk-FBL4ONAL.js → chunk-J35HAQQF.js} +15 -15
  34. package/dist/browser-lazy/chunks/chunk-J7FFAFQF.js +1 -0
  35. package/dist/browser-lazy/chunks/chunk-NO7ZIVRU.js +1 -0
  36. package/dist/browser-lazy/chunks/chunk-OZ443IVJ.js +16 -0
  37. package/dist/browser-lazy/chunks/{chunk-2J5K6NIP.js → chunk-PQGPS2YV.js} +1 -1
  38. package/dist/browser-lazy/chunks/{chunk-SBXYR7Z3.js → chunk-QA6GJQ4X.js} +1 -1
  39. package/dist/browser-lazy/chunks/chunk-RIVTHZAQ.js +1 -0
  40. package/dist/browser-lazy/chunks/chunk-SZELX2EJ.js +1 -0
  41. package/dist/browser-lazy/chunks/chunk-TYZOZXUJ.js +22 -0
  42. package/dist/browser-lazy/chunks/{chunk-E7UIB4SZ.js → chunk-UL6NDWLL.js} +1 -1
  43. package/dist/browser-lazy/chunks/chunk-VQYYGAXP.js +1 -0
  44. package/dist/browser-lazy/chunks/chunk-VWVZGQE2.js +1 -0
  45. package/dist/browser-lazy/chunks/{chunk-GMTB5UTY.js → chunk-X2UYKWKM.js} +3 -3
  46. package/dist/browser-lazy/chunks/{chunk-LLPBKBIG.js → chunk-YCEICNM6.js} +1 -1
  47. package/dist/browser-lazy/chunks/chunk-Z3FDIVLN.js +20 -0
  48. package/dist/browser-lazy/chunks/class-5QA4SCTS.js +13 -0
  49. package/dist/browser-lazy/chunks/er-7ZSKGN7Y.js +11 -0
  50. package/dist/browser-lazy/chunks/eventmodeling-2BPLHWRN.js +19 -0
  51. package/dist/browser-lazy/chunks/flowchart-NEIMZTB5.js +4 -0
  52. package/dist/browser-lazy/chunks/gantt-RDPIFYAF.js +11 -0
  53. package/dist/browser-lazy/chunks/{gitgraph-W26QIMTY.js → gitgraph-N4Y5RYB7.js} +4 -4
  54. package/dist/browser-lazy/chunks/ishikawa-LD3YBDJN.js +6 -0
  55. package/dist/browser-lazy/chunks/journey-6YQR5DJX.js +16 -0
  56. package/dist/browser-lazy/chunks/kanban-PLMJ7NBW.js +20 -0
  57. package/dist/browser-lazy/chunks/{mindmap-5A3MVHNH.js → mindmap-K2UBFO3Y.js} +6 -6
  58. package/dist/browser-lazy/chunks/{packet-AL6VDOMY.js → packet-CUW4QY6Y.js} +5 -5
  59. package/dist/browser-lazy/chunks/pie-7F7UUCG3.js +15 -0
  60. package/dist/browser-lazy/chunks/{quadrant-RJ56XFBR.js → quadrant-TOONO2WC.js} +5 -5
  61. package/dist/browser-lazy/chunks/radar-J6JVWVAX.js +16 -0
  62. package/dist/browser-lazy/chunks/render-core-BZOM3K7D.js +3 -0
  63. package/dist/browser-lazy/chunks/requirement-CMAKDJPO.js +19 -0
  64. package/dist/browser-lazy/chunks/{sankey-WKTBEZSS.js → sankey-AWXQEP3F.js} +8 -8
  65. package/dist/browser-lazy/chunks/sequence-Q2RJRB4L.js +5 -0
  66. package/dist/browser-lazy/chunks/state-WRBFQEDX.js +4 -0
  67. package/dist/browser-lazy/chunks/{timeline-PRV5PWGP.js → timeline-D2KILFXM.js} +4 -4
  68. package/dist/browser-lazy/chunks/{treemap-BVME3JLI.js → treemap-N3VYX5D4.js} +4 -4
  69. package/dist/browser-lazy/chunks/{xychart-XBI2RNHD.js → xychart-G73OGK66.js} +5 -5
  70. package/dist/browser-lazy/chunks/{zenuml-GQKPRQFJ.js → zenuml-H4BXNYXR.js} +8 -8
  71. package/dist/browser-lazy/index.d.ts +10 -0
  72. package/dist/browser-lazy/index.js +1 -1
  73. package/dist/browser.global.js +539 -539
  74. package/dist/chunk-7CRDX2QR.js +2 -0
  75. package/dist/{chunk-AVS4T4NO.js → chunk-DQDKA5ND.js} +2 -2
  76. package/dist/chunk-EHCMJUMD.js +52 -0
  77. package/dist/{chunk-AWZBTOV6.js → chunk-GVCHLSHH.js} +2 -2
  78. package/dist/{chunk-6JBQYHWB.js → chunk-H3NCS2XZ.js} +2 -2
  79. package/dist/{chunk-ORYXYGDV.js → chunk-JZOJ4YGS.js} +2 -2
  80. package/dist/{chunk-AIWXP4OF.js → chunk-NKNFOREZ.js} +2 -2
  81. package/dist/{chunk-PNL435CH.js → chunk-OMY6NRQD.js} +17 -17
  82. package/dist/{chunk-YISEN5SO.js → chunk-UA234O4M.js} +2 -2
  83. package/dist/{cli-BOEN5YAF.js → cli-YGGTJZH7.js} +2 -2
  84. package/dist/{index-Cr3xjRw9.d.ts → index-EeXqJXr5.d.ts} +3 -3
  85. package/dist/index.d.ts +4 -4
  86. package/dist/index.js +1 -1
  87. package/dist/{mcp-cli-NM3P4VPC.js → mcp-cli-63DYXTVD.js} +2 -2
  88. package/dist/{paint-certification-C33LRvWT.d.ts → paint-certification-6rwQjIv_.d.ts} +22 -2
  89. package/dist/{server-FY5Z7F32.js → server-5NEOHOFS.js} +2 -2
  90. package/dist/{svg-styles-C_v2tnxG.d.ts → svg-styles-BdnoM7AT.d.ts} +1 -1
  91. package/dist/svg-styles.d.ts +1 -1
  92. package/dist/svg-styles.js +1 -1
  93. package/dist/svg.d.ts +4 -4
  94. package/dist/svg.js +1 -1
  95. package/dist/{types-DxOTIgwg.d.ts → types-BcS52Mjt.d.ts} +11 -1
  96. package/dist/zenuml/chunks/{appearance-FTQ2722O.js → appearance-UOQ5KA6O.js} +1 -1
  97. package/dist/zenuml/chunks/{builtin-backends-QLY75JCL.js → builtin-backends-KDKE7YHO.js} +3 -3
  98. package/dist/zenuml/chunks/chunk-42DXZ5C6.js +4 -0
  99. package/dist/zenuml/chunks/{chunk-GDLMM3YO.js → chunk-7TVYPTDW.js} +1 -1
  100. package/dist/zenuml/chunks/{chunk-6OONHTSD.js → chunk-OXQWRSBM.js} +10 -10
  101. package/dist/zenuml/chunks/{chunk-LYIRUTCM.js → chunk-QWX77U7G.js} +1 -1
  102. package/dist/zenuml/chunks/{chunk-4VRUBLG4.js → chunk-RLJEI7YN.js} +10 -10
  103. package/dist/zenuml/chunks/{chunk-YFCDP4ZS.js → chunk-RZ6XK5CD.js} +1 -1
  104. package/dist/zenuml/chunks/{render-core-DNCYYOIB.js → render-core-V5RQ737O.js} +3 -3
  105. package/dist/zenuml/chunks/{zenuml-URQ4HIMD.js → zenuml-EA2ZFRUX.js} +9 -9
  106. package/dist/zenuml.d.ts +2 -2
  107. package/dist/zenuml.js +1 -1
  108. package/docs/MCP-DIRECTORY-LISTINGS.md +1 -1
  109. package/docs/README.md +59 -110
  110. package/docs/api.md +3 -1
  111. package/docs/config.md +37 -0
  112. package/docs/getting-started.md +27 -44
  113. package/examples/styles/readme-hero.md +25 -0
  114. package/examples/styles/readme-hero.mmd +13 -0
  115. package/examples/styles/readme-hero.style.json +7 -0
  116. package/package.json +1 -1
  117. package/server.json +2 -2
  118. package/dist/browser-lazy/chunks/agentic-producer-core-MGU4FD6J.js +0 -1
  119. package/dist/browser-lazy/chunks/architecture-KZTC3672.js +0 -13
  120. package/dist/browser-lazy/chunks/block-J5PD6HQM.js +0 -11
  121. package/dist/browser-lazy/chunks/builtin-backends-GSGJPT5A.js +0 -12
  122. package/dist/browser-lazy/chunks/c4-VNQSIA5M.js +0 -10
  123. package/dist/browser-lazy/chunks/chunk-4C2BVM5Y.js +0 -1
  124. package/dist/browser-lazy/chunks/chunk-5GE2SFLQ.js +0 -4
  125. package/dist/browser-lazy/chunks/chunk-6YGQR6R4.js +0 -16
  126. package/dist/browser-lazy/chunks/chunk-7AHX3HH7.js +0 -1
  127. package/dist/browser-lazy/chunks/chunk-B5PDJUJG.js +0 -3
  128. package/dist/browser-lazy/chunks/chunk-CXQWSLJV.js +0 -1
  129. package/dist/browser-lazy/chunks/chunk-DWDYWUAS.js +0 -1
  130. package/dist/browser-lazy/chunks/chunk-EUBVLDYV.js +0 -29
  131. package/dist/browser-lazy/chunks/chunk-NQF75XGM.js +0 -3
  132. package/dist/browser-lazy/chunks/chunk-P7DO3MRP.js +0 -13
  133. package/dist/browser-lazy/chunks/chunk-QQ2U2KAY.js +0 -1
  134. package/dist/browser-lazy/chunks/chunk-SJYDRC6G.js +0 -1
  135. package/dist/browser-lazy/chunks/chunk-UUTB6MDK.js +0 -1
  136. package/dist/browser-lazy/chunks/chunk-WEREIH5P.js +0 -1
  137. package/dist/browser-lazy/chunks/chunk-WHNTP27R.js +0 -6
  138. package/dist/browser-lazy/chunks/chunk-YXGB25MZ.js +0 -1
  139. package/dist/browser-lazy/chunks/class-FNDNJGYH.js +0 -13
  140. package/dist/browser-lazy/chunks/er-P263BDFG.js +0 -11
  141. package/dist/browser-lazy/chunks/eventmodeling-XX3VCGSC.js +0 -19
  142. package/dist/browser-lazy/chunks/flowchart-GTLWJA3P.js +0 -4
  143. package/dist/browser-lazy/chunks/gantt-SRIHFAIC.js +0 -11
  144. package/dist/browser-lazy/chunks/ishikawa-NTHJ7BUO.js +0 -6
  145. package/dist/browser-lazy/chunks/journey-3T62IEHN.js +0 -16
  146. package/dist/browser-lazy/chunks/kanban-U6DQ7LWQ.js +0 -20
  147. package/dist/browser-lazy/chunks/pie-4QYMTQ7W.js +0 -15
  148. package/dist/browser-lazy/chunks/radar-L5B4CNEL.js +0 -16
  149. package/dist/browser-lazy/chunks/render-core-CIGKBI2T.js +0 -3
  150. package/dist/browser-lazy/chunks/requirement-5QVLRI6Z.js +0 -19
  151. package/dist/browser-lazy/chunks/sequence-G6DQHPR7.js +0 -5
  152. package/dist/browser-lazy/chunks/state-6DEA5BXE.js +0 -4
  153. package/dist/chunk-XCEEF3NJ.js +0 -2
  154. package/dist/chunk-YQKNJNU4.js +0 -52
  155. package/dist/zenuml/chunks/chunk-7QDAZ2HL.js +0 -4
@@ -0,0 +1,11 @@
1
+ import{C as e,N as t,l as i,m as r,n as a,xa as s}from"./chunk-4LHYF3BS.js";import"./chunk-CQE4HQEW.js";import"./chunk-LH7HUDKW.js";import"./chunk-5FQ534HP.js";import{a as l}from"./chunk-BY2CPG6B.js";import"./chunk-SZELX2EJ.js";import{a as o,d as n}from"./chunk-QA6GJQ4X.js";import{c as c,e as d}from"./chunk-2SH76OTH.js";import{d as h}from"./chunk-AMJLVPUB.js";import{u as p}from"./chunk-DF6765YX.js";import"./chunk-J35HAQQF.js";import{a as u,b as y,c as b}from"./chunk-CN7WTBWB.js";import{C as f,D as m,a as g,b as k,c as x,d as w,e as _,g as S,i as v}from"./chunk-HLWUNUCM.js";import{M as C,O as A,aa as I,c as M,ca as E,g as T,qa as L}from"./chunk-X2UYKWKM.js";import{j as D,k as W,r as $,u as N}from"./chunk-TYZOZXUJ.js";import{h as O,l as z,n as P,o as F}from"./chunk-NO7ZIVRU.js";import{E as j,G as B,H as R,M as U,N as Y,Z as K,da as H}from"./chunk-Z3FDIVLN.js";import{Q as X}from"./chunk-N5ELX7LR.js";import"./chunk-5UVGUSD6.js";import"./chunk-CSFUKSU6.js";var Z=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.3"},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:X,detectLoose:X}),Q=class extends Error{constructor(e,t,i){super(e)}};function G(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 J(e){switch(e.trim().slice(-1)){case"x":return"arrow_cross";case"o":return"arrow_circle";case">":return"arrow_point";default:return""}}function V(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 ee(e){return e.includes("==")?"thick":"normal"}function et(e){return e.includes(".-")?"dotted":"solid"}function ei(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 er=class{type="block";title;root={id:"root",type:"composite",children:[],columns:-1};blocks=[];edges=[];classes=new Map;byId=new Map;typeStr2Type=q;edgeStrToEdgeData=J;edgeStrToEdgeStartData=V;edgeStrToThickness=ee;edgeStrToPattern=et;warn;pending=new Set;workIds=new Set;admitNode(e){this.workIds.has(e)||(C("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),_("block")&&v("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),_("block")&&v("block","define-class",{id:e,attribute:a})}}addStyle2Node(e,t=""){this.named(e).styles=t.replace(/;\s*$/,"").split(","),_("block")&&v("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),_("block")&&v("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=[ei(e,this.root)];for(;t.length>0;){let e=t[t.length-1];if(e.at===e.list.length){e.parent.children=e.children,_("block")&&v("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,_("block")&&v("block","set-columns",{id:e.parent.id,columns:e.parent.columns});continue;case"edge":{C("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),_("block")&&v("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)),_("block")&&v("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;C("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),_("block")&&v("block","attach-space",{parentId:e.parent.id,block:t})}}else a&&(e.children.push(i),_("block")&&v("block","attach-child",{parentId:e.parent.id,block:i}));s&&s.length>0&&t.push(ei(s,i))}this.blocks=this.root.children??[],_("block")&&v("block","complete-hierarchy",{root:this.root,edges:this.edges,classes:this.classes})}},ea=["$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 es(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 el(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||95===e}var eo=["right","left","x","y","up","down"],en=new Uint8Array(128);for(let e of[9,10,11,12,13,32,40,41,45,58,60,61,62,91,123,125])en[e]=1;function ec(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&&es(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&&el(e.charCodeAt(t));)t++;return t},f=t=>e.startsWith(t,n)&&!el(e.charCodeAt(n+t.length)),m=()=>(96===e.charCodeAt(n+1)?(h(2),n+=2):(h(1),n++),!0),g=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 g(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?g(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(es(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(!el(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)&&!el(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 m();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(!el(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===en[t]:es(t))break;a++}return a>n&&d(32,a)},v=t=>{let i=e.charCodeAt(n+1),r=0;switch(t){case 34:return m();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 eo)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)m();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)?m():(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 ed(e){return e.replace(/#(?:quot|0*(?:34|37|96));/g,e=>"#quot;"===e?'"':String.fromCodePoint(Number(e.slice(1,-1))))}var eh="'NODE_ID', 'COLUMNS', 'SPACE_BLOCK', 'BLOCK_DIAGRAM_KEY', 'id-block', 'classDef', 'class', 'style'";function ep(e){let t=e[e.length-1];return Array.isArray(t)?(e.pop(),e.concat(t)):e}var eu={};for(let e of["start","end"])eu[`arrow_point:${e}`]=$(`block-arrow-${e}`,{width:8,height:7},e,{fill:"var(--_arrow)",stroke:"none"},"userSpaceOnUse"),eu[`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"},eu[`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 ey=l(Object.values(eu));function eb(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 ef=(e,t)=>e&t?1:0;function em(e){return 0!==e&&(12&e)==0?"x":0!==e&&(3&e)==0?"y":""}function eg(e,t,i){let r=em(e),a=ef(e,2)-ef(e,1),s=ef(e,4)-ef(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*(ef(e,2)+ef(e,1)),h:Math.max(i+8,24)+12*(ef(e,4)+ef(e,8)),dx:12*a/2,dy:12*s/2}}function ek(e,t,i){let r=em(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 ex(e){return j(B(R(e)),/&(?:#[xX][0-9a-fA-F]+|#\d+|[a-zA-Z][a-zA-Z0-9]+);|#\w+;/g,e=>{let t=e.startsWith("&")?o(e):n(e);if(T.test(t))throw SyntaxError("Block label entity must display printable text");return t})}var ew={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 e_(e){return{id:e.id,label:e.block.label??e.id,shape:ew[e.block.type??"na"]??"rectangle",x:e.x,y:e.y,width:e.width,height:e.height}}var eS=M(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(eu).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}:{}}}])):eu,c=Object.values(n),d=L(a),h=W(r.width,r.height,a,s);r.model.accessibilityTitle&&(h+=`<title>${U(r.model.accessibilityTitle)}</title>`),r.model.accessibilityDescription&&(h+=`<desc>${U(r.model.accessibilityDescription)}</desc>`),h+=D(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>${N(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(e_(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=eb(t.block.directions),b="block_arrow"===t.block.type,f=b?eg(y,t.label.width,t.label.height):{dx:0,dy:0},m=b?{kind:"polygon",points:ek(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,g=[`block-${s?"composite":"node"}`,...(t.block.classes??[]).filter(e=>/^[\w-]+$/.test(e))];return e.group({id:`block:${t.id}`,role:l,open:`<g class="${Y(g.join(" "))}" data-id="${Y(t.id)}"${t.parentId?` data-parent="${Y(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:m,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?H(t.points,r.style.edgeBendRadius,{terminalClearance:{start:ey(i?.id,r.style.lineWidth,"start"),end:ey(a?.id,r.style.lineWidth,"end")}}):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(F(r.title,r.style))),o.push(e.documentClose()),{family:"block",width:r.width,height:r.height,colors:a,transparent:s,parts:o}}),ev=w(Z,{configDiagnostics:e=>h("block",e,{padding:c,useMaxWidth:d}),layout:i=>{let l=function(e){let t=Array.isArray(e)?e.join(`
9
+ `):e,i=new er,r=ec(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}=ec(e),s=0,l=t=>{let r=i[s];throw 1===r?G("block",e,a[s],"",!0):G("block",e,a[s],`Expecting ${t}, got '${ea[r]}'`)},o=e=>(i[s]!==e&&l(`'${ea[e]}'`),r[s++]),n=()=>{let e=o(32);if(27===i[s]){let t=r[s++];return{id:e,label:ed(o(6)),typeStr:t+o(28)}}if(29===i[s]){let t=r[s++],a=ed(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=ed(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),_("block")&&S("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&&_("block")&&S("block",ea[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++,C("nesting",d.length+1),d.push({list:h,header:void 0}),h=[];break;case 3:s++,C("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(eh);s++;let i=t.generateId(),r=ep(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(eh+", 'end'"),0===h.length&&l(eh),t.setHierarchy(ep(h));return;default:l(0===h.length?eh:eh+(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())E(I(e.styles.join(",")),`classDef ${e.id}`);let a=[i.root];for(let e=0;e<a.length;e++){let t=a[e];E(I((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??=p(i.source.frontmatter),l.accessibilityTitle=i.source.accessibility.title,l.accessibilityDescription=i.source.accessibility.descr,x(function(i,l={},o,n={}){A(i);let c=O(l,void 0,o),d=l.padding??32,h=i.edges.map(e=>K(ex(e.label??""),{fontSize:c.edgeLabelFontSize,fontWeight:c.edgeLabelFontWeight,maxWidth:320,transform:c.edgeTextTransform,letterSpacing:c.edgeLetterSpacing})),p=0;for(let e of i.edges)p=Math.max(p,ey(eu[`${e.arrowTypeStart}:start`]?.id,c.lineWidth,"start"),ey(eu[`${e.arrowTypeEnd}:end`]?.id,c.lineWidth,"end"));let u=Math.max(p?2*(p+c.edgeBendRadius):0,"number"==typeof n.padding&&n.padding>=0?Math.min(n.padding,200):20,...h.filter(e=>e.text).map(e=>e.width+40)),y=new Map(i.classDefs.map(e=>[e.id,e])),b=[],f=(e,t)=>{let r="composite"===e.type,a=E(I([...y.get("default")?.styles??[],...(e.classes??[]).flatMap(e=>y.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=K(ex(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),u=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,u+=24),["circle","doublecircle"].includes(e.type??"")&&(p=u=Math.max(p,u)),"cylinder"===e.type&&(u+=24),"block_arrow"===e.type){let t=eg(eb(e.directions),h.width,h.height);p=t.w,u=t.h}"space"===e.type&&(p=40,u=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:u,col:0,row:0,cols:0,heights:[],x:0,y:0,w:0,h:0}},m=f(i.root),g=[m];for(let e=0;e<g.length;e++){let t=g[e];for(let e of t.block.children??[]){let i=f(e,t===m?void 0:t.block.id);t.children.push(i),g.push(i),b.push(i)}}let k=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 Q("Columns must be an integer !== 0.","semantic",{type:"block"});if(t<0||!Number.isInteger(t))throw new Q("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}}(m,u),x=z(i.title,c),w=Math.max(k.width+2*d,(x?.width??0)+2*d),_=x?.height??0,S=d+(w-2*d-k.width)/2,v=d+_,C=b.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+S,y:e.y-i/2+v,width:t,height:i,label:e.label,style:e.style}}),M=new Map(C.map(e=>[e.id,e])),T=C.filter(e=>"space"!==e.block.type).map(e_),L=new Map(T.map(e=>[e.id,r(e)])),D=new Map(C.filter(e=>"block_arrow"===e.block.type).map(e=>[e.id,{kind:"polygon",points:ek(eb(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}))}])),W=T.filter(e=>"composite"!==M.get(e.id).block.type),$=new Map;i.edges.forEach((e,t)=>{let i=e.start<e.end?`${e.start}\0${e.end}`:`${e.end}\0${e.start}`,r=$.get(i)??[];r.push(t),$.set(i,r)});let N=new Map;for(let e of $.values()){let t=Math.max(...e.map(e=>h[e].width)),i=Math.max(...e.map(e=>h[e].height));e.forEach((r,a)=>N.set(r,{slot:a,count:e.length,width:t,height:i}))}let F=new Set,j=new Set,B=(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}=N.get(i),y=c-(d-1)/2,b=L.get(l.id)??r(e_(l)),f=L.get(o.id)??r(e_(o)),m,g={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-g.x)>=Math.abs(k.y-g.y),w=[k.x>=g.x?b.E:b.W,k.x>=g.x?f.W:f.E],_=[k.y>=g.y?b.S:b.N,k.y>=g.y?f.N:f.S],S=e=>F.has(B(l.id,e[0]))||j.has(B(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);m=[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;m=[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;m=[i,{x:t,y:i.y},{x:t,y:r.y},r]}}else if(x){let e=k.x>=g.x?b.E:b.W,t=k.x>=g.x?f.W:f.E,i=(e.x+t.x)/2+12*c;m=[e,{x:i,y:e.y},{x:i,y:t.y},t]}else{let e=k.y>=g.y?b.S:b.N,t=k.y>=g.y?f.N:f.S,i=(e.y+t.y)/2+12*c;m=[e,{x:e.x,y:i},{x:t.x,y:i},t]}j.add(B(l.id,m[0])),F.add(B(o.id,m.at(-1)));let v={id:t.id,source:l.id,target:o.id,style:"solid",hasArrowStart:"none"!==t.arrowTypeStart,hasArrowEnd:"none"!==t.arrowTypeEnd,points:e(m.map(e=>({...e})))};for(let[e,t,i]of(s("composite"===l.block.type||"composite"===o.block.type?T.filter(e=>"composite"!==M.get(e.id).block.type||e.id===l.id||e.id===o.id):W,[v],{direction:x?"LR":"TB"}),[[l,0,1],[o,(m=v.points).length-1,m.length-2]])){let r=D.get(e.id);if(!r)continue;let s=m[t],l=m[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&&(m[t]=d)}let C=0;for(let e=1;e<m.length-1;e++)Math.hypot(m[e+1].x-m[e].x,m[e+1].y-m[e].y)>Math.hypot(m[C+1].x-m[C].x,m[C+1].y-m[C].y)&&(C=e);let A=m[C],I=m[C+1],E={x:(A.x+I.x)/2,y:(A.y+I.y)/2};return{...t,points:m,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:W,edges:e,axis:{main:"x",cross:"y",sign:1},style:c,finalLabelClearance:!0});if(l){r.labelPosition=a.labelPosition=l;break}}}}let U=Math.min(d,...R.flatMap(e=>e.points.map(e=>e.x))),Y=Math.min(d+_,...R.flatMap(e=>e.points.map(e=>e.y))),H=Math.max(0,d-U),X=Math.max(0,d+_-Y);if(H||X){for(let e of C)e.x+=H,e.y+=X;for(let e of R){for(let t of e.points)t.x+=H,t.y+=X;e.labelPosition.x+=H,e.labelPosition.y+=X}}let Z=k.height+2*d+_+X,G=w+H;for(let e of R)for(let t of e.points)Z=Math.max(Z,t.y+d),G=Math.max(G,t.x+d);return{model:i,width:G,height:Z,nodes:C,edges:R,style:c,...x?{title:P(x,G,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?eg(eb(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:f(e.label,i.x,i.y),container:y(e)}});return e.title&&i.push({id:"title",text:e.title.text,bounds:f(e.title.block,e.title.x,e.title.y),container:y(u(e))}),{version:1,bounds:{w:b(e.width),h:b(e.height)},nodes:e.nodes.filter(e=>!["composite","space"].includes(e.block.type??"")).map(e=>{let i=t(e);return{id:e.id,x:b(e.x),y:b(e.y),w:b(e.width),h:b(e.height),shape:e_(e).shape,label:e.label.text,role:"box",...m(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=>[b(e.x),b(e.y)]),...e.label?{label:{x:b(e.labelPosition.x),y:b(e.labelPosition.y),text:e.labelBlock.text,bounds:f(e.labelBlock,e.labelPosition.x,e.labelPosition.y)}}:{}})),groups:e.nodes.filter(e=>"composite"===e.block.type).map(t=>({id:t.id,x:b(t.x),y:b(t.y),w:b(t.width),h:b(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:k(eS)});export{ev as default};
@@ -0,0 +1,12 @@
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-J35HAQQF.js";import{m as o}from"./chunk-TYZOZXUJ.js";import{Ka as l,N as h,Q as u,Ub as p,Vb as c,W as f,ea as d,fb as g,n as k,qa as y,sa as M,ta as m,ub as x}from"./chunk-Z3FDIVLN.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()}},W={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 z(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 z("M0,0"+t);else n++,i=W[a.text],r=a.text;else 1===a.type?i=W[r]:(n++,i=W[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 W[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 D(t,e,s)},ellipse:function(t,e,s,r,n){let a=Z(s,r,n);return Q(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 F(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 R(t,e){if(t.length){let s="number"==typeof t[0][0]?[t]:t,r=Y(s[0],+(1+.2*e.roughness),e),n=e.disableMultiStroke?[]:Y(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=Y(a,+(1+.2*e.roughness),e),s=e.disableMultiStroke?[]:Y(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 Z(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 Q(t,e,s,r){let[n,a]=te(r.increment,t,e,r.rx,r.ry,1,r.increment*D(.1,D(.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 q(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 B(t,e){let s=C(A(z(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 V(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 N(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 U(t){return t.randomizer||(t.randomizer=new _(t.seed||0)),t.randomizer.next()}function D(t,e,s,r=1){return s.roughness*r*(U(s)*(e-t)+t)}function J(t,e,s=1){return D(-t,t,e,s)}function K(t,e,s,r,n,a=!1){let i=a?n.disableMultiStrokeFill:n.disableMultiStroke,o=X(t,e,s,r,n,!0,!1);if(i)return o;let l=X(t,e,s,r,n,!0,!0);return o.concat(l)}function X(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*U(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 Y(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(...X(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=F([[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(V([n],a)):i.push(N([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=Z(s,r,a),l=Q(t,e,a,o);if(a.fill)if("solid"===a.fillStyle){let s=Q(t,e,a,o).opset;s.type="fillPath",i.push(s)}else i.push(N([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",[F(t,!1,s)],s)}arc(t,e,s,r,n,a,i=!1,o){let l=this._o(o),h=[],u=q(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=q(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]),N([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=R(t,s);if(s.fill&&s.fill!==tl)if("solid"===s.fillStyle){let e=R(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(N([e],s))}return s.stroke!==tl&&r.push(n),this._d("curve",r,s)}polygon(t,e){let s=this._o(e),r=[],n=F(t,!0,s);return s.fill&&("solid"===s.fillStyle?r.push(V([t],s)):r.push(N([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(z(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=B(t,s);if(n)if("solid"===s.fillStyle)if(1===l.length){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 r.push(V(l,s));else r.push(N(l,s));return a&&(i?l.forEach(t=>{r.push(F(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="${h(String(t.miterLimit))}"`]:[],...void 0!==t.dashArray?[`stroke-dasharray="${h(t.dashArray)}"`]:[],...void 0!==t.dashOffset?[`stroke-dashoffset="${h(String(t.dashOffset))}"`]:[],...void 0!==t.opacity?[`stroke-opacity="${h(String(t.opacity))}"`]:[],...void 0!==t.pathLength?[`pathLength="${h(String(t.pathLength))}"`]:[],...void 0!==t.paintOrder?[`paint-order="${h(t.paintOrder)}"`]:[],...void 0!==t.mixBlendMode?[`style="mix-blend-mode:${t.mixBlendMode}"`]:[],...t.nonScaling?['vector-effect="non-scaling-stroke"']:[]].join(" ")}(a),p=l?` ${l}`:" ",c=i?.stroke===void 0?"":` stroke-opacity="${h(String(i.stroke))}"`,f=i?.fill===void 0?"":` stroke-opacity="${h(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="${u(s)}"${p}${c} />`):"fillPath"===a.type?o.push(`<path d="${t}" fill="${r}" fill-opacity="${h(String(i?.fill??.92))}" stroke="none" />`):"fillSketch"===a.type&&o.push(`<path d="${t}" fill="none" stroke="${r}" stroke-width="${u(n.fillWeight)}"${f} />`))}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="${l(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${h(e)}$2`):t.replace(/<text /,`<text fill="${h(e)}" `)}function tx(t,e){switch(t.kind){case"document":return x(t);case"shape":return"shape"===k(t.role).sketch?function(t,e){let s=e.p,r=x(t),n=function(t){let e=[],s=0,r,n=/<\/([a-zA-Z][a-zA-Z0-9-]*)>/g,a=[];for(let e of g(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 h,u;let i=n[r],p=tk(i.attrs.get("stroke"),t.paint.stroke),f=tk(i.attrs.get("fill"),t.paint.fill),d=c(e.ctx.seed,t.id,`outline:${r}`)||1,g=tg(tk(i.attrs.get("stroke-width"),t.paint.strokeWidth)),k=tk(i.attrs.get("stroke-dasharray"),t.paint.strokeDasharray),y=void 0!==p&&"none"!==p&&g>0,M=void 0!==f&&"none"!==f,m=M&&"none"!==s.fill?f:void 0,x=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)&&(x.fill??="1"),!y){if(t.surfaceFragment&&M&&"none"===s.fill&&tM(f))continue;if(m){let s=tf(e,a[r],d,"none",0,m,k,void 0,x);if(s){l.push(ty(s,t.transform));continue}}l.push(o(r));continue}let v=Math.max(.6,Math.min(s.strokeWidth*g,4*s.strokeWidth)),b=tf(e,a[r],d,p,v,m,k,void 0,x);if(!b){l.push(o(r));continue}M&&"none"===s.fill&&!tM(f)&&l.push((h=o(r),u=i.tag,/style="/.test(h)?h.replace(/style="([^"]*)"/,(t,e)=>{let s=0===e.trim().length||/;\s*$/.test(e)?"":";";return`style="${e}${s}stroke:none"`}):td(h,u,'style="stroke:none"'))),l.push(ty(b,t.transform))}let p=l.filter(Boolean).join(`
4
+ `);return t.identity&&!/\sdata-id=/.test(p)?f(p,t.identity):p}(t,e):x(t);case"connector":return"connector"===k(t.role).sketch?function(t,e){let s=x(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=c(e.ctx.seed,t.id,"stroke")||1,o=t.stroke.dash?"string"==typeof t.stroke.dash.array?t.stroke.dash.array:t.stroke.dash.array.join(" "):void 0,l={...void 0!==o?{dashArray:o}:{},...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},h="",u=t.route.geometry;if("polyline"===u.kind)h=tf(e,{kind:"polyline",points:u.points},i,r,a,void 0,o,l);else if("line"===u.kind)h=tf(e,u,i,r,a,void 0,o,l);else{let s=d(u,t.route.closed);if(1===s.length&&(h=tf(e,{kind:"path",d:u.d},i,r,a,void 0,o,l)),!h&&u.points.length>1){let t=s.map((t,s)=>{let n=t.points[0],h=t.points.at(-1);return tf(e,{kind:"polyline",points:[...t.closed&&n&&h&&(n.x!==h.x||n.y!==h.y)?[...t.points,n]:t.points]},i+s,r,a,void 0,o,l)});h=t.every(Boolean)?t.join(`
5
+ `):""}}if(!h)return s;let p=s.replace(/\sstroke-opacity=(?:"[^"]*"|'[^']*')/,' stroke-opacity="0"');return`${p===s?td(s,t.route.geometry.kind,'stroke-opacity="0"'):p}
6
+ ${ty(h,t.transform)}`}(t,e):x(t);case"text":return k(t.role).textHalo?(void 0!==t.pageFill?tm(x(t),t.pageFill):function(t,e,s){let r=s.colors,n=void 0===r?void 0:o("var(--bg)",r);if(void 0===r||void 0===n)return t;let a=e.fontSize>=24?m:M,i=t=>{let e=o(t,r);return void 0!==e&&(y(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)}(x(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"')):x(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 tW(t,e){return[t[0]-e[0],t[1]-e[1]]}function tz(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 tF(t,e){let s=t[0]-e[0],r=t[1]-e[1];return s*s+r*r}function tR(t){var e;return e=Math.hypot(t[0],t[1]),[t[0]/e,t[1]/e]}function tZ(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 tQ(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 tq(t,e,s){return tI(t,tA(tW(e,t),s))}var tB=[0,0],tV=[0,0],tN=[0,0];function tH(t,e,s){return!1===t||void 0===t?0:!0===t?Math.max(e,s):t}var tU=[0,0];function tD(t){return null!=t&&t>=0}var tJ=t=>Math.round(1e3*t)/1e3,tK=(t,e,s)=>t+(e-t)*s,tX=t=>Math.max(0,Math.min(1,t));function tY(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,W=null!==d&&d<0;if(_||W){tG(tB,w),tC(tB,tB,$);for(let t=0;t<=1;t+=.07692307692307693)tz(tV,r,tB),tQ(tV,tV,r,tP*t),L=[tV[0],tV[1]],x.push(L),t_(tN,r,tB),tQ(tN,tN,r,-(tP*t)),j=[tN[0],tN[1]],v.push(j);S=L,O=j,W&&(I=!0);continue}if(I=!1,p){tG(tB,a),tC(tB,tB,$),x.push(tW(r,tB)),v.push(tI(r,tB));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})(tB,c,a,d),tG(tB,tB),tC(tB,tB,$),tz(tV,r,tB),L=[tV[0],tV[1]],(e<=1||tF(S,L)>m)&&(x.push(L),S=L),t_(tN,r,tB),j=[tN[0],tN[1]],(e<=1||tF(O,j)>m)&&(v.push(j),O=j),b=s,w=a}let _=[t[0].point[0],t[0].point[1]],W=t.length>1?[t[t.length-1].point[0],t[t.length-1].point[1]]:tI(t[0].point,[1,1]),z=[],A=[];if(1===t.length){if(!(y||M)||p)return function(t,e){var s;let r=(s=tR(tT(tW(t,tI(t,[1,1])))),tI(t,tA(s,-e))),n=[],a=1/13;for(let e=a;e<=1;e+=a)n.push(tZ(r,t,2*tP*e));return n}(_,P||$)}else{let e,n,a;y||M&&1===t.length||(c?z.push(...function(t,e,s){let r=[],n=1/13;for(let s=n;s<=1;s+=n)r.push(tZ(e,t,tP*s));return r}(_,v[0],0)):z.push(...(n=tA(e=tW(x[0],v[0]),.5),a=tA(e,.51),[tW(_,n),tW(_,a),tI(_,a),tI(_,n)])));let i=tT([-(s=t[t.length-1].vector)[0],-s[1]]);M||y&&1===t.length?A.push(W):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(tZ(a,t,3*tP*e));return n}(W,i,$,0)):A.push(tI(W,tA(i,r=$)),tI(W,tA(i,.99*r)),tW(W,tA(i,.99*r)),tW(W,tA(i,r)))}return x.concat(A,v.reverse(),z)}(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(tq(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:tD(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]]:tq(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}tz(tU,u.point,e),u={point:e,pressure:tD(i[t][2])?i[t][2]:tw,vector:tR(tU),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=tX(.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,u;let c=e.style?.stroke??"jittered",f=(e.style?.fill??"none")==="wash"&&void 0!==e.fill,d="freehand"===c,g=e.opacity?.fill===void 0?void 0:Number(e.opacity.fill),k=e.opacity?.stroke===void 0?void 0:Number(e.opacity.stroke);if(!f&&!d)return null;let y=[];if(f){let a,i=p((0x9e3779b9^e.seed)>>>0),o="path"===t.kind?null:tY(t);o?y.push((s=e.fill,r=g??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&&y.push(`<path d="${t.d}" fill="${e.fill}" fill-opacity="${g??e.style?.washOpacity??.3}" stroke="${e.fill}" stroke-width="1.4" stroke-opacity="${e.style?.washEdge??.34}" />`)}if(d&&!e.dash){let s=p(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=tY(t);e&&(n=t0(e,s,{width:r,closed:!0}))}if(n){let t=e.strokeProjection?[...void 0!==e.strokeProjection.opacity?[`opacity="${h(String(e.strokeProjection.opacity))}"`]:[],...void 0!==e.strokeProjection.paintOrder?[`paint-order="${h(e.strokeProjection.paintOrder)}"`]:[],...void 0!==e.strokeProjection.mixBlendMode?[`style="mix-blend-mode:${e.strokeProjection.mixBlendMode}"`]:[]].join(" "):"",s=void 0===k?"":` fill-opacity="${h(String(k))}"`;return y.push(`<path d="${n}" fill="${e.stroke}" stroke="none"${s}${t?` ${t}`:""} />`),y.join(`
11
+ `)}}let M=(a=e.seed,i=e.stroke,o=e.width,l=f?void 0:e.fill,u=e.p,tc(t,a,i,o,l,u,e.dash,e.strokeProjection,e.opacity));return M&&y.push(M),y.length>0?y.join(`
12
+ `):null})]);for(let t of t1)t!==a&&i(t);export{t1 as BUILTIN_BACKENDS};
@@ -0,0 +1,10 @@
1
+ import{a as e}from"./chunk-BU5LHXNJ.js";import"./chunk-E2WMJZNM.js";import"./chunk-NMQQMRIR.js";import{C as t,D as i,N as n,Q as a,R as r,S as o,W as l,X as s,Y as d,Z as c,aa as h,f as g,xa as p}from"./chunk-4LHYF3BS.js";import"./chunk-CQE4HQEW.js";import"./chunk-LH7HUDKW.js";import"./chunk-5FQ534HP.js";import"./chunk-BY2CPG6B.js";import"./chunk-SZELX2EJ.js";import{d as m}from"./chunk-QA6GJQ4X.js";import{a as u,e as f,l as y}from"./chunk-2SH76OTH.js";import{d as x}from"./chunk-AMJLVPUB.js";import{s as b,u as _}from"./chunk-DF6765YX.js";import{d as w}from"./chunk-J35HAQQF.js";import{a as v,b as k}from"./chunk-CN7WTBWB.js";import{C as F,D as S,a as $,b as M,c as C,d as W,e as L,g as R,h as z,i as I,j as E,o as q}from"./chunk-HLWUNUCM.js";import{M as B,U as T,ba as P,c as O,ca as j,j as A,na as N,oa as X,r as U,x as D}from"./chunk-X2UYKWKM.js";import{c as Y}from"./chunk-TYZOZXUJ.js";import{d as H,h as Z,i as J,j as Q,k as G,n as K}from"./chunk-NO7ZIVRU.js";import{G as V,K as ee,N as et,Qb as ei,Z as en,a as ea,o as er,sb as eo,zb as el}from"./chunk-Z3FDIVLN.js";import{J as es,K as ed}from"./chunk-N5ELX7LR.js";import{a as ec}from"./chunk-5UVGUSD6.js";import"./chunk-CSFUKSU6.js";var eh=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.3"},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:es,detectLoose:ed}),eg=new Map([["person","person"],["box","rectangle"],["rectangle","rectangle"],["cylinder","database"],["database","database"],["db","database"],["queue","queue"],["pipe","queue"]]);function ep(e){return void 0===e?void 0:eg.get(e.trim().toLowerCase())}function em(e){return ep(e.style.shape)??e.shape}var eu=(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},ef=(e,t)=>{let i=eu(e,t,1);if(!Number.isSafeInteger(i))throw RangeError(`Invalid C4 row count ${JSON.stringify(e)}; expected a positive integer`);return i};function ey(e={},t={}){let i=!0===(e=Object.fromEntries(Object.entries(e).filter(([e,t])=>ev[e]?.valid(t)??!0))).compact;return{compact:i,typeLegend:!1!==e.typeLegend,...void 0===e.maxWidth?{}:{maxWidth:eu(e.maxWidth,1e4,1)},marginX:eu(e.diagramMarginX,i?16:24),marginY:eu(e.diagramMarginY,i?16:24),gap:eu(e.c4ShapeMargin,i?32:56),padding:eu(e.c4ShapePadding,i?10:16,4),minimumWidth:eu(e.width,i?120:150,24),minimumHeight:eu(e.height,i?60:76,24),boundaryPadding:eu(e.boxMargin,i?16:24,12),rowGap:eu(e.nextLinePaddingX,i?36:56),shapesPerRow:ef(e.c4ShapeInRow,3),boundariesPerRow:ef(e.c4BoundaryInRow,2),...!1===e.wrap?{}:{wrapWidth:eu(e.wrapPadding,i?220:260,40)},input:e,themeVariables:t}}function ex(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=Y(t,"color"!==i);if(void 0===n)throw new P(`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:eu(o,13,1)},...void 0===l?{}:{fontWeight:eu("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 eb=["person","external_person",...["system","container","component"].flatMap(e=>["","external_"].flatMap(t=>["","_db","_queue"].map(i=>`${t}${e}${i}`))),"boundary","node"],e_=Object.freeze(["diagramMarginX","diagramMarginY","c4ShapeMargin","c4ShapePadding","width","height","boxMargin","nextLinePaddingX","c4ShapeInRow","c4BoundaryInRow","wrap","wrapPadding","maxWidth","compact","typeLegend",...eb.flatMap(e=>[`${e}FontSize`,`${e}FontWeight`,`${e}_bg_color`,`${e}_border_color`])]),ew=(Object.freeze(["useMaxWidth",...[...eb,"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})),ev=(()=>{let e=Object.assign(Object.create(null),{wrap:f,compact:f,typeLegend:f});for(let[t,i]of Object.entries(ew)){let n=y(i,1e4);e[t]="c4ShapeInRow"===t||"c4BoundaryInRow"===t?u("an integer from 1 through 10000",e=>Number.isSafeInteger(e)&&n.valid(e)):n}for(let t of e_)if(/FontSize$/.test(t)&&(e[t]=y(1,1e4)),/FontWeight$/.test(t)){let i=y(1,1e3);e[t]=u(i.expected,e=>i.valid("string"==typeof e&&/^\d+$/.test(e)?Number(e):e))}return Object.freeze(e)})();function ek(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:ei([...t.keys(),...i.keys(),...e.legend?.entries.map(e=>e.id)??[]])}}function eF(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 eS(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 e$(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 eM(e,t){return e.statements.find(e=>e.id===t)?.span.line}function eC(e,t){let i=ek(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?ex(a,t):void 0;n.set(e,{id:i.generated(`c4:legend:${e}`,["c4","legend",e]),label:r,kind:"element",shape:em(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 eW=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"}},eL={T:{x:0,y:-1},R:{x:1,y:0},B:{x:0,y:1},L:{x:-1,y:0}},eR=(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,ez=e=>({x:e.x+e.width/2,y:e.y+e.height/2});function eI(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 eE(e,t,i,n){return eI(e,t,(i+1)/(n+1))}var eq={T:"B",R:"L",B:"T",L:"R"};function eB(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 eT=(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}),eO=e=>e.flatMap(e=>[e,...eO(e.children)]);function ej(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 eA(e,t){let i=[],n=e.inlineStyle?.["stroke-width"]?1:t*("thick"===e.style?2:1),a=H.width*n,r=(e.inlineStyle?.["stroke-width"]?H.width:H.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 eN(e,t){return[...e,...eO(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"],eU=class extends U{},eD=/^(Person|System|Container|Component)(Db|Queue)?(_Ext)?$/,eY={Boundary:"boundary",Enterprise_Boundary:"enterprise",System_Boundary:"system",Container_Boundary:"container",Deployment_Node:"deployment",Node:"deployment",Node_L:"deployment",Node_R:"deployment"},eH=new Set(["Rel","BiRel","Rel_U","Rel_Up","Rel_D","Rel_Down","Rel_L","Rel_Left","Rel_R","Rel_Right","Rel_Back","RelIndex"]),eZ={U:"BT",Up:"BT",D:"TB",Down:"TB",L:"RL",Left:"RL",R:"LR",Right:"LR"},eJ=["elementName","bgColor","fontColor","borderColor","shadowing","shape","sprite","techn","legendText","legendSprite"],eQ=["from","to","textColor","lineColor","offsetX","offsetY"],eG=["tagStereo","bgColor","fontColor","borderColor","shadowing","shape","sprite","techn","legendText","legendSprite"],eK=["tagStereo","textColor","lineColor","lineStyle","sprite","techn","legendText","legendSprite"];function eV(e,t){if(!L("c4"))return;let{start:i,end:n,line:a,column:r}=e.span;R("c4",t,e.raw,{line:a,column:r,offset:i,endOffset:n,unit:"physical"})}function e0(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?m(e):e}return t?m(i):i}function e4(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 m(ee(e0(n.name?n.raw.replace(/^\s*\$[A-Za-z_][A-Za-z_0-9]*\s*=/,""):n.raw,!1)))}function e1(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 e2(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 e3(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 e6(e){return e.startsWith("Person")||e.startsWith("System")?["alias","label","descr","sprite","tags","link"]:["alias","label","techn","descr","sprite","tags","link"]}function e5(e){return"deployment"===eY[e]?["alias","label","type","descr","sprite","tags","link"]:"Boundary"===e?["alias","label","type","tags","link"]:["alias","label","tags","link"]}function e8(e){return"RelIndex"===e?["index","from","to","label","tags","link"]:["from","to","label","techn","descr","sprite","tags","link"]}function e9(e){return e?e.split("+").map(e=>e.trim()).filter(Boolean):[]}function e7(e){return""===e?void 0:e}function te(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 tt(e,t,i,n){let a=e4(e,t,"label");return void 0!==a?a:e[t.indexOf("label")]?.name?"":te(i,"label",n)}function ti(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 tn(e,t,i,n,a="warning"){e.diagnostics.push({code:"UNSUPPORTED_SYNTAX",syntax:i,severity:a,statementId:t,message:n})}var ta=new Set(["UpdateElementStyle","UpdateRelStyle","UpdateLayoutConfig"]);function tr(e,t){return Object.fromEntries(Object.entries(e).filter(([e,i])=>!t.includes(e)&&""!==i))}var to=O(function(t,i){let n=i.positioned,{body:a,config:r,identities:o}=n,l=Z(i.resolved.renderOptions,void 0,i.resolved.styleFace),s=e=>e&&"strict"!==i.resolved.renderOptions.security&&w(e)?` data-href="${et(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="${et(e.id)}"`,`data-c4-kind="${et(e.kind)}"`,`data-c4-macro="${et(e.macro)}"`,...e.parentId?[`data-parent-id="${et(e.parentId)}"`]:[],...e.tags.length?[`data-tags="${et(JSON.stringify(e.tags))}"`]:[],...s(e.effectiveLink??e.link)?[s(e.effectiveLink??e.link)]:[],...e.sprite?[`data-sprite="${et(e.sprite)}"`]:[],...void 0!==eM(a,e.statementId)?[`data-source-line="${eM(a,e.statementId)}"`]:[],..."external"in e?[`data-external="${e.external}"`,`data-c4-shape="${e.shape}"`,`data-effective-c4-shape="${em(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=ex(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??N(a.fill?{fill:a.fill}:void 0,l.groupTextColor??X("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:eo(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=el(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:ea(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&&w(o)?{href:o}:{}},...o&&w(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",...eB(e),rx:3,ry:3};return[t.group({id:d(n.id,"relationship-label"),role:"edge-label",open:`<g class="edge-label" data-id="${et(d(n.id,"label"))}" data-role="edge-label" data-edge-id="${et(n.id)}" data-from="${et(n.source)}" data-to="${et(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??X("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=ex(e,r),m=em(e),u=p.fill??l.nodeFillColor??"var(--_node-fill)",f=p.stroke??l.nodeBorderColor??"var(--_node-stroke)",y=p.text??N(p.fill?{fill:p.fill}:void 0,l.nodeTextColor??X("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=er(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}}),tl=W(eh,{configDiagnostics:e=>x("c4",e,ev),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:[]}}}();L("c4")&&I("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}}),L("c4")&&z("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=b(e,t),n=i<0?e.length:i,a=!r&&D([e.slice(t,n)],0)?.form==="native";o(n,a?"accessibility":"trivia");continue}if(r){r=!1;let i=b(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=ec(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(eY[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=b(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=b(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){eV(e,"trivia"),!i.startsWith("%%")&&i.includes(";")?(tn(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&&tn(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=ec(i),a=eX.find(e=>e.toLowerCase()===t.toLowerCase());if(!a)throw Error("C4: expected C4Context, C4Container, C4Component, C4Dynamic, or C4Deployment");eV(e,"header"),n.variant=a,L("c4")&&I("c4","set-variant",a),e.kind="header",e.signature=a,l=!0;continue}if("boundary-close"===e.kind){eV(e,"boundary-close");let t=a.pop();if(!t)throw Error(`C4: unmatched closing boundary at line ${e.span.line}`);L("c4")&&I("c4","close-boundary",{id:t}),e.entityId=t;continue}if(A(i)!==i&&tn(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)){eV(e,"title"),a.length&&tn(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(A(i.replace(/^title\s+/i,"")))&&tn(n,e.id,"c4_title_token","The title contains literal token delimiters; serialization writes entity escapes for pinned Mermaid"),n.title=m(ee(i.replace(/^title\s+/i,""))),L("c4")&&I("c4","set-title",n.title),e.kind="title",e.signature=n.title;continue}let c=D(i.split(/\r\n?|\n/),0);if(c){eV(e,"accessibility"),a.length&&tn(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||tn(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,L("c4")&&I("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)){eV(e,"accessibility"),n.accessibilityDescription=i.replace(/^accDescription\s+/i,""),L("c4")&&I("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){eV(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),L("c4")&&I("c4","add-directive",t),e.kind="directive",e.entityId=t.id,e.signature=ti(t);continue}let g=/^([A-Za-z_][A-Za-z_0-9]*)\s*\(([\s\S]*)\)\s*(\{)?$/.exec(i);if(!g){eV(e,"unknown"),tn(n,e.id,"c4_unknown_statement","C4 statement is preserved but has no native interpretation","error");continue}let p=g[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:e0(t?t[2]:e),raw:e}})}(g[2]);if("UpdateLayoutConfig"===p&&(0===u.length||1===u.length&&!u[0].name&&""===u[0].value)&&!g[3]){a.length&&r.add(a.at(-1)),"("===i[p.length]&&e1(u)||tn(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(g[2].replace(/"[^"]*"|'[^']*'/g,""))&&tn(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)&&tn(n,e.id,"c4_empty_named_argument","Empty named arguments are retained; pinned Mermaid requires a positional empty slot");let f=eD.exec(p),y=!!(f&&!("Person"===f[1]&&f[2]))||Object.hasOwn(eY,p)||eH.has(p)||ta.has(p);if(y&&a.length&&r.add(a.at(-1)),y&&u.some(e2))throw new eU(`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)})&&tn(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[p.length]&&tn(n,e.id,"c4_space_before_arguments",`Pinned Mermaid reads "(" only straight after ${p} and rejects whitespace between them; ours reads the call. Write ${p}( with no space`),f&&!("Person"===f[1]&&f[2])){if(eV(e,"element"),g[3])throw Error(`C4: ${p} cannot open a boundary`);let i=e3(u,e6(p)),r=te(i,"alias",p);if(o.has(r))throw Error(`C4: duplicate declaration alias ${JSON.stringify(r)}`);o.add(r);let l={id:r,macro:p,kind:f[1].toLowerCase(),external:!!f[3],shape:"Person"===f[1]?"person":"Db"===f[2]?"database":"Queue"===f[2]?"queue":"rectangle",label:tt(u,e6(p),i,p),technology:e7(e4(u,e6(p),"techn")),description:e7(e4(u,e6(p),"descr")),parentId:a.at(-1),tags:e9(i.tags),link:e7(i.link),sprite:e7(i.sprite),style:{},args:u,statementId:e.id};t&&B("nodes",n.elements.length+n.boundaries.length+1),n.elements.push(l),L("c4")&&I("c4","add-element",l),e.kind="element",e.entityId=r,e.signature=ti(l)}else if(eY[p]){if(eV(e,"boundary-open"),!g[3])throw Error(`C4: ${p} requires a boundary block`);let i=e3(u,e5(p)),r=te(i,"alias",p);if(o.has(r))throw Error(`C4: duplicate declaration alias ${JSON.stringify(r)}`);o.add(r);let l={id:r,macro:p,kind:eY[p],label:tt(u,e5(p),i,p),type:e7(e4(u,e5(p),"type")),description:e7(e4(u,e5(p),"descr")),parentId:a.at(-1),tags:e9(i.tags),link:e7(i.link),sprite:e7(i.sprite),style:{},args:u,statementId:e.id,..."Node_L"===p?{alignment:"left"}:"Node_R"===p?{alignment:"right"}:{}};t&&(B("nodes",n.elements.length+n.boundaries.length+1),B("nesting",a.length+1)),n.boundaries.push(l),a.push(r),L("c4")&&I("c4","open-boundary",l),e.entityId=r,e.signature=ti(l)}else if(eH.has(p)){eV(e,"relationship");let i=e3(u,e8(p)),a=te(i,"from",p),r=te(i,"to",p),o="Rel_Back"===p,l={id:"",macro:p,from:a,to:r,source:o?r:a,target:o?a:r,label:tt(u,e8(p),i,p),technology:e7(e4(u,e8(p),"techn")),description:e7(e4(u,e8(p),"descr")),tags:e9(i.tags),link:e7(i.link),sprite:e7(i.sprite),style:{},args:u,statementId:e.id,index:"RelIndex"===p?te(i,"index",p):void 0,order:n.relationships.length+1,bidirectional:"BiRel"===p,reversed:o,direction:eZ[p.slice(4)]};t&&B("edges",n.relationships.length+n.layout.hints.length+1),n.relationships.push(l),L("c4")&&I("c4","add-relationship",l),e.kind="relationship","RelIndex"===p&&u.slice(4).some(e=>!e.name)&&tn(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{eV(e,"directive");let t={id:e.id,name:p,args:u,category:"UpdateElementStyle"===p?"element-style":"UpdateRelStyle"===p?"relationship-style":"AddElementTag"===p?"element-tag":"AddRelTag"===p?"relationship-tag":"UpdateLayoutConfig"===p||p.startsWith("Lay_")||p.startsWith("LAYOUT_")?"layout":"ShowLegend"===p||"SHOW_LEGEND"===p||"SHOW_FLOATING_LEGEND"===p?"legend":"AddElementLink"===p||"AddRelLink"===p?"link":"unknown",statementId:e.id};n.directives.push(t),L("c4")&&I("c4","add-directive",t),e.kind="directive",e.entityId=t.id,e.signature=ti(t),"unknown"===t.category?tn(n,e.id,"c4_unknown_macro",`${p} is preserved but has no native interpretation`,"error"):p.startsWith("Update")||tn(n,e.id,"c4_directive_extension",`${p} is a reader extension; pinned Mermaid does not accept this directive`)}let x=f?e6(p):eY[p]?e5(p):eH.has(p)?e8(p):("UpdateElementStyle"===p?eJ:"UpdateRelStyle"===p?eQ:"UpdateLayoutConfig"===p?["c4ShapeInRow","c4BoundaryInRow"]:void 0)??("AddElementTag"===p?eG:"AddRelTag"===p?eK: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)&&tn(n,e.id,"c4_duplicate_argument",`${p} assigns ${r} more than once; every argument is retained`,"error"):tn(n,e.id,"c4_unknown_argument",`${p} 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))?tn(n,e.id,"c4_quoted_string_extension","Quoted-string extension is preserved; typed edits write Mermaid entity escapes"):!y||e1(u)||n.diagnostics.some(t=>t.statementId===e.id&&["c4_multiline_arguments","c4_empty_named_argument"].includes(t.syntax))||tn(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&&T(n);let c=ei(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]),L("c4")&&I("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=ti(e)}for(let e of(!function(e,t=!1){for(let t of[...e.elements,...e.boundaries,...e.relationships])t.style={},delete t.effectiveLink,L("c4")&&I("c4","reset-presentation",{id:t.id,style:t.style});e.layout={hints:[]},L("c4")&&I("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=e3(e.args,t);for(let n of["techn","legendText"]){let a=e4(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?eG:eK);("element-tag"===t.category?o:l).set(e.tagStereo??"",tr(e,["tagStereo"])),L("c4")&&I("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)),L("c4")&&I("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)),L("c4")&&I("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,eJ),t=i.get(e.elementName);if(!t)throw Error(`C4: UpdateElementStyle references undeclared alias ${JSON.stringify(e.elementName)}`);Object.assign(t.style,tr(e,["elementName"])),L("c4")&&I("c4","set-element-style",{id:t.id,style:t.style})}else if("relationship-style"===o.category){let e=e3(o.args,eQ),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,tr(e,["from","to"])),L("c4")&&I("c4","set-relationship-style",{id:i.id,style:i.style})}else if("UpdateLayoutConfig"===o.name){let t=e3(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,L("c4")&&I("c4","set-layout-option",{name:n,value:a})}}else if(o.name.startsWith("Lay_")){let n=eZ[o.name.slice(4)],a=e3(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&&B("edges",e.relationships.length+e.layout.hints.length+1),e.layout.hints.push({from:a.from,to:a.to,direction:n,statementId:o.statementId}),L("c4")&&I("c4","add-layout-hint",e.layout.hints.at(-1)))}else if("direction"===o.name)e.layout.direction=o.args[0]?.value,L("c4")&&I("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",L("c4")&&I("c4","set-direction",e.layout.direction);else if("AddElementLink"===o.name){let e=e3(o.args,["alias","link"]),t=i.get(e.alias);t&&(t.effectiveLink=e.link,L("c4")&&I("c4","set-effective-link",{id:t.id,link:t.effectiveLink}))}else if("AddRelLink"===o.name){let e=e3(o.args,["from","to","link"]);for(let t of n.get(a(e.from,e.to))??[])t.effectiveLink=e.link,L("c4")&&I("c4","set-effective-link",{id:t.id,link:t.effectiveLink})}let s=ei([...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}}))]},L("c4")&&I("c4","set-legend",e.legend)}(n,t),n.boundaries))r.has(e.id)||tn(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);tn(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&&tn(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)||tn(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!==ep(e.style.shape)||["bgColor","fontColor","borderColor","textColor","lineColor","lineStyle","offsetX","offsetY","legendText","techn"].includes(t)||tn(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=_(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 m=e.familyConfig;return C(function(e,m={},u,f={},y={}){var x;let b,_,w,v,k,F,S,$,M,C;T(e);let W=ey({...void 0===m.padding?{}:{diagramMarginX:m.padding,diagramMarginY:m.padding},...void 0===m.nodeSpacing?{}:{c4ShapeMargin:m.nodeSpacing},...void 0===m.layerSpacing?{}:{nextLinePaddingX:m.layerSpacing},...f},y),L=Z(m,void 0,u),R=function(e,t=ey()){for(let t of[...e.elements,...e.boundaries,...e.relationships,...e.legend?.entries??[]]){let e=t.style;j({...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=ek(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:eS(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=ex(r,t),l=em(r);n.nodes.set(e,{id:e,label:eF(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=e$(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:V(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,j({...t.style.lineColor?{stroke:t.style.lineColor}:{},...t.style.textColor?{color:t.style.textColor}:{}},`UpdateRelStyle(${t.from}, ${t.to})`))}return n}(e,W),z=new Map,I=new Map([...e.elements,...e.boundaries].map(e=>[e.id,e.parentId])),E=e=>{let t=[];for(let i=I.get(e);i&&!t.includes(i);i=I.get(i))t.push(i);return t},B=e=>void 0!==W.input.c4ShapePadding?W.padding:W.compact&&u?.node?.["X"===e?"paddingX":"paddingY"]===void 0?Math.min(W.padding,L["X"===e?"nodePaddingX":"nodePaddingY"]):L["X"===e?"nodePaddingX":"nodePaddingY"],P=e=>{if(void 0===W.wrapWidth)return;if(void 0===W.maxWidth)return W.wrapWidth;let t=void 0===e?0:E(e).length;return Math.max(24,W.minimumWidth-2*B("X")-20,Math.min(W.wrapWidth,W.maxWidth-(W.marginX+40)*2-t*W.boundaryPadding*2-2*B("X")-20))},O=(e,t,i=!1)=>{let n=ex(e,W);return en(t,{display:"literal",fontSize:n.fontSize??(i?L.groupHeaderFontSize:L.nodeLabelFontSize),fontWeight:n.fontWeight??(i?L.groupHeaderFontWeight:L.nodeLabelFontWeight),transform:i?L.groupTextTransform:L.nodeTextTransform,maxWidth:P(e.id),letterSpacing:i?L.groupLetterSpacing:L.nodeLetterSpacing,fontFamily:n.fontFamily??(i?L.groupFont:void 0)})},A=e.elements.map(e=>{let t=eF(e),i=O(e,t),n=em(e),a=Math.max(W.minimumWidth,i.width+2*B("X")+20*("queue"===n)),r=Math.max(W.minimumHeight,i.height+2*B("Y")+("person"===n?38:16*("database"===n)));return z.set(e.id,{id:e.id,x:0,y:0,width:a,height:r,..."database"===n?{cylinder:!0}:{}}),{...R.nodes.get(e.id),x:0,y:0,width:a,height:r,labelBlock:i,inlineStyle:R.nodeStyles.get(e.id)}}),N=new Map;for(let t of e.boundaries){let e=eS(t),i=O(t,e,!0),n=i.height+2*W.padding,a={id:t.id,label:e,labelBlock:i,x:0,y:0,width:Math.max(W.minimumWidth,i.width+2*W.padding),height:n+2*W.boundaryPadding,headerHeight:n,children:[]};N.set(t.id,a),z.set(t.id,{...a,container:!0})}let X=R.edges.map((t,i)=>({...t,points:[],labelBlock:en(e$(e,e.relationships[i]),{display:"literal",fontSize:L.edgeLabelFontSize,fontWeight:L.edgeLabelFontWeight,letterSpacing:L.edgeLetterSpacing,transform:L.edgeTextTransform,...void 0===W.maxWidth?{}:{maxWidth:P()}}),inlineStyle:R.linkStyles.get(i),edgeIndex:i}));for(let t of e.boundaries){let e=X.filter(e=>e.source===t.id&&E(e.target).includes(t.id)||e.target===t.id&&E(e.source).includes(t.id));e.length&&(z.get(t.id).bottomPadding=Math.max(W.boundaryPadding,...e.map(e=>(e.labelBlock?.height??0)+48))*e.length)}let U="LR"===R.direction||"RL"===R.direction;for(let[e,t]of z){let i=X.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());U?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 D=m.diagramTitle??e.title,Y=void 0===D?void 0:en(D,{display:"literal",fontSize:J,fontWeight:Q,transform:L.groupTextTransform,letterSpacing:L.groupLetterSpacing,fontFamily:L.groupFont,...void 0===W.maxWidth?{}:{maxWidth:Math.max(24,W.maxWidth-2*W.marginX)}}),H=Y?{text:Y.text,width:Y.width,height:Y.height+G,block:Y}:void 0,ee=Math.max(W.gap,...X.map(e=>(e.labelBlock?.width??0)*2+48)),et=Math.max(W.rowGap,...X.map(e=>(e.labelBlock?.height??0)*2+48)),ei=new Map;for(let e of X){let t=JSON.stringify([e.source,e.target].sort());ei.set(t,(ei.get(t)??0)+1)}let ea=Math.max(1,...ei.values()),er=ea>1?ea+1:1,eo=(x={gapX:ee*er,gapY:et*er,padding:W.boundaryPadding,marginX:W.marginX+40,marginY:W.marginY+40+(H?.height??0),shapesPerRow:e.layout.shapesPerRow??W.shapesPerRow,boundariesPerRow:e.layout.boundariesPerRow??W.boundariesPerRow,direction:"TD"===R.direction?"TB":R.direction,maxWidth:W.maxWidth},b=new Map([...z].map(([e,t])=>[e,{...t}])),_=[],w=new Map(e.statements.map((e,t)=>[e.id,t])),k=new Map((v=[...e.boundaries,...e.elements].sort((e,t)=>(w.get(e.statementId)??0)-(w.get(t.statementId)??0))).map(e=>[e.id,e.parentId])),F=[...e.layout.hints,...e.relationships.filter(e=>e.direction).map(e=>({from:e.from,to:e.to,direction:e.direction,statementId:e.statementId}))],S=(e,t)=>{let i=new Set;for(;k.get(e)!==t;){if(i.has(e))return;i.add(e);let t=k.get(e);if(!t)return;e=t}return e},M=($=(e,t,i)=>{let n=v.filter(t=>t.parentId===e&&b.has(t.id));for(let e of n)if(b.get(e.id).container&&!t.has(e.id)){let n=new Set(t);n.add(e.id);let a=$(e.id,n,void 0===i?void 0:Math.max(1,i-2*x.padding)),r=b.get(e.id);r.width=Math.max(r.width,a.width+2*x.padding),r.height=Math.max(r.height,a.height+(r.headerHeight??0)+x.padding+Math.max(x.padding,r.bottomPadding??0))}let a=n.some(e=>b.get(e.id).container)?x.boundariesPerRow:x.shapesPerRow,r=x.direction,o="LR"===r||"RL"===r;if(!o&&void 0!==i){let e=Math.max(1,...n.map(e=>b.get(e.id).width)),t=Math.max(1,Math.floor((i+x.gapX)/(e+x.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=b.get(e.id);h&&(h>=a||o&&void 0!==i&&l+t.width>i)&&(o?(l=0,s+=d+x.gapY,d=0):(s=0,l+=c+x.gapX,c=0),h=0),t.x=l,t.y=s,o?l+=t.width+x.gapX:s+=t.height+x.gapY,d=Math.max(d,t.height),c=Math.max(c,t.width),h++});let g=[];for(let t of F){let i=S(t.from,e),n=S(t.to,e);if(!i||!n||i===n||!b.has(i)||!b.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)){_.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=b.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=b.get(e.before),i=b.get(e.after);i[e.axis]=Math.max(i[e.axis],t[e.axis]+("x"===e.axis?t.width+x.gapX:t.height+x.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=b.get(n[e].id),r=b.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+x.gapY,t=!0)}if(e(),!t)break}}else if("RL"===r||"BT"===r){let e=Math.max(0,...n.map(e=>{let t=b.get(e.id);return"RL"===r?t.x+t.width:t.y+t.height}));for(let t of n){let i=b.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=b.get(e.id);return t.x+t.width})),height:Math.max(0,...n.map(e=>{let t=b.get(e.id);return t.y+t.height}))}})(void 0,new Set,void 0===x.maxWidth?void 0:Math.max(1,x.maxWidth-2*x.marginX)),(C=(e,t,i,n)=>{for(let a of v.filter(t=>t.parentId===e)){let e=b.get(a.id);!e||n.has(a.id)||(n.add(a.id),e.x+=t,e.y+=i,e.container&&C(a.id,e.x+x.padding,e.y+(e.headerHeight??0)+x.padding,n))}})(void 0,x.marginX,x.marginY,new Set),{boxes:b,width:M.width+2*x.marginX,height:M.height+2*x.marginY,diagnostics:_});for(let e of A)Object.assign(e,eo.boxes.get(e.id));let el=[];for(let t of e.boundaries){let e=N.get(t.id);Object.assign(e,eo.boxes.get(t.id));let i=t.parentId&&N.get(t.parentId);i?i.children.push(e):el.push(e)}(function(e,i,m,u,f){let{edges:y}=i,x=[...e.values()].filter(e=>e.container).map(e=>({...e,id:f.generated(`c4-header-obstacle:${e.id}`,["c4","header-obstacle",e.id]),height:e.headerHeight??1,shape:"rectangle",label:""})),b=[...i.nodes,...x],_=0,w=()=>{if(++_>4e5)throw new eW},v=(e,t,i)=>(w(),h(e,t,i)),k=(e,t,i,n,a)=>{let r={x:eL[t].x*i,y:eL[t].y*i},o=n;for(let t of b){if(w(),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}},F=new Map,S=new Map,$=new Map,M=y.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&&eR(e,t)||t.container&&eR(t,e))return["B","B"];let i=ez(e),n=ez(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}`;S.set(i,(S.get(i)??0)+1)}return[{edge:t,source:i,target:n,startSide:a,endSide:r}]}),C=new Map;for(let e of M){let t=JSON.stringify([e.source.id,e.target.id].sort()),i=C.get(t)??[];i.push(e),C.set(t,i)}for(let[e,i]of M.entries()){let n,{edge:a,source:r,target:o,startSide:l,endSide:s}=i,d=(e,t)=>{let i=`${e.id}\0${t}`,n=$.get(i)??0;return $.set(i,n+1),{index:n,count:S.get(i)}},c=d(r,l),h=d(o,s),p=eE(r,l,c.index,c.count),m=r.id===o.id?eE(o,s,h.index,h.count):function(e,t,i,n,a,r){let o=eE(i,n,a,r);if(eq[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=eI(i,n,0),c=eI(i,n,1),h=(e[l]-d[l])/(c[l]-d[l]);if(!(h>0&&h<1))return o;let g=eI(i,n,h);for(let e=0;e<r;e++)if(e!==a&&8>Math.abs(eE(i,n,e,r)[l]-g[l]))return o;return g}(p,l,o,s,h.index,h.count),f=r.container&&r.id!==o.id&&eR(r,o)?-1:1,y=o.container&&r.id!==o.id&&eR(o,r)?-1:1,x=C.get(JSON.stringify([r.id,o.id].sort())),b="R"===l||"L"===l?Math.max(24,...x.map(e=>(e.edge.labelBlock?.width??0)+32)):Math.max(24,...x.map(e=>(e.edge.labelBlock?.height??0)+24)),_=(x.indexOf(i)-(x.length-1)/2)*b,w=14+e%5*4,v=g(a,u),M=k(p,l,f,Math.max(w,v.start?v.start+(u.edgeBendRadius??0):0),r.id),W=k(m,s,y,Math.max(w,v.end?v.end+(u.edgeBendRadius??0):0),o.id);if(F.set(a,{start:p,end:m,startExit:M,endExit:W}),r.id===o.id){let e=r.x+r.width+w+(a.labelBlock?.width??0)/2,t=r.y+r.height+w+(a.labelBlock?.height??0)/2;n=[M,{x:e,y:M.y},{x:e,y:t},{x:W.x,y:t},W]}else if("R"===l||"L"===l){let e=(M.x+W.x)/2+_;n=[M,{x:e,y:M.y},{x:e,y:W.y},W]}else{let e=(M.y+W.y)/2+_;n=[M,{x:M.x,y:e},{x:W.x,y:e},W]}a.points=t([p,...n,m]),F.get(a).seed=a.points,a.label&&(a.labelPosition=q(a.points))}for(let n of(r(i,m,new Set,u),l(i,m,u),s(i,m,u),c(i,m,u),y)){let a=F.get(n),r=e.get(n.source),o=e.get(n.target),l=Math.abs(ez(r).x-ez(o).x)>=Math.abs(ez(r).y-ez(o).y)?ez(r).x<=ez(o).x?"LR":"RL":ez(r).y<=ez(o).y?"TB":"BT",s={id:f.generated(`${n.id}:routing-source`,["c4",n.id,"routing-source"]),label:"",shape:"rectangle",...a.startExit,width:0,height:0},d={id:f.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])},h=(n.labelBlock?.width??0)/2+10,g=(n.labelBlock?.height??0)/2+8;p([...[...i.nodes,...x].map(e=>e.id===n.source||e.id===n.target?e:{...e,x:e.x-h,y:e.y-g,width:e.width+2*h,height:e.height+2*g}),s,d],[c],{...m,direction:l}),c.points.slice(1).some((e,t)=>b.some(i=>v(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,b,v)??c.points),n.points=t([a.start,...c.points,a.end]),n.labelPosition=q(n.points)}d(i,m,u);let W=[...i.nodes,...x],L={...i,nodes:W},{ctx:R}=a(W,y,m.direction,u,i.groups);for(let e of(R.finalLabelClearance=!0,y))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,R);if(a){e.labelPosition=a;break}}for(let t of(s(L,m,u),y)){let i=e.get(t.source),n=e.get(t.target);o(t,t.routeCertificate,{...i,label:"",shape:"rectangle"},{...n,label:"",shape:"rectangle"})}})(eo.boxes,{nodes:A,groups:el,edges:X},R,L,ek(e)),function(e,t,i){let{edges:n}=e,a=eN(e.nodes,e.groups),r=n.flatMap(e=>eA(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:eB(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+eT(n,t),0),a.reduce((e,t)=>e+eT(n,t),0),o.reduce((e,t)=>e+eT(eP(i,4),t),0),s.reduce((t,n)=>t+(n.edge!==e&&ej(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(eB(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(eB(e))}}({nodes:A,groups:el,edges:X},L.lineWidth,e);let es=X.flatMap(e=>{let t=eB(e);return t?[{...t,id:e.id,label:"",shape:"rectangle"}]:[]}),ed=X.flatMap(e=>eA(e,L.lineWidth).map(t=>({...t,id:e.id,label:"",shape:"rectangle"})));i([...A,...es,...ed],X,el,Math.max(W.marginX,W.marginY)+(H?.height??0));let ec=[...A,...N.values(),...es,...ed],eh=Math.max(eo.width,...ec.map(e=>e.x+e.width+W.marginX),...X.flatMap(e=>[...e.points.map(e=>e.x+W.marginX),(e.labelPosition?.x??0)+(e.labelBlock?.width??0)/2+W.marginX]),H?H.width+2*W.marginX:0),eg=Math.max(eo.height,...ec.map(e=>e.y+e.height+W.marginY),...X.flatMap(e=>[...e.points.map(e=>e.y+W.marginY),(e.labelPosition?.y??0)+(e.labelBlock?.height??0)/2+W.marginY])),ep=eC(e,W).map(e=>({...e,block:en(e.label,{display:"literal",fontSize:L.edgeLabelFontSize,fontWeight:L.edgeLabelFontWeight,letterSpacing:L.edgeLetterSpacing,transform:L.edgeTextTransform,...void 0===W.maxWidth?{}:{maxWidth:Math.max(24,W.maxWidth-2*W.marginX-64)}})})),eu=en("Legend",{display:"literal",fontSize:u?.text?.fontSize??13,fontWeight:u?.text?.fontWeight??600,letterSpacing:u?.text?.letterSpacing??0,transform:u?.text?.textTransform,...void 0===W.maxWidth?{}:{maxWidth:Math.max(24,W.maxWidth-2*W.marginX-24)}}),ef=ep.length?{x:W.marginX,y:eg+12,width:Math.max(eu.width+24,...ep.map(e=>e.block.width+64)),height:eu.height+20+ep.reduce((e,t)=>e+t.block.height+10,0),heading:eu,entries:ep}:void 0;ef&&(eh=Math.max(eh,ef.x+ef.width+W.marginX),eg=ef.y+ef.height+W.marginY);let eb=[...eo.diagnostics,...function(e,t,i,n){let a=[],{edges:r,nodes:o,groups:l}=t,s=eN(o,l),d=r.map(e=>({edge:e,box:eB(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=>eT(t,e)>.01)||d.some(i=>i.edge!==e&&eT(t,i.box)>.01)||r.some(i=>i!==e&&i.points.slice(1).some((e,n)=>ej(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=eO(l).map(e=>({...e,height:e.headerHeight??0})),g=r.flatMap(e=>eA(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=>eT(e,t.box)>.01)||[...o,...h].some(t=>t.id!==e.endpoint&&eT(e,t)>.01)||g.some(t=>t.head!==e&&function(e,t){if(.01>=eT(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:A,groups:el,edges:X},L.lineWidth,{width:eh,height:eg})];return void 0!==W.maxWidth&&eh>W.maxWidth+.01&&eb.push({code:"C4_WIDTH_EXCEEDED",severity:"warning",message:`The requested C4 width ${W.maxWidth}px cannot contain the ${Math.ceil(eh)}px artifact without shrinking or clipping content; minimum card widths, nesting, explicit direction constraints and authored offsets retain precedence.`}),{width:eh,height:eg,...ef?{legend:ef}:{},nodes:A,groups:el,edges:X,...H?{title:K(H,eh,W.marginY)}:{},body:e,config:W,diagnostics:eb,identities:ek(e),textContext:{node:L.nodeTextTransform,edge:L.edgeTextTransform,group:L.groupTextTransform,legendHeading:u?.text?.textTransform,title:D}}}(m.model,e.renderOptions,e.styleFace,m.c4,m.themeVariables))},projectPositioned:$(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=eF(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=e$(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=eS(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:F(i.labelBlock,d,i.y+c/2,o),container:k({...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:F(t.block,t.x,t.y),container:k(v(e))})}let p=eC(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=k(t);g.push({id:"legend:heading",text:t.heading.text,bounds:F(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:F(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=em(t),n=e.y+e.height/2+("person"===i?19:4*("database"===i));return{id:t.id,x:E(e.x),y:E(e.y),w:E(e.width),h:E(e.height),shape:i,label:t.label,role:"box",...S(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=>[E(e.x),E(e.y)]),...void 0!==e.label&&e.labelPosition?{label:{x:E(e.labelPosition.x),y:E(e.labelPosition.y),text:e.label,bounds:F(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:E(t.x),y:E(t.y),w:E(t.width),h:E(t.height),members:i.elements.filter(t=>t.parentId===e.id).map(e=>e.id),...void 0!==e.parentId?{parentId:e.parentId}:{}}}),bounds:{w:E(e.width),h:E(e.height)},labels:g}}),lowerScene:M(to)});export{tl as default};
@@ -1,4 +1,4 @@
1
- import{p as e}from"./chunk-KXPF5KIU.js";import{H as t,M as r}from"./chunk-GMTB5UTY.js";function n(e){if(!/#\w+;/.test(e))return{text:e,restore:e=>e,sourceOffset:e=>e};let t=new Map,n=e=>{let r=e.codePointAt(0);r>=57344&&r<=63743&&t.set(e,(t.get(e)??0)+1)};for(let t of e)n(t);for(let t of e.matchAll(/\\(?:u([\da-fA-F]{4})|U([\da-fA-F]{8}))/g)){let e=Number.parseInt(t[1]??t[2],16);e<=1114111&&n(String.fromCodePoint(e))}let o="",s=t.get(o)??0;for(let e=57345;s>0&&e<=63743;e++){let r=String.fromCodePoint(e),n=t.get(r)??0;n<s&&(o=r,s=n)}let a=e.length,l=/#\w+;/g;for(;l.test(e);)a+=2*s;r("sourceCharacters",e.length+a);let i=o.repeat(s+1),u=RegExp(`${i}(\\w+)${i}`,"g"),f=[],c=0;return{text:e.replace(/#\w+;/g,(e,t)=>{let r=`${i}${e.slice(1,-1)}${i}`,n=t+c;return f.push({start:n,end:n+r.length,sourceStart:t,sourceEnd:t+e.length}),c+=r.length-e.length,r}),restore:e=>e.replace(u,(e,t)=>`#${t};`),sourceOffset:e=>{let t=0,r=f.length;for(;t<r;){let n=t+r>>>1;f[n].start<=e?t=n+1:r=n}let n=f[t-1];return n?e<n.end?n.sourceStart:e-n.end+n.sourceEnd:e}}}function o(r,o,s){let a=e(r,o,s);if("unclosed"===a.kind)return{ok:!1,unclosed:!0,message:"unclosed @{ metadata block"};if("invalid"===a.kind)return{ok:!1,unclosed:!1,message:a.message};let l=function(e,r){let o=n(e),s=o.text,a=t(s.includes(`
1
+ import{p as e}from"./chunk-DF6765YX.js";import{H as t,M as r}from"./chunk-X2UYKWKM.js";function n(e){if(!/#\w+;/.test(e))return{text:e,restore:e=>e,sourceOffset:e=>e};let t=new Map,n=e=>{let r=e.codePointAt(0);r>=57344&&r<=63743&&t.set(e,(t.get(e)??0)+1)};for(let t of e)n(t);for(let t of e.matchAll(/\\(?:u([\da-fA-F]{4})|U([\da-fA-F]{8}))/g)){let e=Number.parseInt(t[1]??t[2],16);e<=1114111&&n(String.fromCodePoint(e))}let o="",s=t.get(o)??0;for(let e=57345;s>0&&e<=63743;e++){let r=String.fromCodePoint(e),n=t.get(r)??0;n<s&&(o=r,s=n)}let a=e.length,l=/#\w+;/g;for(;l.test(e);)a+=2*s;r("sourceCharacters",e.length+a);let i=o.repeat(s+1),u=RegExp(`${i}(\\w+)${i}`,"g"),f=[],c=0;return{text:e.replace(/#\w+;/g,(e,t)=>{let r=`${i}${e.slice(1,-1)}${i}`,n=t+c;return f.push({start:n,end:n+r.length,sourceStart:t,sourceEnd:t+e.length}),c+=r.length-e.length,r}),restore:e=>e.replace(u,(e,t)=>`#${t};`),sourceOffset:e=>{let t=0,r=f.length;for(;t<r;){let n=t+r>>>1;f[n].start<=e?t=n+1:r=n}let n=f[t-1];return n?e<n.end?n.sourceStart:e-n.end+n.sourceEnd:e}}}function o(r,o,s){let a=e(r,o,s);if("unclosed"===a.kind)return{ok:!1,unclosed:!0,message:"unclosed @{ metadata block"};if("invalid"===a.kind)return{ok:!1,unclosed:!1,message:a.message};let l=function(e,r){let o=n(e),s=o.text,a=t(s.includes(`
2
2
  `)?`${s}
3
3
  `:`{
4
4
  ${s}
@@ -0,0 +1 @@
1
+ import{f as e}from"./chunk-TYZOZXUJ.js";var t=(e,t)=>({expected:e,valid:t}),i=t("a finite positive number",e=>"number"==typeof e&&Number.isFinite(e)&&e>0),n=t("a finite non-negative number",e=>"number"==typeof e&&Number.isFinite(e)&&e>=0),r=t("a finite number",e=>"number"==typeof e&&Number.isFinite(e)),a=t("a boolean",e=>"boolean"==typeof e),o=t("a string",e=>"string"==typeof e),s=t("a non-empty string",e=>"string"==typeof e&&e.trim().length>0),m=t("a CSS font-family list without url(), @import or other functions besides var()",t=>void 0!==e(t)),f=t("a non-empty array of strings",e=>Array.isArray(e)&&e.length>0&&e.every(e=>"string"==typeof e)),u=(...e)=>t(`one of: ${e.join(", ")}`,t=>"string"==typeof t&&e.includes(t)),p=(...e)=>t(`one of: ${e.join(", ")} (case-insensitive)`,t=>"string"==typeof t&&e.some(e=>e.toLowerCase()===t.toLowerCase())),b=(e,i,n=!0)=>t(`a finite number ${n?"from":"greater than"} ${e} through ${i}`,t=>"number"==typeof t&&Number.isFinite(t)&&(n?t>=e:t>e)&&t<=i),y=e=>t(`a finite positive number no greater than ${e}`,t=>"number"==typeof t&&Number.isFinite(t)&&t>0&&t<=e),g=e=>t(`a finite non-negative number no greater than ${e}`,t=>"number"==typeof t&&Number.isFinite(t)&&t>=0&&t<=e),l=t("a finite positive number or non-empty CSS size string",e=>"number"==typeof e&&Number.isFinite(e)&&e>0||"string"==typeof e&&e.trim().length>0),h=(e,i=!1)=>t(`a numeric value${i?` greater than ${e}`:` of at least ${e}`}`,t=>{let n="number"==typeof t?t:"string"==typeof t&&/^[+-]?(?:\d+(?:\.\d+)?|\.\d+)(?:px)?$/i.test(t.trim())?Number.parseFloat(t):NaN;return Number.isFinite(n)&&(i?n>e:n>=e)});export{t as a,i as b,n as c,r as d,a as e,o as f,s as g,m as h,f as i,u as j,p as k,b as l,y as m,g as n,l as o,h as p};
@@ -0,0 +1,3 @@
1
+ import{i as t,j as e,k as o}from"./chunk-TYZOZXUJ.js";function h(h,n,i,r,s,a){let d=r.font??"Inter",p=t(r);return{family:n,width:i.width,height:i.height,colors:r,transparent:s,parts:[h.documentOpen({id:"prelude",width:i.width,height:i.height,colors:r,transparent:s,font:d,hasMonoFont:!1},`${o(i.width,i.height,r,s)}
2
+ ${e(d,!1,r.shadow,r.embedFontImport)}${p?`
3
+ <defs>${p}</defs>`:""}`),...a,h.documentClose()]}}export{h as a};