agentic-mermaid 0.5.3 → 0.5.4

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 (135) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/dist/agent-core.d.ts +7 -7
  3. package/dist/agent-core.js +1 -1
  4. package/dist/agent.d.ts +7 -7
  5. package/dist/agent.js +1 -1
  6. package/dist/agentic-mermaid-mcp.js +1 -1
  7. package/dist/am.js +1 -1
  8. package/dist/browser-lazy/chunks/{agentic-producer-core-CC6OOLDW.js → agentic-producer-core-ECZ3CMZM.js} +1 -1
  9. package/dist/browser-lazy/chunks/{architecture-QUFVKYJR.js → architecture-H5LTMKQW.js} +6 -6
  10. package/dist/browser-lazy/chunks/{block-6J3Q63BO.js → block-566X6FNV.js} +5 -5
  11. package/dist/browser-lazy/chunks/{builtin-backends-7SOZZHPF.js → builtin-backends-VAFEZXKY.js} +6 -6
  12. package/dist/browser-lazy/chunks/{c4-SQVBZAKJ.js → c4-ZXFDLBFK.js} +5 -5
  13. package/dist/browser-lazy/chunks/{chunk-5X6MJX3H.js → chunk-2JQXRKBC.js} +1 -1
  14. package/dist/browser-lazy/chunks/{chunk-E2WMJZNM.js → chunk-37FZNMPR.js} +1 -1
  15. package/dist/browser-lazy/chunks/{chunk-TYZOZXUJ.js → chunk-3JTYTXA6.js} +6 -6
  16. package/dist/browser-lazy/chunks/{chunk-PQGPS2YV.js → chunk-4NILRBC7.js} +1 -1
  17. package/dist/browser-lazy/chunks/{chunk-AMJLVPUB.js → chunk-5LKPDHPC.js} +2 -2
  18. package/dist/browser-lazy/chunks/{chunk-BY2CPG6B.js → chunk-62MR3LWJ.js} +1 -1
  19. package/dist/browser-lazy/chunks/{chunk-J7FFAFQF.js → chunk-64JFHCJC.js} +1 -1
  20. package/dist/browser-lazy/chunks/chunk-6GPDLZFQ.js +1 -0
  21. package/dist/browser-lazy/chunks/{chunk-VWVZGQE2.js → chunk-6UOOATQR.js} +1 -1
  22. package/dist/browser-lazy/chunks/chunk-7TTFBJYA.js +1 -0
  23. package/dist/browser-lazy/chunks/chunk-7UFOFWBA.js +20 -0
  24. package/dist/browser-lazy/chunks/{chunk-5B2Z7575.js → chunk-A7V5VDKN.js} +1 -1
  25. package/dist/browser-lazy/chunks/chunk-CPO5P4L2.js +1 -0
  26. package/dist/browser-lazy/chunks/chunk-EIYLJ4FI.js +20 -0
  27. package/dist/browser-lazy/chunks/{chunk-X2UYKWKM.js → chunk-G4JBA7HU.js} +3 -3
  28. package/dist/browser-lazy/chunks/{chunk-2UIA2IME.js → chunk-IUI4DYC3.js} +1 -1
  29. package/dist/browser-lazy/chunks/{chunk-QA6GJQ4X.js → chunk-J57YRC2M.js} +1 -1
  30. package/dist/browser-lazy/chunks/{chunk-BU5LHXNJ.js → chunk-LBXXKLIR.js} +3 -3
  31. package/dist/browser-lazy/chunks/chunk-NKW2ZNCD.js +1 -0
  32. package/dist/browser-lazy/chunks/{chunk-ICC7HBJX.js → chunk-O34YYEQV.js} +1 -1
  33. package/dist/browser-lazy/chunks/{chunk-UL6NDWLL.js → chunk-OBI5U5XU.js} +1 -1
  34. package/dist/browser-lazy/chunks/{chunk-YCEICNM6.js → chunk-OFOS57WQ.js} +1 -1
  35. package/dist/browser-lazy/chunks/{chunk-OZ443IVJ.js → chunk-PSZEE64O.js} +7 -7
  36. package/dist/browser-lazy/chunks/{chunk-SZELX2EJ.js → chunk-PXTLV57R.js} +1 -1
  37. package/dist/browser-lazy/chunks/{chunk-HLWUNUCM.js → chunk-QVSZOF5M.js} +1 -1
  38. package/dist/browser-lazy/chunks/{chunk-2GPK4VFF.js → chunk-TT5GR5EJ.js} +1 -1
  39. package/dist/browser-lazy/chunks/{chunk-DF6765YX.js → chunk-V6I2VGNQ.js} +5 -5
  40. package/dist/browser-lazy/chunks/{chunk-CN7WTBWB.js → chunk-VRZKI33U.js} +1 -1
  41. package/dist/browser-lazy/chunks/{chunk-2SH76OTH.js → chunk-XHU3A432.js} +1 -1
  42. package/dist/browser-lazy/chunks/{chunk-NO7ZIVRU.js → chunk-YVNJDVQO.js} +1 -1
  43. package/dist/browser-lazy/chunks/chunk-Z7UHFVKN.js +6 -0
  44. package/dist/browser-lazy/chunks/{class-5QA4SCTS.js → class-XIFNVBFE.js} +8 -8
  45. package/dist/{zenuml/chunks/decode-BWERFDGK.js → browser-lazy/chunks/decode-5MFOG3AZ.js} +1 -1
  46. package/dist/browser-lazy/chunks/{elk.bundled-L4CADV5W.js → elk.bundled-RYWHIS5N.js} +8 -8
  47. package/dist/browser-lazy/chunks/er-VEUYJBGG.js +11 -0
  48. package/dist/browser-lazy/chunks/{eventmodeling-2BPLHWRN.js → eventmodeling-G7DITZX7.js} +10 -10
  49. package/dist/browser-lazy/chunks/{flowchart-NEIMZTB5.js → flowchart-SSFIU4EU.js} +1 -1
  50. package/dist/browser-lazy/chunks/{forest-implementation-AEP24AIP.js → forest-implementation-RWFF7XDV.js} +1 -1
  51. package/dist/browser-lazy/chunks/{gantt-RDPIFYAF.js → gantt-HQNVDX2B.js} +6 -6
  52. package/dist/browser-lazy/chunks/{gitgraph-N4Y5RYB7.js → gitgraph-Z5MN6M6L.js} +4 -4
  53. package/dist/browser-lazy/chunks/{ishikawa-LD3YBDJN.js → ishikawa-UEERNFQV.js} +2 -2
  54. package/dist/browser-lazy/chunks/{journey-6YQR5DJX.js → journey-3BEWWGB5.js} +6 -6
  55. package/dist/browser-lazy/chunks/{kanban-PLMJ7NBW.js → kanban-2WFNCWLB.js} +10 -10
  56. package/dist/browser-lazy/chunks/{mermaid-yaml-runtime-QVYX4EWK.js → mermaid-yaml-runtime-IK4ET4BT.js} +8 -8
  57. package/dist/browser-lazy/chunks/{mindmap-K2UBFO3Y.js → mindmap-R2C6SNYR.js} +4 -4
  58. package/dist/browser-lazy/chunks/{packet-CUW4QY6Y.js → packet-GMVCI5YZ.js} +3 -3
  59. package/dist/browser-lazy/chunks/{pie-7F7UUCG3.js → pie-WER45DKC.js} +7 -7
  60. package/dist/browser-lazy/chunks/{quadrant-TOONO2WC.js → quadrant-NCUPSFKN.js} +4 -4
  61. package/dist/browser-lazy/chunks/{radar-J6JVWVAX.js → radar-WLYS4YC5.js} +8 -8
  62. package/dist/browser-lazy/chunks/render-core-42UVWIPF.js +3 -0
  63. package/dist/browser-lazy/chunks/{requirement-CMAKDJPO.js → requirement-AK3NWMJ6.js} +7 -7
  64. package/dist/browser-lazy/chunks/{sankey-AWXQEP3F.js → sankey-C2DY6WVU.js} +4 -4
  65. package/dist/browser-lazy/chunks/{sequence-Q2RJRB4L.js → sequence-D4WJB44W.js} +1 -1
  66. package/dist/browser-lazy/chunks/{state-WRBFQEDX.js → state-YUQVESE7.js} +2 -2
  67. package/dist/browser-lazy/chunks/{timeline-D2KILFXM.js → timeline-BMBJJXWR.js} +4 -4
  68. package/dist/browser-lazy/chunks/{treemap-N3VYX5D4.js → treemap-B66XBZZ6.js} +3 -3
  69. package/dist/browser-lazy/chunks/{xychart-G73OGK66.js → xychart-HAVFROGT.js} +6 -6
  70. package/dist/browser-lazy/chunks/{zenuml-H4BXNYXR.js → zenuml-62RLYFWP.js} +7 -7
  71. package/dist/browser-lazy/index.js +1 -1
  72. package/dist/browser.global.js +507 -507
  73. package/dist/{chunk-DQDKA5ND.js → chunk-2DNGDTJD.js} +2 -2
  74. package/dist/{chunk-GVCHLSHH.js → chunk-4F2UGYTM.js} +2 -2
  75. package/dist/{chunk-H3NCS2XZ.js → chunk-7XYB2LNC.js} +2 -2
  76. package/dist/chunk-DOFB572I.js +58 -0
  77. package/dist/chunk-EHJI3QYE.js +52 -0
  78. package/dist/{chunk-UA234O4M.js → chunk-HINRNKPO.js} +2 -2
  79. package/dist/{chunk-JZOJ4YGS.js → chunk-KXMANAST.js} +33 -33
  80. package/dist/{chunk-7CRDX2QR.js → chunk-U4MT3RRE.js} +2 -2
  81. package/dist/{chunk-NKNFOREZ.js → chunk-WYIB6BUR.js} +2 -2
  82. package/dist/{cli-YGGTJZH7.js → cli-ZYIDBYNS.js} +2 -2
  83. package/dist/{index-EeXqJXr5.d.ts → index-Bvhprdxz.d.ts} +3 -3
  84. package/dist/index.d.ts +4 -4
  85. package/dist/index.js +1 -1
  86. package/dist/{mcp-cli-63DYXTVD.js → mcp-cli-YVDCORWA.js} +2 -2
  87. package/dist/{paint-certification-6rwQjIv_.d.ts → paint-certification-BoLyr006.d.ts} +2 -2
  88. package/dist/{server-5NEOHOFS.js → server-4JGAVXR3.js} +2 -2
  89. package/dist/{svg-styles-BdnoM7AT.d.ts → svg-styles-BnCoXyYe.d.ts} +1 -1
  90. package/dist/svg-styles.d.ts +1 -1
  91. package/dist/svg-styles.js +1 -1
  92. package/dist/svg.d.ts +4 -4
  93. package/dist/svg.js +1 -1
  94. package/dist/{types-BcS52Mjt.d.ts → types-CLVJCaH2.d.ts} +1 -1
  95. package/dist/zenuml/chunks/{appearance-UOQ5KA6O.js → appearance-5RM5MVM2.js} +1 -1
  96. package/dist/zenuml/chunks/{builtin-backends-KDKE7YHO.js → builtin-backends-UTNWL4N3.js} +11 -11
  97. package/dist/zenuml/chunks/{chunk-QWX77U7G.js → chunk-3A6S6GNB.js} +2 -2
  98. package/dist/zenuml/chunks/{chunk-OXQWRSBM.js → chunk-55WS466K.js} +11 -11
  99. package/dist/zenuml/chunks/chunk-6J4BGPB2.js +29 -0
  100. package/dist/zenuml/chunks/chunk-CNLL4BGF.js +1 -0
  101. package/dist/zenuml/chunks/{chunk-RZ6XK5CD.js → chunk-IARQ24W3.js} +13 -13
  102. package/dist/zenuml/chunks/{chunk-42DXZ5C6.js → chunk-ZNZRIISS.js} +2 -2
  103. package/dist/{browser-lazy/chunks/decode-63UIZGD2.js → zenuml/chunks/decode-LDNNXEAO.js} +1 -1
  104. package/dist/zenuml/chunks/{mermaid-yaml-runtime-KZVU74WU.js → mermaid-yaml-runtime-A5CNJ3IE.js} +8 -8
  105. package/dist/zenuml/chunks/render-core-ECIWU5ZS.js +3 -0
  106. package/dist/zenuml/chunks/{zenuml-EA2ZFRUX.js → zenuml-N3LZMB2G.js} +8 -8
  107. package/dist/zenuml.d.ts +2 -2
  108. package/dist/zenuml.js +1 -1
  109. package/docs/MCP-DIRECTORY-LISTINGS.md +81 -12
  110. package/docs/api.md +1 -1
  111. package/package.json +1 -1
  112. package/server.json +2 -2
  113. package/dist/browser-lazy/chunks/chunk-4LHYF3BS.js +0 -1
  114. package/dist/browser-lazy/chunks/chunk-FAIMVOX5.js +0 -6
  115. package/dist/browser-lazy/chunks/chunk-GVOEAY52.js +0 -1
  116. package/dist/browser-lazy/chunks/chunk-J35HAQQF.js +0 -20
  117. package/dist/browser-lazy/chunks/chunk-RIVTHZAQ.js +0 -1
  118. package/dist/browser-lazy/chunks/chunk-Z3FDIVLN.js +0 -20
  119. package/dist/browser-lazy/chunks/er-7ZSKGN7Y.js +0 -11
  120. package/dist/browser-lazy/chunks/render-core-BZOM3K7D.js +0 -3
  121. package/dist/chunk-EHCMJUMD.js +0 -52
  122. package/dist/chunk-OMY6NRQD.js +0 -58
  123. package/dist/zenuml/chunks/chunk-7TVYPTDW.js +0 -1
  124. package/dist/zenuml/chunks/chunk-RLJEI7YN.js +0 -29
  125. package/dist/zenuml/chunks/render-core-V5RQ737O.js +0 -3
  126. /package/dist/browser-lazy/chunks/{chunk-5FQ534HP.js → chunk-BMZ24VPS.js} +0 -0
  127. /package/dist/browser-lazy/chunks/{chunk-2I4UPL7Q.js → chunk-D6MQ7QSU.js} +0 -0
  128. /package/dist/browser-lazy/chunks/{chunk-CQE4HQEW.js → chunk-HJVO5VC3.js} +0 -0
  129. /package/dist/browser-lazy/chunks/{chunk-LH7HUDKW.js → chunk-L4UC3KGS.js} +0 -0
  130. /package/dist/browser-lazy/chunks/{chunk-NMQQMRIR.js → chunk-MFTQWHUB.js} +0 -0
  131. /package/dist/browser-lazy/chunks/{chunk-N5ELX7LR.js → chunk-PJJSDGLB.js} +0 -0
  132. /package/dist/browser-lazy/chunks/{chunk-CSFUKSU6.js → chunk-QCU5G5PZ.js} +0 -0
  133. /package/dist/browser-lazy/chunks/{chunk-VQYYGAXP.js → chunk-TLFX3U6S.js} +0 -0
  134. /package/dist/browser-lazy/chunks/{chunk-5UVGUSD6.js → chunk-YHMTSXIR.js} +0 -0
  135. /package/dist/zenuml/chunks/{chunk-EVPSMEKN.js → chunk-GC7IPQ5P.js} +0 -0
@@ -1 +0,0 @@
1
- import{_ as n}from"./chunk-RLJEI7YN.js";var r=new WeakSet;function t(n){r.add(n)}function e(n){return r.has(n)}var a=new WeakMap;function u(r){let t=t=>r(n,t);return a.set(t,{original:r,current:r}),t}function c(n,r){let t=a.get(n)?.current;if(t){let n=a.get(r);n?n.current=t:a.set(r,{original:t,current:t})}return r}function i(n){return n&&a.get(n)?.current}function o(n){return n&&a.get(n)?.original}export{t as a,e as b,u as c,c as d,i as e,o as f};
@@ -1,29 +0,0 @@
1
- import{A as e,Aa as t,B as r,C as i,E as n,Fa as o,H as a,Ha as s,I as d,J as l,L as c,N as u,O as m,P as f,R as p,T as h,U as g,X as y,Y as b,Z as x,_ as k,b as v,c as E,d as $,e as w,ga as S,la as N,p as C,s as M,t as z,u as O,wa as T,x as j,xa as _,y as I,ya as A,z as D,za as B}from"./chunk-RZ6XK5CD.js";import{b as L}from"./chunk-EVPSMEKN.js";var P,U,F=0;function R(e,t){if(!P)return t();let r=U,i=F;U=e,F++;let n=performance.now();try{return t()}finally{let t=performance.now()-n;U=r,F=i,P(Object.freeze({stage:e,ms:t,depth:i,...r?{parent:r}:{}}))}}var W=new WeakMap;function q(e,t){let r=W.get(e)??[],i=Object.freeze({...t,attempts:Object.freeze(t.attempts.map(e=>Object.freeze({...e})))});r.some(e=>JSON.stringify(e)===JSON.stringify(i))||W.set(e,Object.freeze([...r,i]))}function G(e){return W.get(e)??Object.freeze([])}function V(e,t){let r=W.get(e);r&&W.set(t,r)}var H=class extends Error{constructor(e){super(`No certified layout after ${e.length} bounded attempts: ${e.map(e=>`${e.strategy}: ${e.violations.join("; ")}`).join(" | ")}`),this.attempts=e,this.name="LayoutCertificationError"}attempts;code="LAYOUT_CERTIFICATION_FAILED"},Z=class extends Error{constructor(e,t){super(`${e} has not loaded`),this.dependency=e,this.load=t}dependency;load};function Y(e){let t=new Set;for(;e instanceof Error&&!t.has(e);){if(e instanceof Z)return e;t.add(e),e=e.cause}}function J(e){let t=0x811c9dc5;for(let r=0;r<e.length;r++)t^=e.charCodeAt(r),t=Math.imul(t,0x1000193);return t>>>0}function K(...e){return J(e.join("|")).toString(36)}function Q(e){let t=e>>>0;return()=>{t|=0;let e=Math.imul((t=t+0x6d2b79f5|0)^t>>>15,1|t);return(((e=e+Math.imul(e^e>>>7,61|e)^e)^e>>>14)>>>0)/0x100000000}}function X(e,t,r){return J(`${e>>>0}|${t}|${r}`)}function ee(e,t){let r=iD;iD=e;try{return t()}finally{iD=r}}var et={};function er(e){return!e.includes("->")&&!/[#:"\[\],\u0000-\u001f]/.test(e)}function ei(e,...t){let r=t.map(String);return er(e)&&r.every(er)?[e,...r].join(":"):`part:${JSON.stringify([e,...r])}`}function en(e){return s(e).domIdentity}function eo(e,t){if(!en(t.role))return e;let r=e.match(/^\s*<([A-Za-z][\w:-]*)\b[^>]*>/)?.[0];if(!r||r.startsWith("<style")||r.startsWith("<defs")||r.startsWith("<svg"))return e;let i=(e,t,r)=>{let i=f(r),n=RegExp(`\\s${t}="[^"]*"`);if(n.test(e))return e.replace(n,` ${t}="${i}"`);let o=e.endsWith("/>")?"/>":">";return`${e.slice(0,-o.length).trimEnd()} ${t}="${i}"${"/>"===o?" /":""}>`},n=i(i(r,"data-id",t.id),"data-role",t.role);return void 0!==t.from&&(n=i(n,"data-from",t.from)),void 0!==t.to&&(n=i(n,"data-to",t.to)),n===r?e:e.replace(r,n)}function ea(e,t){if(!s(e.role).relation||void 0===e.from||void 0===e.to)return;let r={from:e.from,to:e.to,...t?{label:t}:{}};return{label:`${r.from} to ${r.to}${r.label?`: ${r.label}`:""}`,role:"graphics-symbol",roleDescription:"relation",relation:r}}L(et,{connector:()=>tT,definitions:()=>tA,documentClose:()=>tD,documentContent:()=>t_,documentOpen:()=>tL,documentText:()=>tI,drawPathArtwork:()=>tU,group:()=>tB,indentLines:()=>tb,pathArtwork:()=>tP,shape:()=>tN,text:()=>tj});var es=new M(256,8388608),ed=new WeakSet;function el(e,t){ed.has(e)&&ed.add(t)}function ec(e,t){return e.bold===t.bold&&e.italic===t.italic&&e.underline===t.underline&&e.strikethrough===t.strikethrough}function eu(e){let t=[],r;for(let i of e.flatMap(e=>e.fragments??e))r&&ec(r,i)?(r.text+=i.text,r.sourceEnd=i.sourceEnd):(r={...i},t.push(r));return t}function em(t,n){if(0===t.length)return 0;let o=n.safeFont?r:e,a=1!==t.length||t[0].fragments?eu(t):t,s=1===a.length?a[0].text:a.map(e=>e.text).join("");if((n.letterSpacing??0)!==0&&!/[^\x20-\x7e]/u.test(s))return ep(a,n).width;let d=n.monospace?I()?a.reduce((e,t)=>e+i(t.text,n.fontSize,0,t.bold?Math.max(700,n.fontWeight):n.fontWeight,t.italic?"italic":"normal",n.fontFamily),0):i(s,n.fontSize):a.reduce((e,t)=>e+o(t.text,n.fontSize,t.bold?Math.max(700,n.fontWeight):n.fontWeight,t.italic?"italic":"normal",n.fontFamily),0);if(!I()&&/[^\x20-\x7e]/u.test(s))return Math.max(d,a.reduce((e,t)=>e+[...t.text].reduce((e,i)=>e+(0===D(i)?0:/[^\x20-\x7e]/u.test(i)?1.2*n.fontSize:r(i,n.fontSize,t.bold?Math.max(700,n.fontWeight):n.fontWeight)),0),0)+O(s).filter(e=>/\p{M}/u.test(e)&&[...e].every(e=>0===D(e))).length*n.fontSize*1.2)+Math.max(0,[...s].length-1)*Math.abs(n.letterSpacing??0);if((n.letterSpacing??0)<0)return ep(a,n).width;let l=n.letterSpacing??0;return Math.max(0,d+(0===l?0:Math.max(0,O(s).length-1)*l))}function ef(t,n,o,a){let s=n.bold?Math.max(700,a.fontWeight):a.fontWeight,d=n.italic?"italic":"normal",l=a.safeFont?r:e;return a.monospace?i(t,a.fontSize,0,s,d,a.fontFamily):l(t,a.fontSize,s,d,a.fontFamily)-(o||I()?0:.15*a.fontSize)}function ep(e,t){let r=0,i=0,n=0;for(let o of e){let e=O(o.text);for(let[a,s]of e.entries()){let d=ef(s,o,a===e.length-1,t);i=Math.min(i,r),n=Math.max(n,r+d),r+=d+(t.letterSpacing??0)}}return{width:n-i,originX:-i}}function eh(e){let{fragments:t,...r}=e.fragments?.at(-1)??e;return{...r,text:"-",clusters:void 0}}function eg(e,t){if(a("text-spans")&&(t={display:t.display,transform:t.transform,fontSize:t.fontSize,fontWeight:t.fontWeight,letterSpacing:t.letterSpacing,maxWidth:t.maxWidth,safeFont:t.safeFont,monospace:t.monospace,fontFamily:t.fontFamily}),!Number.isFinite(t.fontSize)||t.fontSize<=0||!Number.isFinite(t.fontWeight)||!Number.isFinite(t.letterSpacing??0))throw RangeError("Prepared text requires finite typography and a positive font size");let r=a("text-spans")&&!I()&&"string"==typeof e&&e.length<=16384?JSON.stringify([e,t]):void 0;if(void 0!==r){let e=es.get(r);if(e)return e}let i=c(e,t.display,t.transform),o=t.maxWidth,s=[],d=[];for(let[e,r]of i.lines.entries()){if(e>0&&d.push({kind:"authored",sourceOffset:i.lineStarts[e]-1}),0===r.length){s.push([]);continue}if(!o||!Number.isFinite(o)||o<=0||em(r,t)<=o){s.push([...r]);continue}let n=function(e){let t=e.flatMap(e=>(e.clusters??O(e.text).map(t=>({text:t,sourceStart:e.sourceStart,sourceEnd:e.sourceEnd}))).map(t=>({...e,...t,clusters:void 0}))),r=0,i=0;return O(t.map(e=>e.text).join("")).map(e=>{let n=e.length,o=[];for(;n>0;){let e=t[r],a=Math.min(n,e.text.length-i);o.push({...e,text:e.text.slice(i,i+a)}),n-=a,(i+=a)===e.text.length&&(r++,i=0)}return{...o[0],text:e,sourceEnd:o.at(-1).sourceEnd,...o.length>1?{fragments:o}:{}}})}(r),l=a("text-spans"),c=l&&!I()?function(e,t){if(1!==e.length||t.monospace||t.letterSpacing||e[0].bold||e[0].italic||e[0].underline||e[0].strikethrough||/[^\x20-\x7e]/u.test(e[0].text))return;let r=e[0],i=e=>Number.isInteger(e)&&e>=0&&e<=0xffffffff;if(!r.clusters||r.clusters.length!==r.text.length||!i(r.sourceEnd)||r.clusters.some((e,t)=>e.text!==r.text[t]||!i(e.sourceStart)))return;let n=new Float64Array(r.text.length+1),o=new Uint32Array(r.text.length+1),a=t.fontWeight>=600?.6:t.fontWeight>=500?.57:.54;for(let e=0;e<r.text.length;e++){let i=D(r.text[e]);t.safeFont&&("W"===r.text[e]||"M"===r.text[e])&&(i+=.35),n[e+1]=n[e]+i,o[e]=r.clusters[e].sourceStart}return o[r.text.length]=r.sourceEnd,{offsets:o,width:(e,r)=>(n[r]-n[e])*t.fontSize*a+.15*t.fontSize}}(r,t):void 0,u=l?(e,r)=>{let i=c?.width(e,r);return void 0!==i&&Math.abs(i-o)>1e-8*Math.max(1,Math.abs(i),Math.abs(o))?i<o:em(n.slice(e,r),t)<=o}:void 0,m=0;for(;m<n.length;){let e=m,r=-1;if(u)for(;e<n.length&&u(m,e+1);)/\s/u.test(n[e].text)&&(r=e+1),e++;else for(;e<n.length&&em(n.slice(m,e+1),t)<=o;)/\s/u.test(n[e].text)&&(r=e+1),e++;if(e===n.length){s.push(eu(n.slice(m)));break}if(e>m&&!/\s/u.test(n[e-1].text)&&/\s/u.test(n[e]?.text??""))for(r=e;r<n.length&&/\s/u.test(n[r].text);)r++;let a=!1,l,f;if(r>m){if(n.slice(m,r).some(e=>!/\s/u.test(e.text)))for(;r<n.length&&/\s/u.test(n[r].text);)r++;for(l=e=r;l>m&&/\s/u.test(n[l-1].text);)l--;l===m?l=e:f=n.slice(l,e).map(e=>e.text).join("")}else{let r;if(r=e=Math.max(m+1,e),/[\p{Script=Latin}\p{Script=Greek}\p{Script=Cyrillic}]/u.test(n[r-1]?.text??"")&&/\p{L}/u.test(n[r]?.text??"")){for(;e>m+1&&em([...n.slice(m,e),eh(n[e-1])],t)>o;)e--;a=em([...n.slice(m,e),eh(n[e-1])],t)<=o}}let p=eu(n.slice(m,l??e)),h=c?.offsets[e]??n[e]?.sourceStart??i.source.length;a&&p.push({...eh(n[e-1]),sourceStart:h,sourceEnd:h}),s.push(p),e<n.length&&d.push({kind:a?"hyphen":"wrap",sourceOffset:h,...f?{replacedText:f}:{}}),m=e}0===n.length&&s.push([])}let l=i.lines.map(e=>e.map(e=>e.text).join("")).join(`
2
- `),u=/\p{M}/u.test(l.normalize("NFD").replace(/[\uFE0E\uFE0F]/g,""))?O(l.normalize("NFD")).reduce((e,t)=>Math.max(e,(t.replace(/[\uFE0E\uFE0F]/g,"").match(/\p{M}/gu)??[]).length),0):0,m=t.fontSize*Math.max(n,2.4*!!/[\p{Script=Arabic}\p{Script=Hebrew}]/u.test(l),u?n+.6*u:0),f=s.map((e,r)=>{var n;let o,a,s,d,l,c=e.map(e=>"literal"===i.display?e.text:z(e)).join("");e.forEach(Object.freeze);let u=!/[^\x20-\x7e]/u.test(c),f=e.some(e=>e.bold||e.italic||e.underline||e.strikethrough),p=u?(t.letterSpacing??0)!==0?(n=t,o=e.flatMap((e,t)=>O(e.text).map(e=>({runIndex:t,text:e}))),a=0,s=0,d=0,l=o.map((t,r)=>{let i=e[t.runIndex],l=o[r+1],c=!l||!ec(i,e[l.runIndex]),u=ef(t.text,i,c,n),m=Object.freeze({...t,x:a,width:u});return s=Math.min(s,a),d=Math.max(d,a+u),a+=u+(n.letterSpacing??0),m}),{width:d-s,originX:-s,fragments:Object.freeze(l)}):f?function(e,t){let r=[];for(let[t,i]of e.entries()){let n=r.at(-1);n&&ec(e[n.runIndex],i)?n.text+=i.text:r.push({runIndex:t,text:i.text})}let i=0,n=r.map(({runIndex:r,text:n})=>{let o=em([{...e[r],text:n}],t),a=Object.freeze({runIndex:r,text:n,x:i,width:o});return i+=o,a});return{width:i,originX:0,fragments:Object.freeze(n)}}(e,t):void 0:void 0;return Object.freeze({runs:Object.freeze(e),text:c,width:p?.width??em(e,t),baseline:r*m+.35*t.fontSize,originX:p?.originX??0,...p?{fragments:p.fragments}:{}})}),p=f.map(e=>e.text);Object.freeze(p),d.forEach(Object.freeze);let h=f.reduce((e,t)=>Math.max(e,t.width),0),g=Object.freeze({unit:"px",prepared:i,text:p.join(`
3
- `),lines:p,lineBlocks:Object.freeze(f),breaks:Object.freeze(d),width:h,height:p.length*m,lineHeight:m,fontSize:t.fontSize,fontWeight:t.fontWeight,letterSpacing:t.letterSpacing??0,monospace:t.monospace??!1,safeFont:t.safeFont??!1,...t.fontFamily?{fontFamily:t.fontFamily}:{}});return ed.add(g),void 0!==r&&es.set(r,g,2*r.length+128*g.prepared.source.length+256*g.lines.length+512),g}function ey(e,t,r=0){return Math.abs(e.x-t.x)<=r&&Math.abs(e.y-t.y)<=r}function eb(e,t){let r=t.x-e.x,i=t.y-e.y,n=Math.hypot(r,i);return Number.isFinite(n)&&n>0?{x:r/n,y:i/n}:void 0}function ex(e,t=!1){return"line"===e.kind?[{points:[{x:e.x1,y:e.y1},{x:e.x2,y:e.y2}],closed:!1}]:"path"===e.kind&&void 0!==e.subpaths?e.subpaths:[{points:e.points,closed:t}]}function ek(e){return"path"===e.kind&&/[AaCcQqSsTt]/.test(e.d)}function ev(e,t=!1){let r=[];for(let i of ex(e,t)){let t,n=i.points[0],o=i.points.at(-1);if(!n||!o)continue;for(let e=1;e<i.points.length&&!t;e++)t=eb(i.points[e-1],i.points[e]);let a=i.closed&&!ey(n,o);!t&&a&&(t=eb(o,n));let s=a?eb(o,n):void 0;for(let e=i.points.length-1;e>0&&!s;e--)s=eb(i.points[e-1],i.points[e]);r.push({start:"line"===e.kind?n:{...n},end:"line"===e.kind?o:{...i.closed?n:o},closed:i.closed,...t?{startTangent:t}:{},...s?{endTangent:s}:{}})}return r}function eE(e,t=!1){let r=[],i=[];for(let n of ex(e,t)){let e=n.points[0],t=n.closed?e:n.points.at(-1);e&&r.push(e),t&&i.push(t)}return{starts:r,ends:i}}function e$(e,t=!1){let r=[];for(let[i,n]of ex(e,t).entries()){for(let e=1;e<n.points.length;e++)r.push({start:n.points[e-1],end:n.points[e],subpathIndex:i,closing:!1});let e=n.points[0],t=n.points.at(-1);n.closed&&e&&t&&!ey(e,t)&&r.push({start:t,end:e,subpathIndex:i,closing:!0})}return r}function ew(e,t=!1){return"line"===e.kind?[]:"path"===e.kind?e.markerMidpoints??[]:ex(e,t).flatMap(e=>{if(e.points.length<2)return[];let t=e.closed&&ey(e.points[0],e.points.at(-1))?e.points.slice(0,-1):e.points;return e.closed?t.slice(1):t.slice(1,-1)})}function eS(e,t,r){let i=r*Math.PI/180,n=Math.cos(i),o=Math.sin(i),a=e.x-t.x,s=e.y-t.y;return{x:t.x+a*n-s*o,y:t.y+a*o+s*n}}var eN=[1,0,0,1,0,0];function eC(e){if(!e)return eN;if("matrix"===e.kind)return[e.a,e.b,e.c,e.d,e.e,e.f];let t=e.angle*Math.PI/180,r=Math.cos(t),i=Math.sin(t);return[r,i,-i,r,e.cx-r*e.cx+i*e.cy,e.cy-i*e.cx-r*e.cy]}function eM(e,t){return[e[0]*t[0]+e[2]*t[1],e[1]*t[0]+e[3]*t[1],e[0]*t[2]+e[2]*t[3],e[1]*t[2]+e[3]*t[3],e[0]*t[4]+e[2]*t[5]+e[4],e[1]*t[4]+e[3]*t[5]+e[5]]}function ez(e,t){return{x:t[0]*e.x+t[2]*e.y+t[4],y:t[1]*e.x+t[3]*e.y+t[5]}}function eO(e){let t=e[0]*e[3]-e[1]*e[2];if(!(!Number.isFinite(t)||0===t))return[e[3]/t,-e[1]/t,-e[2]/t,e[0]/t,(e[2]*e[5]-e[3]*e[4])/t,(e[1]*e[4]-e[0]*e[5])/t]}function eT(e){let t=eN,r=0;for(let i of e.matchAll(/([A-Za-z]+)\s*\(([^()]*)\)/g)){let n;if(e.slice(r,i.index).trim())return;r=i.index+i[0].length;let o=i[2].trim();if(!o||/^(?:,)|(?:,)$|,\s*,/.test(o)||!/^[-+\d.eE,\s]+$/.test(o))return;let a=o.split(/[\s,]+/).map(Number);if(!a.every(Number.isFinite))return;if("matrix"===i[1]&&6===a.length)n=a;else if("translate"===i[1]&&(1===a.length||2===a.length))n=[1,0,0,1,a[0],a[1]??0];else if("scale"===i[1]&&(1===a.length||2===a.length))n=[a[0],0,0,a[1]??a[0],0,0];else{if("rotate"!==i[1]||1!==a.length&&3!==a.length)return;n=eC({kind:"rotate",angle:a[0],cx:a[1]??0,cy:a[2]??0})}t=eM(t,n)}return r>0&&!e.slice(r).trim()?t:void 0}function ej(e){return"rotate"===e.kind?`rotate(${e.angle} ${e.cx} ${e.cy})`:`matrix(${e.a} ${e.b} ${e.c} ${e.d} ${e.e} ${e.f})`}function e_(e){if(0!==e.length)return{x0:Math.min(...e.map(e=>e.x)),y0:Math.min(...e.map(e=>e.y)),x1:Math.max(...e.map(e=>e.x)),y1:Math.max(...e.map(e=>e.y))}}function eI(e,t){return e?t?{x0:Math.min(e.x0,t.x0),y0:Math.min(e.y0,t.y0),x1:Math.max(e.x1,t.x1),y1:Math.max(e.y1,t.y1)}:e:t}function eA(e,t){let r=Number.isFinite(t)?Math.max(0,t):0;return{x0:e.x0-r,y0:e.y0-r,x1:e.x1+r,y1:e.y1+r}}function eD(e,t,r){let i=/[+-]?(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?/y,n=0,o=0,a=0,s=0,d=0,l="",c="",u,m,f,p=!1,h=e=>{if(r){for(let t=0;t<e;t++)if(!r())return p=!0,!1}return!0},g=()=>{for(;n<e.length&&/[\s,]/.test(e[n]);){if(!h(1))return;n++}},y=(t=!1)=>{if(g(),p)return;if(t){let t=e[n];return("0"===t||"1"===t)&&h(1)?(n++,Number(t)):void 0}i.lastIndex=n;let r=i.exec(e);if(!r||!h(r[0].length))return;n=i.lastIndex;let o=Number(r[0]);return Number.isFinite(o)?o:void 0},b=(e,r)=>!!Number.isFinite(e)&&!!Number.isFinite(r)&&(m=eI(m,{x0:e,y0:r,x1:e,y1:r}),t&&(f=eI(f,{x0:e,y0:r,x1:e,y1:r})),!0);for(;;){if(g(),p)return;if(n>=e.length)return m;if(/[a-zA-Z]/.test(e[n])){if(!h(1)||(l=e[n++],!/[MmLlHhVvCcSsQqTtAaZz]/.test(l)||!m&&"M"!==l.toUpperCase()))return;if("Z"===l.toUpperCase()){if(t&&!t({bounds:{x0:Math.min(o,s),y0:Math.min(a,d),x1:Math.max(o,s),y1:Math.max(a,d)},line:[{x:o,y:a},{x:s,y:d}]}))return;o=s,a=d,c="Z",u=void 0,l="";continue}}if(!l)return;let r=l.toUpperCase(),i=l!==r;t&&(f={x0:o,y0:a,x1:o,y1:a});let x="A"===r?7:"C"===r?6:"S"===r||"Q"===r?4:"H"===r||"V"===r?1:2,k=[];for(let e=0;e<x;e++){let t=y("A"===r&&(3===e||4===e));if(void 0===t)return;k.push(t)}let v=e=>k[e]+(i?o:0),E=e=>k[e]+(i?a:0),$,w,S;if("H"===r)$=v(0),w=a;else if("V"===r)$=o,w=E(0);else if("C"===r||"S"===r||"Q"===r||"T"===r){let e=u&&("S"===r?"C"===c||"S"===c:"Q"===c||"T"===c)?{x:2*o-u.x,y:2*a-u.y}:{x:o,y:a};if(("S"===r||"T"===r)&&!b(e.x,e.y))return;for(let e=0;e<x-2;e+=2)if(!b(v(e),E(e+1)))return;$=v(x-2),w=E(x-1),S="T"===r?e:{x:v(x-4),y:E(x-3)}}else if("A"===r){$=v(5),w=E(6);let e=Math.abs(k[0]),t=Math.abs(k[1]);if(e>0&&t>0&&($!==o||w!==a)){let r=k[2]%360*Math.PI/180,i=Math.cos(r),n=Math.sin(r),s=(o-$)/2,d=(a-w)/2,l=i*s+n*d,c=-n*s+i*d,u=Math.hypot(l/e,c/t);u>1&&(e*=u,t*=u);let m=(l/e)**2+(c/t)**2,f=(k[3]===k[4]?-1:1)*Math.sqrt(Math.max(0,(1-m)/m)),p=f*e*c/t,h=-f*t*l/e,g=i*p-n*h+(o+$)/2,y=n*p+i*h+(a+w)/2,x=Math.hypot(e*i,t*n),v=Math.hypot(e*n,t*i);if(!b(g-x,y-v)||!b(g+x,y+v))return}}else $=v(0),w=E(1),"M"===r&&(s=$,d=w,l=i?"l":"L");if(!b($,w)||t&&"M"!==r&&!t({bounds:f,...["L","H","V"].includes(r)?{line:[{x:o,y:a},{x:$,y:w}]}:{}}))return;o=$,a=w,u=S,c=r}}function eB(e,t,r){return void 0!==eD(e,t,r)}function eL(e){switch(e.kind){case"rect":return{x0:e.x,y0:e.y,x1:e.x+e.width,y1:e.y+e.height};case"circle":return{x0:e.cx-e.r,y0:e.cy-e.r,x1:e.cx+e.r,y1:e.cy+e.r};case"ellipse":return{x0:e.cx-e.rx,y0:e.cy-e.ry,x1:e.cx+e.rx,y1:e.cy+e.ry};case"line":return{x0:Math.min(e.x1,e.x2),y0:Math.min(e.y1,e.y2),x1:Math.max(e.x1,e.x2),y1:Math.max(e.y1,e.y2)};case"polygon":case"polyline":return e_(e.points);case"compound":{let t;for(let r of e.children){let e=eL(r);if(!e)return;t=eI(t,e)}return t}case"path":return eD(e.d)}}function eP(e,t,r,i=!1,n){if(!e||!t)return;let o=e.geometry?eL(e.geometry):void 0;if(i&&e.geometry&&!o)return;let a=e.bounds??o??(e.viewBox?{x0:e.viewBox.x,y0:e.viewBox.y,x1:e.viewBox.x+e.viewBox.width,y1:e.viewBox.y+e.viewBox.height}:void 0)??(e.size?{x0:0,y0:0,x1:e.size.width,y1:e.size.height}:void 0);if(!a)return;if(i){a=eI(a,o);let t=eZ(e.paint??{},!0);if(void 0===t)return;a=eA(a,t)}let s=e.ref?.x??0,d=e.ref?.y??0,l=a;if(e.viewBox&&e.size){let t=Math.min(e.size.width/e.viewBox.width,e.size.height/e.viewBox.height),r=(e.size.width-e.viewBox.width*t)/2,i=(e.size.height-e.viewBox.height*t)/2,n=i=>r+(i-e.viewBox.x)*t,o=r=>i+(r-e.viewBox.y)*t;l={x0:n(a.x0),y0:o(a.y0),x1:n(a.x1),y1:o(a.y1)},s=n(s),d=o(d)}let c=(e.units??"strokeWidth")==="strokeWidth"?r:1,u=Math.max(+!!i,e.scale??1)*c;if(void 0!==n){let e=n*Math.PI/180,r=Math.cos(e),i=Math.sin(e),o=[[l.x0,l.y0],[l.x0,l.y1],[l.x1,l.y0],[l.x1,l.y1]].map(([e,n])=>({x:t.x+((e-s)*r-(n-d)*i)*u,y:t.y+((e-s)*i+(n-d)*r)*u}));return o.every(e=>Number.isFinite(e.x)&&Number.isFinite(e.y))?e_(o):void 0}let m=Math.max(Math.abs(l.x0-s),Math.abs(l.x1-s)),f=Math.max(Math.abs(l.y0-d),Math.abs(l.y1-d)),p=(i?Math.hypot(m,f):Math.max(m,f))*u;return{x0:t.x-p,y0:t.y-p,x1:t.x+p,y1:t.y+p}}function eU(e,t){let r=e.route.geometry,i=eE(r,e.route.closed),n=ew(r,e.route.closed),o=eV(t,e.transform),a=[],s=(t,i,n,s)=>{if(!i||!n)return;let d="number"==typeof i.orient?i.orient:s?180*Math.atan2(s.y,s.x)/Math.PI+180*("start"===t&&"auto-start-reverse"===i.orient):void 0,l=eF(e.stroke.width),c=eP(i,n,l,!0,d),u=eC(o),m=JSON.stringify([{...i,orient:i.orient??"auto"},d??["unknown",r],"userSpaceOnUse"===i.units?1:l,u.slice(0,4)]),f,p;if(void 0!==d&&i.geometry?.kind==="polygon"&&i.geometry.points.length<=64){let e=(i.viewBox&&i.size?Math.min(i.size.width/i.viewBox.width,i.size.height/i.viewBox.height):1)*Math.max(1,i.scale??1)*("userSpaceOnUse"===i.units?1:l),t=d*Math.PI/180,r=Math.cos(t),o=Math.sin(t);f=i.geometry.points.map(t=>{let a=(t.x-(i.ref?.x??0))*e,s=(t.y-(i.ref?.y??0))*e;return ez({x:n.x+a*r-s*o,y:n.y+a*o+s*r},u)});let[a,s,c,m]=u,h=(Math.hypot(a+m,s-c)+Math.hypot(a-m,s+c))/2,g=eZ(i.paint??{},!0);void 0!==(p=void 0===g?void 0:g*e*h)&&Number.isFinite(p)&&f.every(e=>Number.isFinite(e.x)&&Number.isFinite(e.y))||(f=void 0)}a.push({position:t,resource:i.id,anchor:ez(n,u),repaint:m,...f?{hull:f,padding:p}:{},...c?{bounds:eG(c,o)}:{}})};if(i.starts.forEach((t,r)=>s("start",e.markers.start,t,e.route.contours[r]?.startTangent)),i.ends.forEach((t,r)=>s("end",e.markers.end,t,e.route.contours[r]?.endTangent)),1===e.markers.mid.length)for(let t of n)s("mid",e.markers.mid[0],t);else e.markers.mid.forEach((e,t)=>s("mid",e,n[t]));return a}function eF(e){let t="number"==typeof e?e:parseFloat(e);return Number.isFinite(t)?Math.max(0,t):1}var eR=new WeakMap;function eW(e){let t=l(e.text,e.textContent),r="string"==typeof t?t:t.source;if(e.block){let t=e.block;if(t.prepared.source!==r||void 0!==e.fontSize&&e.fontSize!==t.fontSize||void 0!==e.fontWeight&&e.fontWeight!==t.fontWeight||void 0!==e.letterSpacing&&e.letterSpacing!==t.letterSpacing||void 0!==e.display&&e.display!==t.prepared.display)throw TypeError("Connector inline label typography and source must agree with its prepared block");return t}let i=e.fontSize??12,n=e.fontWeight??400,o=e.letterSpacing??0,a=e.display??"literal",s=eR.get(e);if(s&&("string"==typeof t?s.prepared.source===r:s.prepared===t)&&s.fontSize===i&&s.fontWeight===n&&s.letterSpacing===o&&s.prepared.display===a)return s;let d=eg(t,{display:a,fontSize:i,fontWeight:n,letterSpacing:o});return eR.set(e,d),d}function eq(e){if(e.visual?.kind!=="inline"||!e.anchor||void 0===e.fontSize||void 0===e.textAnchor)return;let t=eW(e),r=t.width,i="middle"===e.textAnchor?e.anchor.x-r/2:"end"===e.textAnchor?e.anchor.x-r:e.anchor.x,n=e.anchor.y-Math.max(0,e.clearance??0),o=Math.max(0,e.halo?.width??0)/2;return eA({x0:i,y0:n-.35*t.fontSize-t.height/2,x1:i+r,y1:n-.35*t.fontSize+t.height/2},o)}function eG(e,t){if(![e.x0,e.y0,e.x1,e.y1].every(Number.isFinite))return;if(!t)return e;if("rotate"===t.kind)return function(e,t,r){if(r%360==0)return{...e};let i=[eS({x:e.x0,y:e.y0},t,r),eS({x:e.x1,y:e.y0},t,r),eS({x:e.x0,y:e.y1},t,r),eS({x:e.x1,y:e.y1},t,r)];return{x0:Math.min(...i.map(e=>e.x)),y0:Math.min(...i.map(e=>e.y)),x1:Math.max(...i.map(e=>e.x)),y1:Math.max(...i.map(e=>e.y))}}(e,{x:t.cx,y:t.cy},t.angle);let r=eC(t),i=e.x0,n=e.y0,o=e.x0,a=e.y1,s=e.x1,d=e.y0,l=e.x1,c=e.y1;if(1===r[0]&&0===r[1]&&0===r[2]&&1===r[3]&&i===o&&n===d&&s===l&&a===c&&0!==i&&0!==n&&0!==s&&0!==a&&Number.isFinite(i)&&Number.isFinite(n)&&Number.isFinite(s)&&Number.isFinite(a)){let e=ez({x:i,y:n},r),t=ez({x:l,y:c},r);return Number.isFinite(e.x)&&Number.isFinite(e.y)&&Number.isFinite(t.x)&&Number.isFinite(t.y)?{x0:Math.min(e.x,t.x),y0:Math.min(e.y,t.y),x1:Math.max(e.x,t.x),y1:Math.max(e.y,t.y)}:void 0}let u=[[i,n],[o,a],[s,d],[l,c]].map(([e,t])=>ez({x:e,y:t},r));return u.every(e=>Number.isFinite(e.x)&&Number.isFinite(e.y))?e_(u):void 0}function eV(e,t){if(!e)return t;if(!t)return e;let[r,i,n,o,a,s]=eM(eC(e),eC(t));return{kind:"matrix",a:r,b:i,c:n,d:o,e:a,f:s}}function eH(e){return"line"!==e.geometry.kind&&!("polyline"===e.geometry.kind&&2===e.geometry.points.length&&!e.closed)}function eZ(e,t){if(void 0===e.stroke||"none"===e.stroke||"transparent"===e.stroke||C(e.stroke)?.[3]===0)return 0;let r=e.strokeWidth??"1";if(!/^\s*(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?(?:px)?\s*$/.test(r))return;let i=Number.parseFloat(r)/2;if(!Number.isFinite(i))return;let n=e.strokeLinejoin??"miter",o=Number(e.strokeMiterlimit??4);if(!Number.isFinite(o)||o<1)return;let a=Math.max(t&&("miter"===n||"miter-clip"===n)?i*o:i,"square"===e.strokeLinecap?i*Math.SQRT2:i);return Number.isFinite(a)?a:void 0}function eY(e,t,r,i){if(!r)return eG(eA(e,t),i);let n=eG(e,i);return n?eA(n,t):void 0}function eJ(e,t,r,i,n,o){return"line"!==e.kind||n?eY(t,r,n,o):eG(function(e,t,r){let i=eL(e),n=Math.hypot(e.x2-e.x1,e.y2-e.y1);if(void 0!==r&&"butt"!==r||0===n)return eA(i,t);let o=t*Math.abs(e.y2-e.y1)/n,a=t*Math.abs(e.x2-e.x1)/n;return{x0:i.x0-o,y0:i.y0-a,x1:i.x1+o,y1:i.y1+a}}(e,r,i),o)}function eK(e,t,r,i){let n=0;for(let o=0;o<32;o++){let a,s=o/32,d=(o+1)/32,l=e=>Math.min(d,Math.max(s,e)),c=r=>e*(1-r)**2+t*(1+r+r*r),u=6*r*Math.min(s*(1-s),d*(1-d)),m=6*i*r*d/Math.hypot((a=l(e/(e+t)),3*(e*(1-a)**2+t*a*a)),u)-c(l((2*e-t)/(2*(e+t))));m>0&&(n=Math.max(n,(1-s)*m))}return Math.min(i,n)}function eQ(e,t){return function e(t,r){let i,n=eV(r,t.transform);if(!n||eO(eC(n))){if("shape"===t.kind){if(!(i=eL(t.geometry)))return;let e=["polygon","polyline","path","compound"].includes(t.geometry.kind),r;for(let o of[t.paint,...t.childPaints??[]]){let a=eZ(o,e),s=void 0===a?void 0:eJ(t.geometry,i,a,o.strokeLinecap,"non-scaling-stroke"===o.vectorEffect,n);if(!s)return;r=r?eI(r,s):s}if(!t.conditionalPaint)return r;let o=eZ(t.conditionalPaint,["polygon","polyline","path","compound"].includes(t.geometry.kind));if(!r||void 0===o)return;let a=eJ(t.geometry,i,o,t.conditionalPaint.strokeLinecap,"non-scaling-stroke"===t.conditionalPaint.vectorEffect,n);return a?eI(r,a):void 0}if("connector"===t.kind)return function(e,t){let r=e.route.geometry,i=eL(r),n=eZ({stroke:e.stroke.color,strokeWidth:String(e.stroke.width),strokeLinecap:e.stroke.lineCap,strokeLinejoin:e.stroke.lineJoin,strokeMiterlimit:String(e.stroke.miterLimit)},eH(e.route));if(!i||void 0===n)return;let o="path"!==r.kind||"butt"!==e.stroke.lineCap||e.stroke.nonScaling?void 0:function(e,t){if(!/^[\s,0-9eE.+\-MC]+$/.test(e))return;let r=e.match(/[MC]|[+-]?(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?/g);if(!r||10!==r.length||"M"!==r[0]||"C"!==r[3])return;let i=r.filter(e=>"M"!==e&&"C"!==e).map(Number);if(!i.every(Number.isFinite))return;let[n,o,a,s,d,l,c,u]=i;if(a!==d||s!==o||l!==u||!((a-n)*(c-a)>0))return;let m=Math.abs(a-n),f=Math.abs(c-a),p=Math.abs(u-o),h=Math.sign(c-n),g=[n-h*eK(f,m,p,t),c+h*eK(m,f,p,t)];return{x0:Math.min(...g),y0:Math.min(o,u)-t,x1:Math.max(...g),y1:Math.max(o,u)+t}}(r.d,eF(e.stroke.width)/2),a=o?eG(o,t):eY(i,n,e.stroke.nonScaling,t);if(!a)return;let s=eF(e.stroke.width),d=eE(r,e.route.closed),l=ew(r,e.route.closed);for(let{marker:r,anchor:i}of[...d.starts.flatMap(t=>e.markers.start?[{marker:e.markers.start,anchor:t}]:[]),...d.ends.flatMap(t=>e.markers.end?[{marker:e.markers.end,anchor:t}]:[]),...1===e.markers.mid.length?l.map(t=>({marker:e.markers.mid[0],anchor:t})):e.markers.mid.map((e,t)=>({marker:e,anchor:l[t]}))]){let e=eP(r,i,s,!0),n=e&&eG(e,t);if(!n)return;a=eI(a,n)}for(let r of e.labels){let e=eI(r.bounds,eq(r));if(r.visual?.kind==="inline"&&!e)return;if(e){let r=eG(e,t);if(!r)return;a=eI(a,r)}}return a}(t,n);if("text"===t.kind){i=function(e){let t;if("shape"===e.kind)t=eL(e.geometry);else if("connector"===e.kind)t=function(e){let t=e.route.geometry,r="path"===t.kind?e_(t.points):eL(t);if(!r)return;let i=eF(e.stroke.width),n=i/2;r=eA(r,"miter"===e.stroke.lineJoin||"miter-clip"===e.stroke.lineJoin?n*Math.max(1,e.stroke.miterLimit):n);let o=eE(t,e.route.closed);for(let t of o.starts)r=eI(r,eP(e.markers.start,t,i));for(let t of o.ends)r=eI(r,eP(e.markers.end,t,i));let a=ew(t,e.route.closed);if(1===e.markers.mid.length)for(let t of a)r=eI(r,eP(e.markers.mid[0],t,i));else for(let t=0;t<e.markers.mid.length;t++)r=eI(r,eP(e.markers.mid[t],a[t],i));for(let t of e.labels)t.bounds&&(r=eI(r,t.bounds)),r=eI(r,eq(t));return r}(e);else{if("text"!==e.kind)return;let r=e.textLayout??eg(e.text,{display:e.display,fontSize:e.fontSize,fontWeight:e.fontWeight??500,letterSpacing:e.letterSpacing}),i=r.width,n="middle"===e.anchor?e.x-i/2:"end"===e.anchor?e.x-i:e.x,o="offsetY"in r?r.offsetY:-(.35*e.fontSize);t={x0:n,y0:e.y+o-r.height/2,x1:n+i,y1:e.y+o+r.height/2}}return t?eG(t,e.transform):void 0}({...t,transform:void 0});let e=eZ(t.paint,!1);return i&&void 0!==e?eY(i,e,"non-scaling-stroke"===t.paint.vectorEffect,n):void 0}if("group"!==t.kind)return;for(let r of t.children){if("document"===r.node.kind&&r.node.nonPaint)continue;let t=e(r.node,n);if(!t)return;i=eI(i,t)}return i}}(e,t)}function eX(e,t,r){return!r||Object.hasOwn(e,t)?e[t]:void 0}function e0(e,t){return e?{...e,...eX(e,"geometry",t)?{geometry:eX(e,"geometry",t)}:{},...eX(e,"size",t)?{size:{...eX(e,"size",t)}}:{},...eX(e,"viewBox",t)?{viewBox:{...eX(e,"viewBox",t)}}:{},...eX(e,"ref",t)?{ref:{...eX(e,"ref",t)}}:{},...eX(e,"bounds",t)?{bounds:{...eX(e,"bounds",t)}}:{},...eX(e,"paint",t)?{paint:{...eX(e,"paint",t)}}:{}}:void 0}function e1(e,t){let r=eX(e,"owner",t),i=eX(e,"point",t);return{...e,...r?{owner:{...r}}:{},...i?{point:{...i}}:{}}}function e2(e,t=!1){if(t&&"path"===e.geometry.kind)throw TypeError("Deferred terminal projections require line or polyline geometry");let r=function(e,t,r=!1){let i=["continuous-geometry","stroke-width","stroke-cap","stroke-join"];e.bendRadius>0&&i.push("bend-radius"),void 0!==eX(t,"opacity",r)&&i.push("stroke-opacity"),("miter"===t.lineJoin||"miter-clip"===t.lineJoin)&&i.push("stroke-miter"),eX(t,"dash",r)&&i.push("dash-pattern");let n=eX(t,"dash",r);return n&&void 0!==eX(n,"offset",r)&&i.push("dash-offset"),void 0!==eX(t,"pathLength",r)&&i.push("path-length"),void 0!==eX(t,"paintOrder",r)&&i.push("paint-order"),/^url\(#[A-Za-z_][A-Za-z0-9_.:-]*\)$/.test(t.color)&&i.push("gradient-paint"),void 0!==eX(t,"mixBlendMode",r)&&"normal"!==eX(t,"mixBlendMode",r)&&i.push("mix-blend-mode"),eX(t,"nonScaling",r)&&i.push("non-scaling-stroke"),i}(e.route,e.stroke,t),i=function(e,t=!1){let r=[],i=[];return ex(e,t).forEach((e,t)=>{let n=e.points[0],o=e.closed?n:e.points.at(-1);n&&r.push({point:{...n},contourIndex:t}),o&&i.push({point:{...o},contourIndex:t})}),{starts:r,ends:i}}(e.geometry,e.route.closed),n=function(e,t=!1){if("line"===e.kind)return[];let r=ex(e,t);return"path"===e.kind?(e.markerMidpoints??[]).map(e=>{if(1===r.length)return{point:{...e},contourIndex:0};let t=r.flatMap((t,r)=>t.points.some(t=>ey(t,e))?[r]:[]);if(1!==t.length)throw TypeError("Path marker-mid vertices on multiple subpaths must belong to exactly one typed contour");return{point:{...e},contourIndex:t[0]}}):r.flatMap((e,t)=>{if(e.points.length<2)return[];let r=e.closed&&ey(e.points[0],e.points.at(-1))?e.points.slice(0,-1):e.points;return(e.closed?r.slice(1):r.slice(1,-1)).map(e=>({point:{...e},contourIndex:t}))})}(e.geometry,e.route.closed),o=eX(e.stroke,"dash",t),a={start:eX(e.markers,"start",t)?i.starts.map(r=>({markerId:eX(e.markers,"start",t).id,point:{...r.point},contourIndex:r.contourIndex})):[],mid:0===e.markers.mid.length?[]:n.map((t,r)=>({markerId:(1===e.markers.mid.length?e.markers.mid[0]:e.markers.mid[r]).id,point:{...t.point},contourIndex:t.contourIndex})),end:eX(e.markers,"end",t)?i.ends.map(r=>({markerId:eX(e.markers,"end",t).id,point:{...r.point},contourIndex:r.contourIndex})):[]};return{realization:"invisible"===e.lineStyle?"unsupported":"projected",topology:e.geometry.kind,geometry:e.geometry,direction:e.relationship.direction,relationship:e.relationship.kind,markers:{...eX(e.markers,"start",t)?{start:e0(eX(e.markers,"start",t),t)}:{},mid:e.markers.mid.map(e=>e0(e,t)),...eX(e.markers,"end",t)?{end:e0(eX(e.markers,"end",t),t)}:{}},markerPlacements:a,endpoints:{...e.endpoints,...eX(e.endpoints,"start",t)?{start:e1(eX(e.endpoints,"start",t),t)}:{},...eX(e.endpoints,"end",t)?{end:e1(eX(e.endpoints,"end",t),t)}:{}},route:{ownership:e.route.ownership,closed:e.route.closed,bendRadius:e.route.bendRadius,contours:e.route.contours.map(e=>({...e,start:{...e.start},end:{...e.end},...eX(e,"startTangent",t)?{startTangent:{...eX(e,"startTangent",t)}}:{},...eX(e,"endTangent",t)?{endTangent:{...eX(e,"endTangent",t)}}:{}})),...eX(e.route,"startTangent",t)?{startTangent:{...eX(e.route,"startTangent",t)}}:{},...eX(e.route,"endTangent",t)?{endTangent:{...eX(e.route,"endTangent",t)}}:{},labelAnchors:e.route.labelAnchors.map(e=>({...e}))},stroke:{...e.stroke,...o?{dash:{...o,array:Array.isArray(o.array)?[...o.array]:o.array}}:{}},hit:{...e.hit,geometry:e.hit.geometry},...eX(e,"transform",t)?{transform:{...eX(e,"transform",t)}}:{},labels:e.labels.map(e=>({...e,...eX(e,"anchor",t)?{anchor:{...eX(e,"anchor",t)}}:{},...eX(e,"bounds",t)?{bounds:{...eX(e,"bounds",t)}}:{},...eX(e,"halo",t)?{halo:{...eX(e,"halo",t)}}:{},...eX(e,"paint",t)?{paint:{...eX(e,"paint",t)}}:{},...eX(e,"visual",t)?{visual:{...eX(e,"visual",t)}}:{}})),lineStyle:e.lineStyle,strokeLosses:r,diagnostics:["invisible"===e.lineStyle?"This connector affects layout but is intentionally absent from terminal output.":`The terminal grid preserves connector semantics while projecting continuous stroke fields: ${r.join(", ")}.`,...eX(e,"additionalDiagnostics",t)??[]]}}var e3=new WeakMap,e5=0;function e4(e){e5++;try{return e()}finally{e5--}}var e6={enumerable:!0,configurable:!0,get(){let e=e3.get(this);if(Object.hasOwn(e,"projection"))return e.projection;let t=e2(e,!0);return e3.set(this,{projection:t}),t},set(e){if(Object.isFrozen(this))throw TypeError("Cannot assign to readonly terminalProjection");Object.defineProperty(this,"terminalProjection",{value:e,enumerable:!0,configurable:!0,writable:!0}),e3.delete(this)}};function e8(e,t){e3.set(e,t),Object.defineProperty(e,"terminalProjection",e6)}function e7(e){let t=e3.get(e);return!t||Object.hasOwn(t,"projection")?void 0:Object.getOwnPropertyDescriptor(e,"terminalProjection")?.get===e6.get?t:void 0}function e9(e,t){let r=e7(e);return!!r&&(e8(t,r),!0)}function te(e,t){let r=[...e].map(e=>e.codePointAt(0)),i=[...t].map(e=>e.codePointAt(0)),n=Math.min(r.length,i.length);for(let e=0;e<n;e++){let t=r[e]-i[e];if(0!==t)return t}return r.length-i.length}var tt=class{value="";raw(e){this.value+=e}attribute(e,t){this.value+=` ${e}="${"number"==typeof t?h(t):f(g(e,t))}"`}},tr=new Set(["id","role","from","to","relationship","direction","prepared-text","font-metrics","text-fragment","connector-label-for"]),ti=/^[A-Za-z0-9_-]+(?: [A-Za-z0-9_-]+)*$/,tn=/^[a-z][a-z0-9-]*$/;function to(e,t){if(t){if(t.className&&e.attribute("class",t.className),t.data)for(let r of Object.keys(t.data))e.attribute(`data-${r}`,t.data[r]);t.ariaHidden&&e.attribute("aria-hidden","true"),0===t.tabIndex&&e.attribute("tabindex",0),void 0!==t.ariaLabel&&e.attribute("aria-label",t.ariaLabel)}}function ta(e,t){void 0!==t.fill&&e.attribute("fill",t.fill),void 0!==t.fillOpacity&&e.attribute("fill-opacity",t.fillOpacity),void 0!==t.stroke&&e.attribute("stroke",t.stroke),void 0!==t.strokeOpacity&&e.attribute("stroke-opacity",t.strokeOpacity),void 0!==t.strokeWidth&&e.attribute("stroke-width",t.strokeWidth),void 0!==t.strokeDasharray&&e.attribute("stroke-dasharray",t.strokeDasharray),void 0!==t.strokeDashoffset&&e.attribute("stroke-dashoffset",t.strokeDashoffset),void 0!==t.strokeLinecap&&e.attribute("stroke-linecap",t.strokeLinecap),void 0!==t.strokeLinejoin&&e.attribute("stroke-linejoin",t.strokeLinejoin),void 0!==t.strokeMiterlimit&&e.attribute("stroke-miterlimit",t.strokeMiterlimit),void 0!==t.vectorEffect&&e.attribute("vector-effect",t.vectorEffect),void 0!==t.paintOrder&&e.attribute("paint-order",t.paintOrder),void 0!==t.opacity&&e.attribute("opacity",t.opacity)}function ts(e,t){t&&e.attribute("transform",ej(t))}function td(e,t,r){t&&en(t.role)&&(e.attribute("data-id",t.id),e.attribute("data-role",t.role),void 0!==t.from&&e.attribute("data-from",t.from),void 0!==t.to&&e.attribute("data-to",t.to)),r&&(e.attribute("role",r.role),e.attribute("aria-roledescription",r.roleDescription),e.attribute("aria-label",r.label))}function tl(e,t){switch(t.kind){case"rect":e.attribute("x",t.x),e.attribute("y",t.y),e.attribute("width",t.width),e.attribute("height",t.height),void 0!==t.rx&&e.attribute("rx",t.rx),void 0!==t.ry&&e.attribute("ry",t.ry);return;case"circle":e.attribute("cx",t.cx),e.attribute("cy",t.cy),e.attribute("r",t.r);return;case"ellipse":e.attribute("cx",t.cx),e.attribute("cy",t.cy),e.attribute("rx",t.rx),e.attribute("ry",t.ry);return;case"line":e.attribute("x1",t.x1),e.attribute("y1",t.y1),e.attribute("x2",t.x2),e.attribute("y2",t.y2);return;case"polygon":case"polyline":{let r="";for(let e=0;e<t.points.length;e++){let i=t.points[e];r+=`${e?" ":""}${i.x},${i.y}`}e.attribute("points",r);return}case"path":e.attribute("d",t.d)}}var tc=new WeakMap,tu=new WeakSet,tm=new WeakMap,tf=/<\s*text/i;function tp(e){if(!e.includes("<svg"))return e;let t="",r=0;for(;r<e.length;){let i=e.indexOf("<",r);if(i<0)return t+e.slice(r);if(t+=e.slice(r,i),e.startsWith("\x3c!--",i)){let n=e.indexOf("--\x3e",i+4);if(n<0)return t+e.slice(i);t+=e.slice(i,n+3),r=n+3;continue}let n,o=i+1;for(;o<e.length;o++){let t=e[o];if(n)t===n&&(n=void 0);else if('"'===t||"'"===t)n=t;else if(">"===t)break}if(o>=e.length)return t+e.slice(i);t+=function(e){let t=e.match(/^<([A-Za-z_][A-Za-z0-9_.:-]*)/);if(!t||e.startsWith("</")||e.startsWith("<!")||e.startsWith("<?"))return e;let r=t[1];if("svg"!==r)return e;let i=/\/\s*>$/.test(e),n=i?e.lastIndexOf("/"):e.length-1,o=[],a=t[0].length;for(;a<n;){for(;/\s/.test(e[a]??"");)a++;if(a>=n)break;let t=e.slice(a).match(/^([^\s=<>/]+)/);if(!t)return e;let r=t[1];for(a+=t[0].length;/\s/.test(e[a]??"");)a++;if("="!==e[a])return e;for(a++;/\s/.test(e[a]??"");)a++;let i=e[a];if('"'!==i&&"'"!==i)return e;let s=++a;for(;a<n&&e[a]!==i;)a++;if(e[a]!==i)return e;let d=e.slice(s,a);a++,o.push({name:r,value:'"'===i?d:d.replaceAll('"',"&quot;"),index:o.length})}let s=new Map([["xmlns",0],["width",1],["height",2],["viewBox",3],["style",4]]);o.sort((e,t)=>(s.get(e.name)??100)-(s.get(t.name)??100)||te(e.name,t.name)||e.index-t.index);let d=o.map(e=>`${e.name}="${e.value}"`).join(" ");return`<${r}${d?` ${d}`:""}${i?" /":""}>`}(e.slice(i,o+1)),r=o+1}return t}function th(e,t){if("document"!==e.kind)throw TypeError(`Scene ${e.kind} "${e.id}" is written from its fields, not stored markup`);return tc.set(e,tp(t)),e}function tg(e){return tu.add(e),e}function ty(e){let t=tc.get(e);if(void 0!==t)return t;if(!tu.has(e))throw TypeError(`Scene node "${e.id}" has no admitted SVG serialization`);let r=tm.get(e);if(void 0!==r)return r;let i=function(e){switch(e.kind){case"shape":return function(e){let t=new tt,r="compound"===e.geometry.kind,i="compound"===e.geometry.kind?e.geometry.children:[e.geometry];for(let n=0;n<i.length;n++){let o=i[n];if("compound"===o.kind)throw TypeError(`Shape "${e.id}" nests compound geometry`);n&&t.raw(`
4
- `),t.raw(`<${o.kind}`),0===n&&to(t,e.attributes),tl(t,o),ta(t,r?e.childPaints?.[n]??e.paint:e.paint),ts(t,e.transform),0===n&&td(t,e.identity,e.accessibility),t.raw(" />")}return t.value}(e);case"text":return function(e){let t=new tt;to(t,e.attributes),t.attribute("text-anchor",e.anchor),e.dominantBaseline&&t.attribute("dominant-baseline",e.dominantBaseline),e.block?.fontFamily&&t.attribute("font-family",e.block.fontFamily),t.attribute("font-size",e.fontSize),t.attribute("font-weight",e.fontWeight??e.block?.fontWeight??400),(e.letterSpacing??0)!==0&&t.attribute("letter-spacing",e.letterSpacing),e.fontStyle&&t.attribute("font-style",e.fontStyle),e.textDecoration&&t.attribute("text-decoration",e.textDecoration),ta(t,e.paint),ts(t,e.transform),td(t,e.identity,e.accessibility);let r=t.value.slice(1),i="prepared"===e.measurement&&e.block,n=p(i?e.block:e.text,e.x,e.y,e.fontSize,r,e.baselineShift??.35,"literal"===e.display);if(!e.spans)return n;let o=i?e.block.text:e.text,a=`>${m(o)}</text>`;if(!n.endsWith(a))throw TypeError(`Text "${e.id}" spans require a one-line label`);let s="";for(let t of e.spans)s+=`<tspan fill="${f(t.fill)}">${m(t.text)}</tspan>`;return`${n.slice(0,-a.length)}>${s}</text>`}(e);case"connector":return function(e){let t=new tt,{stroke:r,markers:i}=e,n=r.dash,o=i.mid[0];if("invisible"!==e.lineStyle){let a=e.route.geometry;t.raw(`<${a.kind}`),to(t,e.attributes),tl(t,a),"line"!==a.kind&&t.attribute("fill","none"),t.attribute("stroke",r.color),void 0!==r.opacity&&t.attribute("stroke-opacity",r.opacity),t.attribute("stroke-width",r.width),n&&t.attribute("stroke-dasharray","string"==typeof n.array?n.array:n.array.join(" ")),n?.offset!==void 0&&t.attribute("stroke-dashoffset",n.offset),"butt"!==r.lineCap&&t.attribute("stroke-linecap",r.lineCap),"miter"!==r.lineJoin&&t.attribute("stroke-linejoin",r.lineJoin),4!==r.miterLimit&&t.attribute("stroke-miterlimit",r.miterLimit),void 0!==r.pathLength&&t.attribute("pathLength",r.pathLength),void 0!==r.paintOrder&&t.attribute("paint-order",r.paintOrder),r.nonScaling&&t.attribute("vector-effect","non-scaling-stroke"),r.mixBlendMode&&t.attribute("style",`mix-blend-mode:${r.mixBlendMode}`),i.start&&t.attribute("marker-start",`url(#${i.start.id})`),o&&t.attribute("marker-mid",`url(#${o.id})`),i.end&&t.attribute("marker-end",`url(#${i.end.id})`),"none"===e.hit.pointerEvents&&t.attribute("pointer-events","none"),ts(t,e.transform),t.attribute("data-relationship",e.relationship.kind),t.attribute("data-direction",e.relationship.direction),td(t,e.identity,e.accessibility),t.raw(" />")}for(let r=0;r<e.labels.length;r++){let i=function(e,t,r){if(t.visual?.kind!=="inline")return;if(!t.anchor||!t.paint||void 0===t.fontSize||void 0===t.textAnchor)throw TypeError(`Connector "${e.id}" inline label ${r+1} requires anchor, paint, fontSize, and textAnchor`);let i=eW(t),n={...t.paint,...t.halo?{stroke:t.halo.color??"var(--bg)",strokeWidth:String(t.halo.width),paintOrder:"stroke fill"}:{}},o=new tt;return o.attribute("data-id",t.id??`${e.id}-label-${r+1}`),o.attribute("data-role","label"),o.attribute("data-connector-label-for",e.id),o.attribute("font-size",i.fontSize),o.attribute("font-weight",i.fontWeight),i.letterSpacing&&o.attribute("letter-spacing",i.letterSpacing),o.attribute("text-anchor",t.textAnchor),ts(o,e.transform),ta(o,n),p(i,t.anchor.x,t.anchor.y-Math.max(0,t.clearance??0),i.fontSize,o.value.slice(1),0)}(e,e.labels[r],r);void 0!==i&&(t.value&&t.raw(`
5
- `),t.raw(i))}return t.value}(e);case"group":return[e.open,...e.children.map(e=>tb(ty(e.node),e.indent)),e.close].join(e.join);case"document":throw TypeError(`Scene node "${e.id}" has no admitted SVG serialization`)}}(e);return"group"!==e.kind&&Object.isFrozen(e)&&tm.set(e,i),i}function tb(e,t){if(t<=0||""===e)return e;let r=" ".repeat(t);return r+e.replace(/\n/g,`
6
- ${r}`)}function tx(e,t){let r=tc.get(e);void 0!==r&&tc.set(t,r),tu.has(e)&&tu.add(t)}function tk(e){let t=e=>{if("document"===e.kind){let t=tc.get(e);return void 0!==t&&!tf.test(t)}if(!tu.has(e))return!1;switch(e.kind){case"text":return"prepared"===e.measurement&&void 0!==e.block;case"shape":case"connector":return!0;case"group":return!tf.test(e.open)&&!tf.test(e.close)&&e.children.every(e=>t(e.node))}};return e.parts.every(t)}function tv(e,t){if(t){for(let r of Object.keys(t))if("className"!==r&&"data"!==r&&"ariaHidden"!==r&&"tabIndex"!==r&&"ariaLabel"!==r)throw TypeError(`Mark "${e}" has unknown attribute hook "${r}"`);if(void 0!==t.className&&!ti.test(t.className))throw TypeError(`Mark "${e}" class must be space-separated CSS tokens`);for(let[r,i]of Object.entries(t.data??{})){if(!tn.test(r))throw TypeError(`Mark "${e}" has an invalid data attribute key "${r}"`);if(tr.has(r))throw TypeError(`Mark "${e}" data-${r} belongs to its typed fields`);if("string"!=typeof i)throw TypeError(`Mark "${e}" data-${r} must be a string`)}if(void 0!==t.ariaHidden&&!0!==t.ariaHidden)throw TypeError(`Mark "${e}" ariaHidden must be true when present`);if(void 0!==t.tabIndex&&0!==t.tabIndex)throw TypeError(`Mark "${e}" tabIndex must be 0 when present`);if(void 0!==t.ariaLabel&&"string"!=typeof t.ariaLabel)throw TypeError(`Mark "${e}" ariaLabel must be a string`)}}var tE=/^(?:class|data-[a-z][a-z0-9-]*|role|aria-[a-z]+|tabindex|pointer-events|transform|style)$/,t$=/^\s*<g\b[^>]*>(?:<title>[^<]*<\/title>)?$/,tw=/^\s*(?:--[A-Za-z0-9_-]+\s*:[^;]*(?:;\s*|$))*$/;function tS(e){if(e.identity)return{...e.identity,role:e.role};let t=e.attributes?.className?.split(" ");return{id:e.id,role:e.role,...t?{classNames:t}:{}}}function tN(e){if(tv(e.id,e.attributes),e.childPaints&&("compound"!==e.geometry.kind||e.childPaints.length!==e.geometry.children.length))throw TypeError(`Shape "${e.id}" child paints must match its compound geometry`);if(!1===e.identity&&e.owner?.role!==e.role)throw TypeError(`Shape "${e.id}" without DOM identity requires an explicit owner with the same role`);let t=!1===e.identity?void 0:tS(e),r=t?ea(t,e.attributes?.data?.label):void 0;if(r&&e.attributes?.ariaLabel!==void 0)throw TypeError(`Shape "${e.id}" takes its aria-label from typed relation accessibility`);return tg({kind:"shape",id:e.id,role:e.role,...t?{identity:t}:{},...e.owner?{owner:e.owner}:{},...e.visibility?{visibility:e.visibility}:{},...r?{accessibility:r}:{},geometry:e.geometry,paint:e.paint,...e.childPaints?{childPaints:e.childPaints}:{},...e.conditionalPaint?{conditionalPaint:e.conditionalPaint}:{},...void 0!==e.surfaceFragment?{surfaceFragment:e.surfaceFragment}:{},...e.channels?{channels:e.channels}:{},...e.transform?{transform:e.transform}:{},...e.attributes?{attributes:e.attributes}:{}})}var tC={id:!0,role:!0,geometry:!0,lineStyle:!0,paint:!0,identity:!0,owner:!0,visibility:!0,endpoints:!0,relationship:!0,route:!0,stroke:!0,markers:!0,labels:!0,hit:!0,terminalProjection:!0,channels:!0,transform:!0,attributes:!0},tM={start:!0,mid:!0,end:!0};function tz(e,t,r){if(!e||"object"!=typeof e||Array.isArray(e))throw TypeError(`${r} fields must be an object`);for(let i of Reflect.ownKeys(e))if(!Object.hasOwn(t,i))throw TypeError(`unknown ${r} field "${String(i)}"`)}function tO(e,t){return t?{...e,...t,...t.owner?{owner:{...t.owner}}:{},...t.point?{point:{...t.point}}:{}}:e??{}}function tT(e){var t;let r;if(tz(e,tC,"connector"),void 0!==e.markers&&tz(e.markers,tM,"marker"),"path"!==e.geometry.kind&&e.route?.closed===!0)throw TypeError(`Connector "${e.id}" closed route topology requires path geometry`);if("path"===e.geometry.kind){let r=e.geometry,i=r.subpaths,n=(t=r.d,t.match(/[Mm](?=\s*[-+.]?\d)/g)?.length??0);if(n>1&&!i)throw TypeError(`Connector "${e.id}" path has multiple SVG subpaths but no typed subpaths`);if(i){if(0===i.length||i.some(e=>e.points.length<2))throw TypeError(`Connector "${e.id}" typed subpaths must each contain at least two points`);if(n!==i.length)throw TypeError(`Connector "${e.id}" typed subpath count disagrees with SVG path moves`);let t=i.flatMap(e=>e.points);if(t.length!==r.points.length||t.some((e,t)=>{let i=r.points[t];return!i||i.x!==e.x||i.y!==e.y}))throw TypeError(`Connector "${e.id}" typed subpaths disagree with the canonical point projection`)}}let i=ex(e.geometry,e.route?.closed??!1),n=1===i.length&&i[0].closed;if("path"===e.geometry.kind&&e.geometry.subpaths&&e.route?.closed!==void 0&&e.route.closed!==n)throw TypeError(`Connector "${e.id}" route.closed disagrees with typed subpath topology`);let o="path"===e.geometry.kind&&e.geometry.subpaths?n:e.route?.closed??!1;if("path"===e.geometry.kind&&(e.geometry.d.match(/[Zz]/g)?.length??0)!==(e.geometry.subpaths?e.geometry.subpaths.filter(e=>e.closed).length:+!!o))throw TypeError(`Connector "${e.id}" SVG close commands disagree with typed closed-contour semantics`);let a=e.markers?.start,s=e.markers?.end,c=e.markers?.mid??[];for(let t of[a,...c,s])if(t?.geometry?.kind==="path"&&!t.bounds&&!t.viewBox&&!t.size)throw TypeError(`Connector "${e.id}" path marker "${t.id}" requires bounds, viewBox, or size`);!function(e,t,r,i){if(0===i.length)return;let n=ew(t,r).length;if(0===n)throw RangeError(`Connector "${e}" has mid markers but no typed interior route points`);if(1!==i.length&&i.length!==n)throw RangeError(`Connector "${e}" mid markers must contain one repeated descriptor or one descriptor per interior route point`);if(1!==new Set(i.map(e=>e.id)).size)throw RangeError(`Connector "${e}" uses distinct mid markers that one SVG marker-mid carrier cannot represent`);i[0].id}(e.id,e.geometry,o,c);let m=function(e,t){if("line"===e.kind)return{start:{point:{x:e.x1,y:e.y1}},end:{point:{x:e.x2,y:e.y2}}};let r=ex(e,t),i=r[0]?.points[0],n=r.at(-1),o=n?.closed?n.points[0]:n?.points.at(-1);return{...i?{start:{point:{...i}}}:{},...o?{end:{point:{...o}}}:{}}}(e.geometry,o);for(let t of["start","end"]){let r=e.endpoints?.[t]?.point,i=m[t]?.point;if(r&&i&&!ey(r,i))throw TypeError(`Connector "${e.id}" endpoints.${t}.point disagrees with typed route geometry`)}let f={...e.endpoints??{},start:tO(m.start,e.endpoints?.start),end:tO(m.end,e.endpoints?.end)},p={kind:e.relationship?.kind??e.role,direction:e.relationship?.direction??(void 0!==f.from&&f.from===f.to?"self":a&&s?"bidirectional":a?"reverse":s?"forward":"undirected")},h=(e.labels??[]).map(e=>{let t=l(e.text,e.textContent),r=d(e.text);return{...e,text:r,..."string"!=typeof t?{textContent:{...e.textContent,value:r}}:{}}}),g={id:e.identity?.id??e.id,role:e.role,...e.identity?.classNames?{classNames:e.identity.classNames}:{},...e.identity?.from??f.from?{from:e.identity?.from??f.from}:{},...e.identity?.to??f.to?{to:e.identity?.to??f.to}:{}},y=h[0],b=ea(g,y?.visual?.kind==="inline"?eW(y).lineBlocks.map(e=>e.runs.map(e=>e.text).join("")).join(`
7
- `):y?u(l(y.text,y.textContent),y.display??"literal"):void 0);if(tv(e.id,e.attributes),b&&e.attributes?.ariaLabel!==void 0)throw TypeError(`Connector "${e.id}" takes its aria-label from typed relation accessibility`);for(let[t,r]of h.entries())if(r.visual?.kind==="inline"&&(!r.anchor||!r.paint||void 0===r.fontSize||void 0===r.textAnchor))throw TypeError(`Connector "${e.id}" inline label ${t+1} requires anchor, paint, fontSize, and textAnchor`);let x=e.stroke?.width??e.paint.strokeWidth??"1",k=e.stroke?.dash??(e.paint.strokeDasharray?{array:e.paint.strokeDasharray,...void 0!==e.paint.strokeDashoffset?{offset:e.paint.strokeDashoffset}:{}}:void 0),v=e.stroke?.opacity??e.paint.opacity,E=e.stroke?.paintOrder??e.paint.paintOrder,$=e.stroke?.mixBlendMode,w={color:e.stroke?.color??e.paint.stroke??"var(--_line)",width:x,...void 0!==v?{opacity:v}:{},...k?{dash:k}:{},lineCap:e.stroke?.lineCap??e.paint.strokeLinecap??"butt",lineJoin:e.stroke?.lineJoin??e.paint.strokeLinejoin??"miter",miterLimit:e.stroke?.miterLimit??Number(e.paint.strokeMiterlimit??4),...e.stroke?.pathLength!==void 0?{pathLength:e.stroke.pathLength}:{},...void 0!==E?{paintOrder:E}:{},...void 0!==$?{mixBlendMode:$}:{},nonScaling:e.stroke?.nonScaling??"non-scaling-stroke"===e.paint.vectorEffect,...e.stroke?.encodesValue?{encodesValue:!0}:{}},S=ev(e.geometry,o),N=e.route?.contours;if(N&&(N.length!==S.length||N.some((e,t)=>{let r=S[t];return!r||e.start.x!==r.start.x||e.start.y!==r.start.y||e.end.x!==r.end.x||e.end.y!==r.end.y||e.closed!==r.closed})))throw TypeError(`Connector "${e.id}" route contours disagree with typed subpath endpoint topology`);if(!ek(e.geometry)&&N)for(let[t,r]of N.entries()){let i=S[t];for(let n of["startTangent","endTangent"]){let o=r[n],a=i[n];if(o&&(!a||!ey(o,a,1e-9)))throw TypeError(`Connector "${e.id}" route.contours[${t}].${n} disagrees with linear route geometry`)}}let C=N?S.map((e,t)=>{let r=N?.[t],i=r?.startTangent??e.startTangent,n=r?.endTangent??e.endTangent;return{start:{...e.start},end:{...e.end},closed:e.closed,...i?{startTangent:i}:{},...n?{endTangent:n}:{}}}):S;for(let t of C)for(let r of[t.startTangent,t.endTangent]){if(!r)continue;let t=Math.hypot(r.x,r.y);if(!Number.isFinite(t)||Math.abs(t-1)>1e-9)throw TypeError(`Connector "${e.id}" contour tangents must be finite unit vectors`)}for(let t of[e.route?.startTangent,e.route?.endTangent]){if(!t)continue;let r=Math.hypot(t.x,t.y);if(!Number.isFinite(r)||Math.abs(r-1)>1e-9)throw TypeError(`Connector "${e.id}" route tangents must be finite unit vectors`)}for(let[t,r,i]of[["startTangent",e.route?.startTangent,C[0]?.startTangent],["endTangent",e.route?.endTangent,C.at(-1)?.endTangent]])if(r&&i&&!ey(r,i,1e-9))throw TypeError(`Connector "${e.id}" route.${t} disagrees with its contour tangent authority`);let M={geometry:e.geometry,ownership:e.route?.ownership??"family",closed:o,bendRadius:e.route?.bendRadius??0,contours:C,...e.route?.startTangent??C[0]?.startTangent?{startTangent:e.route?.startTangent??C[0]?.startTangent}:{},...e.route?.endTangent??C.at(-1)?.endTangent?{endTangent:e.route?.endTangent??C.at(-1)?.endTangent}:{},labelAnchors:e.route?.labelAnchors??h.flatMap(e=>e.anchor?[e.anchor]:[])};if(e.hit?.closed!==void 0&&e.hit.closed!==o)throw TypeError(`Connector "${e.id}" hit.closed must match route.closed topology`);let z={geometry:e.hit?.geometry??e.geometry,closed:e.hit?.closed??o,strokeWidth:e.hit?.strokeWidth??Math.max(6,Number.isFinite(r="number"==typeof x?x:parseFloat(x))?Math.max(0,r):1),pointerEvents:e.hit?.pointerEvents??("invisible"===e.lineStyle?"none":"stroke")},O={geometry:e.geometry,lineStyle:e.lineStyle,endpoints:f,relationship:p,route:M,stroke:w,markers:{...a?{start:a}:{},mid:c,...s?{end:s}:{}},labels:h,hit:z,...e.transform?{transform:e.transform}:{},additionalDiagnostics:e.terminalProjection?.diagnostics},T={kind:"connector",id:e.id,role:e.role,lineStyle:e.lineStyle,endpoints:f,relationship:p,route:M,stroke:w,markers:{...a?{start:a}:{},mid:c,...s?{end:s}:{}},labels:h,hit:z,terminalProjection:void 0,identity:g,...e.owner?{owner:e.owner}:{},...e.visibility?{visibility:e.visibility}:{},...b?{accessibility:b}:{},...e.channels?{channels:e.channels}:{},...e.transform?{transform:e.transform}:{},...e.attributes?{attributes:e.attributes}:{}};return function(e,t){if(0===e5||"path"===t.geometry.kind||void 0!==t.additionalDiagnostics&&!t.additionalDiagnostics.every(e=>"string"==typeof e)){e.terminalProjection=e2(t);return}t.additionalDiagnostics&&Object.defineProperty(t,"additionalDiagnostics",{value:Object.freeze([...t.additionalDiagnostics])}),e8(e,Object.freeze(t))}(T,O),tg(T)}function tj(e){let{block:t,...r}=e;if(t){for(let r of["fontSize","fontWeight","letterSpacing"])if(void 0!==e[r]&&e[r]!==t[r])throw TypeError(`Text "${e.id}" ${r} differs from its retained prepared block`)}tv(e.id,e.attributes);let i=e.fontWeight??t?.fontWeight??400,o=e.letterSpacing??t?.letterSpacing??0,a=e.display??t?.prepared.display??"formatted",s=t??eg(e.text,{display:a,fontSize:e.fontSize,fontWeight:i,letterSpacing:o});if(e.spans&&(1!==s.lines.length||e.spans.map(e=>e.text).join("")!==s.text))throw TypeError(`Text "${e.id}" spans must spell its one displayed line`);let d=e.baselineShift??.35,l=s.lines.length,c=t?t.lineHeight:e.fontSize*n,u=(1===l?0:-((l-1)/2)*c)+e.fontSize*d,m="hanging"===e.dominantBaseline?s.lineHeight/2:"middle"===e.dominantBaseline||"central"===e.dominantBaseline?0:-(.35*e.fontSize),f=u+(l-1)*s.lineHeight/2+m,p=tS(e),h=ea(p,e.attributes?.data?.label);if(h&&e.attributes?.ariaLabel!==void 0)throw TypeError(`Text "${e.id}" takes its aria-label from typed relation accessibility`);return tg({kind:"text",...r,identity:p,accessibility:h,block:s,measurement:t?"prepared":"fallback",...t?{prepared:!0,preparedLines:t.lineBlocks.map(e=>e.runs)}:{},fontWeight:i,letterSpacing:o,display:a,textLayout:{width:s.width,height:s.height,lineHeight:s.lineHeight,offsetY:f}})}function t_(e,t){return th({kind:"document",element:"content",...e},t)}function tI(e){let t="title"===e.element?"title":"desc",r=e.domId?` id="${f(e.domId)}"`:"";return th({kind:"document",role:"chrome",...e},`<${t}${r}>${m(e.text)}</${t}>`)}function tA(e,t){return th({kind:"document",role:"defs",element:"definitions",...e},t)}function tD(){return th({kind:"document",id:"svg-close",role:"chrome",element:"close"},"</svg>")}function tB(e){var t;let r,i,n,o,a;!function(e,t,r){let i=new Set,n;if((t$.test(t)?k(t,"g",(t,r)=>{if(i.has(t))throw TypeError(`Group "${e}" open has a duplicate "${t}"`);if(i.add(t),!tE.test(t))throw TypeError(`Group "${e}" open sets "${t}"; paint and geometry belong to typed marks`);if("style"===t&&!tw.test($(r)))throw TypeError(`Group "${e}" open style may only set custom properties; paint belongs to typed marks`);"transform"===t&&(n=r)}):void 0)!=="g")throw TypeError(`Group "${e}" open must be one <g> tag with an optional <title>`);let o=void 0===n?void 0:$(n),a=void 0===o?void 0:eT(o),s=r?eC(r):void 0;if(void 0!==o&&!a)throw TypeError(`Group "${e}" open has an unsupported transform`);if(!!a!=!!s||a&&s&&a.some((e,t)=>Math.abs(e-s[t])>1e-9*Math.max(1,Math.abs(e))))throw TypeError(`Group "${e}" open transform disagrees with its typed transform`)}(e.id,e.open,e.transform);let s=e.join??`
8
- `,d=(t=e.open,r=t.match(/^\s*<([A-Za-z][\w:-]*)\b[^>]*>/)?.[0]??"",n=((i=e=>{let t=r.match(RegExp(`\\s${e}="([^"]*)"`))?.[1];return void 0===t?void 0:$(t)})("class")??"").split(/\s+/).filter(Boolean),o=i("data-from"),a=i("data-to"),{id:i("data-id")??e.id,role:e.role,...void 0!==o?{from:o}:{},...void 0!==a?{to:a}:{},...n.length>0?{classNames:n}:{}}),l=e.paint&&[...void 0!==e.paint.opacity?[`opacity="${f(e.paint.opacity)}"`]:[],...void 0!==e.paint.fill?[`fill="${f(e.paint.fill)}"`]:[]].join(" "),c=l?e.open.replace(/^<g\b/,`<g ${l}`):e.open,u=e.owner??{id:d.id,role:d.role},m=e.children.map(e=>{var t;let r;if(e.node.owner||"document"===e.node.kind||"group"===e.node.kind)return e;if(e7(e.node)){let t={};for(let r of Object.keys(e.node))t[r]="terminalProjection"===r?void 0:e.node[r];t.owner=u,r=t,e9(e.node,r)}else r={...e.node,owner:u};return t=e.node,(tc.has(t)||tu.has(t))&&tx(e.node,r),{...e,node:r}}),p=tp(eo(c,d));return tg({kind:"group",id:e.id,role:e.role,open:p,close:e.close,children:m,join:s,channels:e.channels,identity:d,owner:u,...e.visibility?{visibility:e.visibility}:{},...e.transform?{transform:e.transform}:{},...e.paint?{paint:e.paint}:{}})}function tL(e,t){return th({kind:"document",element:"open",id:e.id,role:"prelude"},t)}function tP(e){return tU({shape:tN,group:tB},e)}function tU(e,t){return e.group({id:t.id,role:"icon",open:t.open,close:"</g>",...t.transform?{transform:t.transform}:{},...t.owner?{owner:t.owner}:{},...t.channels?{channels:t.channels}:{},join:t.join??"",children:t.paths.map((r,i)=>({indent:t.indent??0,node:e.shape({id:ei(t.id,"path",i),role:"icon",geometry:{kind:"path",d:r},paint:t.paint,...t.owner?{owner:t.owner}:{}})}))})}function tF(e){return e.replace(/\/\*[\s\S]*?\*\//g,"").replace(/\\(?:\r\n|[\n\r\f])/g,"").replace(/\\([0-9a-fA-F]{1,6})\s?/g,(e,t)=>{let r=Number.parseInt(t,16);return Number.isFinite(r)?String.fromCodePoint(r):""}).replace(/\\([^\n\r\f])/g,"$1")}var tR=/\s([^\s=<>]+)\s*=\s*("[^"]*"|'[^']*'|[^\s>]+)/g,tW=/<(?:[^\s<>/:]+:)?(?:animate(?:Motion|Transform)?|set)\b/i,tq=/^on[a-z]/,tG=/[(:@\\&]/,tV=/^(?:javascript|vbscript|data|file):/,tH=/(?:javascript|vbscript|data|file)\s*:/i,tZ=/(?:expression|behavior)\s*\(/i,tY=/(?:expression|behavior)\s*\(|-moz-binding\s*:/i,tJ=new Set(["amp","lt","gt","quot","apos"]);function tK(e){return" "===e||" "===e||e===`
9
- `||"\r"===e}function tQ(e,t){let r=e.charCodeAt(t),i=32|r;if(!(i>=97&&i<=122||95===r))return -1;let n=t+1;for(;b(e[n]);)n++;return n}var tX="http://www.w3.org/XML/1998/namespace";function t0(e){return 9===e||10===e||13===e||e>=32&&e<=55295||e>=57344&&e<=65533||e>=65536&&e<=1114111}function t1(e){for(let t=e.indexOf("&");t>=0;t=e.indexOf("&",t+1)){let r=e.indexOf(";",t+1);if(r<0)return!1;let i=e.slice(t+1,r);if(i.startsWith("#x")||i.startsWith("#X")){if(!/^[0-9a-f]+$/i.test(i.slice(2))||!t0(Number.parseInt(i.slice(2),16)))return!1}else if(i.startsWith("#")){if(!/^[0-9]+$/.test(i.slice(1))||!t0(Number.parseInt(i.slice(1),10)))return!1}else if(!tJ.has(i))return!1;t=r}return!0}function t2(e,t){if(/[\0-\x08\x0b\x0c\x0e-\x1f\ud800-\udfff\ufffe\uffff]/u.test(e))return!1;let r=[],i=!1,n=!1,o=0;for(;o<e.length;){let a;if("<"!==e[o]){let t=e.indexOf("<",o),i=t<0?e.length:t,n=e.slice(o,i);if(0===r.length&&""!==n.trim()||n.includes("]]>")||!t1(n))return!1;o=i;continue}if(e.startsWith("\x3c!--",o)){if(0===r.length)return!1;let t=e.indexOf("--\x3e",o+4),i=t<0?"":e.slice(o+4,t);if(t<0||i.includes("--")||i.endsWith("-"))return!1;o=t+3;continue}if(e.startsWith("<![CDATA[",o)||e.startsWith("<!",o)||e.startsWith("<?",o))return!1;if(e.startsWith("</",o)){let t=tQ(e,o+2);if(t<0)return!1;let i=e.slice(o+2,t);if(i.includes(":"))return!1;for(;tK(e[t]);)t++;if(">"!==e[t]||r.pop()?.name!==i)return!1;if(o=t+1,0===r.length){if("svg"!==i||n)return!1;n=!0}continue}let s=tQ(e,o+1);if(s<0||n)return!1;let d=e.slice(o+1,s);if(d.includes(":"))return!1;if(0===r.length){if(i||"svg"!==d)return!1;i=!0}let l=s,c=new Set,u=[],m=!1;for(;;){let r=tK(e[l]);for(;tK(e[l]);)l++;if(">"===e[l]){l++;break}if("/"===e[l]&&">"===e[l+1]){m=!0,l+=2;break}if(!r)return!1;let i=tQ(e,l);if(i<0)return!1;let n=e.slice(l,i);if(c.has(n))return!1;let o=n.includes(":"),a=o?function(e){let t=e.indexOf(":");if(!(t<=0||t===e.length-1||e.indexOf(":",t+1)>=0))return{prefix:e.slice(0,t),local:e.slice(t+1)}}(n):void 0;if(o&&!a)return!1;for(c.add(n),l=i;tK(e[l]);)l++;if("="!==e[l])return!1;for(l++;tK(e[l]);)l++;let s=e[l];if('"'!==s&&"'"!==s)return!1;let d=++l;if((l=e.indexOf(s,d))<0)return!1;let f=e.slice(d,l);if(f.includes("<")||!t1(f))return!1;(a||"xmlns"===n)&&u.push({name:n,...a,value:t3(f)}),t?.(n,f),l++}let f=r.at(-1)?.namespaces??new Map([["xml",tX]]),p;for(let e of u){let t="xmlns"===e.name,r="xmlns"===e.prefix;if(!t&&!r)continue;let i=t?"":e.local,n=e.value;if("xmlns"===i||"http://www.w3.org/2000/xmlns/"===n||"xml"===i&&n!==tX||"xml"!==i&&n===tX||""!==i&&""===n)return!1;p||(f=p=new Map(f)),p.set(i,n)}if("http://www.w3.org/2000/svg"!==f.get("")||r.length>0&&"svg"===d)return!1;for(let e of u){if("xmlns"===e.name||"xmlns"===e.prefix)continue;let t=f.get(e.prefix);if(void 0===t)return!1;let r=`${t}\0${e.local}`;if(a||(a=new Set),a.has(r))return!1;a.add(r)}if(o=l,m){if(0===r.length)return!1}else r.push({name:d,namespaces:f})}return i&&n&&0===r.length}function t3(e){if(!e.includes("&"))return e;let t=e;for(let e=0;e<3;e++){let e=t.replace(/&#x([0-9a-f]+);?/gi,(e,t)=>{let r=Number.parseInt(t,16);return Number.isFinite(r)&&r<=1114111?String.fromCodePoint(r):""}).replace(/&#([0-9]+);?/g,(e,t)=>{let r=Number.parseInt(t,10);return Number.isFinite(r)&&r<=1114111?String.fromCodePoint(r):""}).replace(/&colon;?/gi,":").replace(/&sol;?/gi,"/").replace(/&tab;?/gi," ").replace(/&newline;?/gi,`
10
- `).replace(/&quot;?/gi,'"').replace(/&apos;?/gi,"'").replace(/&lt;?/gi,"<").replace(/&gt;?/gi,">").replace(/&amp;?/gi,"&");if(e===t)break;t=e}return t}function t5(e){return t3(e).replace(/[\u0000-\u0020\u007f-\u009f]+/g,"").toLowerCase()}function t4(e){let t=tF(t3(e)),r=[];for(let e of(/@import\b/i.test(t)&&r.push("@import"),t.matchAll(/url\s*\(\s*(["']?)([\s\S]*?)\1\s*\)/gi))){let t=t5(e[2]);""===t||t.startsWith("#")||r.push(`url(${e[2].trim()})`)}for(let e of t.matchAll(/(?:-webkit-)?(?:image-set|cross-fade)\s*\(/gi))r.push(`${e[0].slice(0,-1).trim()}()`);return r}function t6(e){return!!(tY.test(e)||tH.test(e))}var t8=new Set(["clip-path","cursor","fill","filter","marker-end","marker-mid","marker-start","mask","stroke","style"]);function t7(e,t){if(void 0!==e&&""!==e)return"string"!=typeof e?"Mermaid themeCSS must be a string":`Raw Mermaid themeCSS is not allowed in ${t} security mode because selectors can escape an imported SVG; use a declarative StyleSpec`}function t9(e,t,r,i){let n=e.slice(e.lastIndexOf(":")+1).toLowerCase();if(tq.test(n)&&(r.push("inline-event-handler"),i.push("inline-event-handler")),"xml:base"===e.toLowerCase()&&r.push(`xml:base=${t}`),"href"===n||"src"===n||"data"===n){let n=t5(t);""===n||n.startsWith("#")||r.push(n.startsWith("javascript:")?"javascript-url":t),tV.test(n)&&i.push(`${e}=${t}`)}if(t8.has(n)||"values"===n||"from"===n||"to"===n){if(!tG.test(t))return;let n=tF(t3(t));(t4(n).length>0||tH.test(n)||tZ.test(n))&&r.push(`${e}=${t}`),t6(n)&&i.push(`${e}=${t}`)}}function re(e,t,r){for(let i of e.matchAll(/<style\b[^>]*>([\s\S]*?)<\/style>/gi))t6(tF(t3(i[1])))&&r.push("active-css"),t.push(...t4(i[1]));for(let i of["script","foreignObject","image","object","embed","iframe"])RegExp(`<(?:[^\\s<>/:]+:)?${i}\\b`,"i").test(e)&&(t.push(`<${i}>`),"image"!==i&&r.push(`<${i}>`));return tW.test(e)&&(t.push("<animation>"),r.push("<animation>")),Object.freeze({active:Object.freeze(r),refs:Object.freeze(t)})}function rt(e){let{refs:t}=y("security",e,()=>(function(e){let t=e.replace(/<!--[\s\S]*?-->/g,""),r=[],i=[];for(let e of function(e){let t=[];for(let r=e.indexOf("<");r>=0;r=e.indexOf("<",r+1)){let i,n=e[r+1];if(n&&"/"!==n&&"!"!==n&&"?"!==n&&/[^\s<>]/.test(n))for(let n=r+1;n<e.length;n++){let o=e[n];if(i)o===i&&(i=void 0);else if('"'===o||"'"===o)i=o;else if(">"===o){t.push(e.slice(r,n+1)),r=n;break}}}return t}(t))for(let t of e.matchAll(RegExp(tR.source,"g")))t9(t[1],function(e){let t=e[0];return('"'===t||"'"===t)&&e[e.length-1]===t?e.slice(1,-1):e}(t[2]),r,i);return re(t,r,i)})(e));return{ok:0===t.length,refs:[...t]}}function rr(e,t="default"){let r=y("final-security",e,()=>{let t=[],r=[],i=!1,n;if(!t2(e,(e,o)=>{if(!i)try{t9(e,o,t,r)}catch(e){i=!0,n=e}}))return!1;if(i)throw n;return re(e.replace(/<!--[\s\S]*?-->/g,""),t,r)});if(!r)throw Error("OutputSecurityPolicy rejected an invalid SVG document envelope");let{active:i,refs:n}=r;if(i.length>0)throw Error(`OutputSecurityPolicy rejected active content: ${i.join(", ")}`);if("strict"===t&&n.length)throw Error(`OutputSecurityPolicy strict verification failed: ${n.join(", ")}`);return{svg:e,diagnostics:"strict"===t?[]:n.map(e=>({code:"EXTERNAL_REFERENCE",reference:e}))}}var ri=["document","text","shape","container","connector","marker","data-mark"];Object.freeze(ri.map(e=>Object.freeze({primitive:e,operation:"document"===e?"serialize":"render"})));var rn=["measure","layout","bounds","hit-test","render","accessibility","terminal-project","serialize"],ro=["geometry","paint","stroke","transform","identity","relation","labels","markers","resources","interaction","topology","subpaths","closedness","bend-radius","endpoints","direction","hit-geometry","stroke-opacity","stroke-cap","stroke-join","stroke-miter","dash-array","dash-offset","dash-restart","path-length","paint-order","compositing","non-scaling-stroke","marker-orientation","marker-overflow"],ra=Object.freeze([{primitive:"document",feature:"identity",operation:"serialize"},{primitive:"document",feature:"resources",operation:"serialize"},{primitive:"document",feature:"interaction",operation:"accessibility"},{primitive:"text",feature:"geometry",operation:"render"},{primitive:"text",feature:"paint",operation:"render"},{primitive:"text",feature:"labels",operation:"accessibility"},{primitive:"text",feature:"identity",operation:"serialize"},{primitive:"shape",feature:"geometry",operation:"render"},{primitive:"shape",feature:"paint",operation:"render"},{primitive:"shape",feature:"identity",operation:"serialize"},{primitive:"container",feature:"geometry",operation:"render"},{primitive:"container",feature:"paint",operation:"render"},{primitive:"container",feature:"identity",operation:"serialize"},{primitive:"connector",feature:"geometry",operation:"render"},{primitive:"connector",feature:"stroke",operation:"render"},{primitive:"connector",feature:"transform",operation:"render"},{primitive:"connector",feature:"topology",operation:"render"},{primitive:"connector",feature:"subpaths",operation:"render"},{primitive:"connector",feature:"closedness",operation:"render"},{primitive:"connector",feature:"bend-radius",operation:"render"},{primitive:"connector",feature:"stroke-opacity",operation:"render"},{primitive:"connector",feature:"stroke-cap",operation:"render"},{primitive:"connector",feature:"stroke-join",operation:"render"},{primitive:"connector",feature:"stroke-miter",operation:"render"},{primitive:"connector",feature:"dash-array",operation:"render"},{primitive:"connector",feature:"dash-offset",operation:"render"},{primitive:"connector",feature:"dash-restart",operation:"render"},{primitive:"connector",feature:"path-length",operation:"render"},{primitive:"connector",feature:"paint-order",operation:"render"},{primitive:"connector",feature:"compositing",operation:"render"},{primitive:"connector",feature:"non-scaling-stroke",operation:"render"},{primitive:"connector",feature:"marker-orientation",operation:"render"},{primitive:"connector",feature:"marker-overflow",operation:"render"},{primitive:"connector",feature:"endpoints",operation:"serialize"},{primitive:"connector",feature:"direction",operation:"serialize"},{primitive:"connector",feature:"labels",operation:"render"},{primitive:"connector",feature:"labels",operation:"accessibility"},{primitive:"connector",feature:"markers",operation:"render"},{primitive:"connector",feature:"relation",operation:"accessibility"},{primitive:"connector",feature:"interaction",operation:"hit-test"},{primitive:"connector",feature:"hit-geometry",operation:"hit-test"},{primitive:"connector",feature:"identity",operation:"serialize"},{primitive:"marker",feature:"geometry",operation:"render"},{primitive:"marker",feature:"paint",operation:"render"},{primitive:"marker",feature:"identity",operation:"serialize"},{primitive:"data-mark",feature:"geometry",operation:"render"},{primitive:"data-mark",feature:"paint",operation:"render"},{primitive:"data-mark",feature:"identity",operation:"serialize"}].map(e=>Object.freeze(e))),rs=["native","emulated","projected","lossy","unsupported"];function rd(e){switch(e.kind){case"text":return["text"];case"shape":return e.channels?.value===void 0?["shape"]:["shape","data-mark"];case"group":return["container"];case"connector":return["connector"];case"document":return e.markerResources?.length?["document","marker"]:["document"]}}function rl(e,t,r="rough"){let i="crisp"===t?"native":"emulated",n="crisp"===t?"native":"projected",o="src/__tests__/backend-capability-conformance.test.ts",a=e=>"crisp"===t?{realization:"native"}:"geometry"===e||"topology"===e?{realization:"lossy",diagnostic:"The exact authored path remains as an invisible semantic carrier, but arbitrary curves are flattened to typed routed contours for the visible sketch."}:"closedness"===e?{realization:"lossy",diagnostic:"Sketch shafts are rebuilt from routed geometry and do not preserve explicit closed-subpath semantics."}:"bend-radius"===e?{realization:"lossy",diagnostic:"The authored rounded carrier remains exact, but the visible sketch follows its routed polyline and cannot preserve the continuous bend radius."}:"dash-restart"===e?{realization:"lossy",diagnostic:"A rough stroke may contain multiple generated stroke subpaths, so SVG dash restart boundaries can differ."}:"path-length"===e?{realization:"lossy",diagnostic:"One pathLength value spans generated stroke subpaths, so a sketch cannot retain one authored path calibration exactly."}:"hybrid"===r&&("stroke-cap"===e||"stroke-join"===e||"stroke-miter"===e||"non-scaling-stroke"===e)?{realization:"lossy",diagnostic:`Freehand ribbon geometry cannot preserve authored ${e} semantics; dashed Hybrid connectors fall back to the faithful rough projection.`}:"marker-orientation"===e||"marker-overflow"===e?{realization:"projected",diagnostic:"Marker geometry, orientation, and overflow remain in the typed marker projection instead of being sketched."}:{realization:"emulated"},s=[{target:e,primitive:"document",feature:"identity",operation:"serialize",realization:"native",evidence:o},{target:e,primitive:"document",feature:"resources",operation:"serialize",realization:"native",evidence:o},{target:e,primitive:"document",feature:"interaction",operation:"accessibility",realization:"native",evidence:o},{target:e,primitive:"text",feature:"geometry",operation:"render",realization:"native",evidence:o},{target:e,primitive:"text",feature:"paint",operation:"render",realization:"native",evidence:o},{target:e,primitive:"text",feature:"labels",operation:"accessibility",realization:"native",evidence:o},{target:e,primitive:"text",feature:"identity",operation:"serialize",realization:"native",evidence:o},{target:e,primitive:"shape",feature:"geometry",operation:"render",realization:i,evidence:o},{target:e,primitive:"shape",feature:"paint",operation:"render",realization:i,evidence:o},{target:e,primitive:"shape",feature:"identity",operation:"serialize",realization:"native",evidence:o},{target:e,primitive:"container",feature:"geometry",operation:"render",realization:"native",evidence:o},{target:e,primitive:"container",feature:"paint",operation:"render",realization:"native",evidence:o},{target:e,primitive:"container",feature:"identity",operation:"serialize",realization:"native",evidence:o},{target:e,primitive:"connector",feature:"geometry",operation:"render",...a("geometry"),evidence:o},{target:e,primitive:"connector",feature:"stroke",operation:"render",realization:i,evidence:o},...["transform","topology","subpaths","closedness","bend-radius","stroke-opacity","stroke-cap","stroke-join","stroke-miter","dash-array","dash-offset","dash-restart","path-length","paint-order","compositing","non-scaling-stroke","marker-orientation","marker-overflow"].map(t=>({target:e,primitive:"connector",feature:t,operation:"render",...a(t),evidence:o})),{target:e,primitive:"connector",feature:"relation",operation:"accessibility",realization:"native",evidence:o},{target:e,primitive:"connector",feature:"endpoints",operation:"serialize",realization:"native",evidence:o},{target:e,primitive:"connector",feature:"direction",operation:"serialize",realization:"native",evidence:o},{target:e,primitive:"connector",feature:"labels",operation:"render",realization:"native",evidence:o},{target:e,primitive:"connector",feature:"labels",operation:"accessibility",realization:"native",evidence:o},{target:e,primitive:"connector",feature:"markers",operation:"render",realization:n,evidence:o},{target:e,primitive:"connector",feature:"interaction",operation:"hit-test",realization:"native",evidence:o},{target:e,primitive:"connector",feature:"hit-geometry",operation:"hit-test",realization:"native",evidence:o},{target:e,primitive:"connector",feature:"identity",operation:"serialize",realization:"native",evidence:o},{target:e,primitive:"marker",feature:"geometry",operation:"render",realization:n,evidence:o},{target:e,primitive:"marker",feature:"paint",operation:"render",realization:n,evidence:o},{target:e,primitive:"marker",feature:"identity",operation:"serialize",realization:"native",evidence:o},{target:e,primitive:"data-mark",feature:"geometry",operation:"render",realization:i,evidence:o},{target:e,primitive:"data-mark",feature:"paint",operation:"render",realization:i,evidence:o},{target:e,primitive:"data-mark",feature:"identity",operation:"serialize",realization:"native",evidence:o}],d=ru(s);if(!d.valid)throw Error(`Invalid graphical backend capability contract: ${d.diagnostics.join("; ")}`);return Object.freeze(s.map(e=>Object.freeze({...e})))}function rc(e){return[e.target,e.primitive,e.feature,e.operation].join("\0")}function ru(e){let t=[],r=new Set;for(let i=0;i<e.length;i++){let n=e[i],o=rc(n);r.has(o)&&t.push(`claim[${i}]: duplicate target/primitive/feature/operation`),r.add(o),""===n.target.trim()&&t.push(`claim[${i}]: target must not be empty`),""===n.primitive.trim()&&t.push(`claim[${i}]: primitive must not be empty`),""===n.feature.trim()&&t.push(`claim[${i}]: feature must not be empty`),""===n.operation.trim()&&t.push(`claim[${i}]: operation must not be empty`),rs.includes(n.realization)||t.push(`claim[${i}]: invalid realization ${String(n.realization)}`),"lossy"!==n.realization&&"unsupported"!==n.realization||n.diagnostic?.trim()||t.push(`claim[${i}]: ${n.realization} realization requires a diagnostic`)}return{valid:0===t.length,diagnostics:t}}function rm(e,t,r){let i=r.x-t.x,n=r.y-t.y,o=i*i+n*n;if(0===o)return Math.hypot(e.x-t.x,e.y-t.y);let a=Math.max(0,Math.min(1,((e.x-t.x)*i+(e.y-t.y)*n)/o));return Math.hypot(e.x-(t.x+a*i),e.y-(t.y+a*n))}function rf(e,t,r=0){return function(e,t,r,i){if("none"===e.hit.pointerEvents)return!1;let n=eO(eM(i,eC(e.transform)));if(!n)return!1;if(e.stroke.nonScaling){let n=function(e,t,r){if("none"===e.hit.pointerEvents)return;let i=e$(e.hit.geometry,e.hit.closed);if(0===i.length)return;let n=eM(r,eC(e.transform)),o=1/0;for(let e of i)o=Math.min(o,rm(t,ez(e.start,n),ez(e.end,n)));return o}(e,t,i);return void 0!==n&&n<=e.hit.strokeWidth/2+Math.max(0,r)}let o=ez(t,n),a=(Math.hypot(n[0]+n[3],n[1]-n[2])+Math.hypot(n[0]-n[3],n[1]+n[2]))/2,s=e.hit.strokeWidth/2+(r>0?r*a:0);return e$(e.hit.geometry,e.hit.closed).some(e=>rm(o,e.start,e.end)<=s)}(e,t,r,eN)}function rp(e,t){if(!Number.isFinite(e))throw Error(`Marker ${t} must be finite`);return e}function rh(e){return e.map(e=>`${rp(e.x,"point.x")} ${rp(e.y,"point.y")}`).join(", ")}function rg(e){if("string"!=typeof e.id||""===e.id.trim())throw Error("Marker id must not be empty");if(!["arrow","open-arrow","circle","cross","triangle","diamond","diamond-open"].includes(String(e.shape)))throw Error(`Marker "${e.id}" has an unknown shape`);if(!e.geometry)throw Error(`Marker "${e.id}" must declare geometry`);if(!e.size)throw Error(`Marker "${e.id}" must declare marker size`);if(!e.ref)throw Error(`Marker "${e.id}" must declare a reference point`);if(!(e.size.width>0)||!(e.size.height>0))throw Error(`Marker "${e.id}" size must be positive`);if(rp(e.size.width,"size.width"),rp(e.size.height,"size.height"),rp(e.ref.x,"ref.x"),rp(e.ref.y,"ref.y"),void 0!==e.units&&"strokeWidth"!==e.units&&"userSpaceOnUse"!==e.units)throw Error(`Marker "${e.id}" units must be strokeWidth or userSpaceOnUse`);if("number"==typeof e.orient)rp(e.orient,"orient");else if(void 0!==e.orient&&"auto"!==e.orient&&"auto-start-reverse"!==e.orient)throw Error(`Marker "${e.id}" orient must be auto, auto-start-reverse, or a finite angle`);if(void 0!==e.overflow&&"hidden"!==e.overflow&&"visible"!==e.overflow)throw Error(`Marker "${e.id}" overflow must be hidden or visible`);if(e.viewBox&&(rp(e.viewBox.x,"viewBox.x"),rp(e.viewBox.y,"viewBox.y"),rp(e.viewBox.width,"viewBox.width"),rp(e.viewBox.height,"viewBox.height"),!(e.viewBox.width>0)||!(e.viewBox.height>0)))throw Error(`Marker "${e.id}" viewBox must be positive`)}function ry(e,t={}){rg(e);let r=" ".repeat(t.indent??2),i=`${r} `,n=e.units,o=e.orient??"auto",a=[`id="${f(e.id)}"`,`markerWidth="${rp(e.size.width,"size.width")}"`,`markerHeight="${rp(e.size.height,"size.height")}"`,`refX="${rp(e.ref.x,"ref.x")}"`,`refY="${rp(e.ref.y,"ref.y")}"`,`orient="${f(String(o))}"`,...n?[`markerUnits="${f(n)}"`]:[],...e.viewBox?[`viewBox="${rp(e.viewBox.x,"viewBox.x")} ${rp(e.viewBox.y,"viewBox.y")} ${rp(e.viewBox.width,"viewBox.width")} ${rp(e.viewBox.height,"viewBox.height")}"`]:[],...e.overflow?[`overflow="${f(e.overflow)}"`]:[]];return[`${r}<marker ${a.join(" ")}>`,...function e(t,r,i){let n=function(e){if(!e)return"";let t=[];return void 0!==e.fill&&t.push(`fill="${f(e.fill)}"`),void 0!==e.stroke&&t.push(`stroke="${f(e.stroke)}"`),void 0!==e.strokeWidth&&t.push(`stroke-width="${f(e.strokeWidth)}"`),void 0!==e.strokeDasharray&&t.push(`stroke-dasharray="${f(e.strokeDasharray)}"`),void 0!==e.strokeDashoffset&&t.push(`stroke-dashoffset="${f(e.strokeDashoffset)}"`),void 0!==e.strokeLinecap&&t.push(`stroke-linecap="${f(e.strokeLinecap)}"`),void 0!==e.strokeLinejoin&&t.push(`stroke-linejoin="${f(e.strokeLinejoin)}"`),void 0!==e.strokeMiterlimit&&t.push(`stroke-miterlimit="${f(e.strokeMiterlimit)}"`),void 0!==e.vectorEffect&&t.push(`vector-effect="${f(e.vectorEffect)}"`),void 0!==e.paintOrder&&t.push(`paint-order="${f(e.paintOrder)}"`),void 0!==e.opacity&&t.push(`opacity="${f(e.opacity)}"`),t.length>0?` ${t.join(" ")}`:""}(r);switch(t.kind){case"rect":return[`${i}<rect x="${rp(t.x,"rect.x")}" y="${rp(t.y,"rect.y")}" width="${rp(t.width,"rect.width")}" height="${rp(t.height,"rect.height")}"${void 0!==t.rx?` rx="${rp(t.rx,"rect.rx")}"`:""}${void 0!==t.ry?` ry="${rp(t.ry,"rect.ry")}"`:""}${n} />`];case"circle":return[`${i}<circle cx="${rp(t.cx,"circle.cx")}" cy="${rp(t.cy,"circle.cy")}" r="${rp(t.r,"circle.r")}"${n} />`];case"ellipse":return[`${i}<ellipse cx="${rp(t.cx,"ellipse.cx")}" cy="${rp(t.cy,"ellipse.cy")}" rx="${rp(t.rx,"ellipse.rx")}" ry="${rp(t.ry,"ellipse.ry")}"${n} />`];case"line":return[`${i}<line x1="${rp(t.x1,"line.x1")}" y1="${rp(t.y1,"line.y1")}" x2="${rp(t.x2,"line.x2")}" y2="${rp(t.y2,"line.y2")}"${n} />`];case"polygon":return[`${i}<polygon points="${rh(t.points)}"${n} />`];case"polyline":return[`${i}<polyline points="${rh(t.points)}"${n} />`];case"path":return[`${i}<path d="${f(t.d)}"${n} />`];case"compound":return t.children.flatMap(t=>e(t,r,i))}}(e.geometry,e.paint,i),`${r}</marker>`].join(`
11
- `)}function rb(e,t={}){let r=new Set;for(let t of e){if(r.has(t.id))throw Error(`Duplicate marker resource "${t.id}"`);r.add(t.id)}return e.map(e=>ry(e,t)).join(`
12
- `)}Object.freeze(["importance","value","category","status","progress","route","emphasis"]);var rx=/^[A-Za-z_][A-Za-z0-9_.:-]*$/,rk=Object.freeze({maxIdLength:256,maxCoordinate:1e6,maxStopsPerGradient:256,maxResources:1e4,maxAggregateStops:2e4,maxSerializationBytes:8e6});function rv(e,t){if(!Number.isFinite(e))throw Error(`Linear gradient ${t} must be finite`);if(Math.abs(e)>rk.maxCoordinate)throw Error(`Linear gradient ${t} must not exceed ${rk.maxCoordinate}`);return e}function rE(e){if(!rx.test(e.id))throw Error(`Linear gradient id ${JSON.stringify(e.id)} must use the safe SVG id grammar`);if(e.id.length>rk.maxIdLength)throw Error(`Linear gradient id must contain at most ${rk.maxIdLength} characters`);if("userSpaceOnUse"!==e.units&&"objectBoundingBox"!==e.units)throw Error(`Linear gradient "${e.id}" units must be userSpaceOnUse or objectBoundingBox`);if(rv(e.x1,"x1"),rv(e.y1,"y1"),rv(e.x2,"x2"),rv(e.y2,"y2"),e.stops.length<2)throw Error(`Linear gradient "${e.id}" must declare at least two stops`);if(e.stops.length>rk.maxStopsPerGradient)throw Error(`Linear gradient "${e.id}" must declare at most ${rk.maxStopsPerGradient} stops`);let t=-1;for(let[r,i]of e.stops.entries()){if(rv(i.offset,`stops[${r}].offset`),i.offset<0||i.offset>1)throw Error(`Linear gradient "${e.id}" stop offsets must be in [0,1]`);if(i.offset<t)throw Error(`Linear gradient "${e.id}" stop offsets must be non-decreasing`);if(t=i.offset,void 0===N(i.color)||/^url\s*\(/i.test(i.color))throw Error(`Linear gradient "${e.id}" stop ${r} must use a safe non-fetching CSS paint`);if(void 0!==i.opacity&&(!Number.isFinite(i.opacity)||i.opacity<0||i.opacity>1))throw Error(`Linear gradient "${e.id}" stop opacity must be in [0,1]`)}}function r$(e,t={}){rE(e);let r=" ".repeat(t.indent??2),i=`${r} `,n=[`id="${f(e.id)}"`,`gradientUnits="${e.units}"`,`x1="${rv(e.x1,"x1")}"`,`y1="${rv(e.y1,"y1")}"`,`x2="${rv(e.x2,"x2")}"`,`y2="${rv(e.y2,"y2")}"`];return[`${r}<linearGradient ${n.join(" ")}>`,...e.stops.map(e=>{var t;return`${i}<stop offset="${t=e.offset,`${Math.round(1e5*t)/1e3}%`}" stop-color="${f(e.color)}"${void 0===e.opacity?"":` stop-opacity="${e.opacity}"`} />`}),`${r}</linearGradient>`].join(`
13
- `)}var rw=Object.freeze({maxExtent:1e6,maxNodes:1e5,maxDepth:64,maxTextLength:1e6,maxTextBytes:2e6,maxPoints:5e4,maxSerializationBytesPerNode:5e6,maxAggregateSerializationBytes:16e6,maxFinalSvgBytes:8e6}),rS=class extends Error{constructor(e){super(`Scene validation failed: ${e.map(e=>`${e.path}: ${e.message}`).join("; ")}`),this.diagnostics=e,this.name="SceneValidationError"}diagnostics;code="SCENE_VALIDATION_FAILED"},rN=rw.maxExtent,rC=rw.maxNodes,rM=rw.maxDepth,rz=rw.maxTextLength,rO=rw.maxTextBytes,rT=rw.maxPoints,rj=rw.maxSerializationBytesPerNode,r_=rw.maxAggregateSerializationBytes,rI=rw.maxFinalSvgBytes,rA=/^[A-Za-z0-9][A-Za-z0-9_.:/-]*$/,rD=/^[a-z0-9][a-z0-9._/-]*:[a-z0-9][a-z0-9._/-]*$/i,rB=/^(?:none|[-+]?\d*\.?\d+(?:[eE][-+]?\d+)?(?:[\s,]+[-+]?\d*\.?\d+(?:[eE][-+]?\d+)?)*)$/,rL=/[\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]/,rP=/^([-+]?\d*\.?\d+(?:[eE][-+]?\d+)?)(?:px)?$/,rU=/^([-+]?\d*\.?\d+(?:[eE][-+]?\d+)?)$/,rF=/^var\(--[a-z0-9_-]+(?:,\s*[-+]?\d*\.?\d+)?\)$/i,rR=Object.freeze({M:2,m:2,L:2,l:2,H:1,h:1,V:1,v:1,C:6,c:6,S:4,s:4,Q:4,q:4,T:2,t:2,A:7,a:7,Z:0,z:0}),rW=/[-+]?(?:(?:\d+(?:\.\d*)?)|(?:\.\d+))(?:[eE][-+]?\d+)?/y,rq=["fill","stroke","strokeWidth","strokeDasharray","strokeDashoffset","strokeLinecap","strokeLinejoin","strokeMiterlimit","vectorEffect","paintOrder","opacity"];function rG(e,t="final SVG"){if("string"!=typeof e)throw TypeError(`${t} must be a string`);if(!(3*e.length<=rI)&&!y("final-svg-budget",e,()=>E(e,rI)<=rI))throw RangeError(`${t} exceeds the ${rI}-byte final SVG limit`)}function rV(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function rH(e,t,r,i){e.push({code:t,path:r,message:i})}function rZ(e,t,r,i){let n=new Set(t);for(let t of Object.keys(e))n.has(t)||rH(i,"SCENE_DOCUMENT",`${r}.${t}`,"is not part of the external Scene contract")}function rY(e,t,r,i={}){return"number"==typeof e&&Number.isFinite(e)?(i.positive&&e<=0&&rH(r,"SCENE_BOUNDS",t,"must be positive"),i.nonNegative&&e<0&&rH(r,"SCENE_BOUNDS",t,"must be non-negative"),Math.abs(e)>rN&&rH(r,"SCENE_BOUNDS",t,`must not exceed ${rN} user units`),!0):(rH(r,"SCENE_FINITE",t,"must be a finite number"),!1)}function rJ(e,t,r,i={}){return"string"!=typeof e?(rH(r,"SCENE_ID",t,"must be a string"),!1):(i.empty||0!==e.length||rH(r,"SCENE_ID",t,"must not be empty"),e.length>(i.max??256)&&rH(r,"SCENE_ID",t,"is too long"),rL.test(e)&&rH(r,"SCENE_ID",t,"contains a control character"),i.externalId&&!rA.test(e)&&rH(r,"SCENE_ID",t,"must use the safe external id grammar"),!0)}function rK(e,t,r,i={}){if(void 0===e)return;if("string"!=typeof e&&"number"!=typeof e)return void rH(r,"SCENE_PAINT",t,"must be a finite numeric value");let n=("string"==typeof e?e.trim():void 0)?.match(i.length?rP:rU),o="number"==typeof e?e:n?Number(n[1]):NaN;if(Number.isFinite(o))i.nonNegative&&o<0?rH(r,"SCENE_PAINT",t,"must be non-negative"):i.unitInterval&&(o<0||o>1)&&rH(r,"SCENE_PAINT",t,"must be in [0,1]");else{if("string"==typeof e&&rF.test(e.trim()))return;rH(r,"SCENE_PAINT",t,`must be a finite number or safe numeric custom-property reference (received ${JSON.stringify(e)})`)}}function rQ(e,t,r,i=!1){if(!rV(e))return void rH(r,"SCENE_PAINT",t,"must be a paint object");for(let n of(i&&rZ(e,rq,t,r),["fill","stroke"])){let o=e[n],a=rX(o);void 0!==o&&void 0===N(o)&&(i||!a)&&rH(r,"SCENE_PAINT",`${t}.${n}`,"must be a safe non-fetching CSS paint")}if(rK(e.strokeWidth,`${t}.strokeWidth`,r,{nonNegative:!0,length:!0}),rK(e.strokeDashoffset,`${t}.strokeDashoffset`,r,{length:!0}),rK(e.strokeMiterlimit,`${t}.strokeMiterlimit`,r,{nonNegative:!0}),rK(e.opacity,`${t}.opacity`,r,{unitInterval:!0}),rK(e.fillOpacity,`${t}.fillOpacity`,r,{unitInterval:!0}),rK(e.strokeOpacity,`${t}.strokeOpacity`,r,{unitInterval:!0}),void 0===e.strokeDasharray||"string"==typeof e.strokeDasharray&&rB.test(e.strokeDasharray.trim())||rH(r,"SCENE_PAINT",`${t}.strokeDasharray`,'must be "none" or a finite numeric dash list'),void 0===e.strokeLinecap||["butt","round","square"].includes(String(e.strokeLinecap))||rH(r,"SCENE_PAINT",`${t}.strokeLinecap`,"must be butt, round, or square"),void 0===e.strokeLinejoin||["arcs","bevel","miter","miter-clip","round"].includes(String(e.strokeLinejoin))||rH(r,"SCENE_PAINT",`${t}.strokeLinejoin`,"must be arcs, bevel, miter, miter-clip, or round"),void 0===e.vectorEffect||["none","non-scaling-stroke"].includes(String(e.vectorEffect))||rH(r,"SCENE_PAINT",`${t}.vectorEffect`,"must be none or non-scaling-stroke"),void 0!==e.paintOrder){let i="string"==typeof e.paintOrder?e.paintOrder.trim().split(/\s+/).filter(Boolean).map(e=>e.toLowerCase()):[];1===i.length&&"normal"===i[0]||i.length>=1&&i.length<=3&&new Set(i).size===i.length&&i.every(e=>["fill","stroke","markers"].includes(e))||rH(r,"SCENE_PAINT",`${t}.paintOrder`,"must be normal or one to three unique fill, stroke, and markers keywords")}}function rX(e){return("string"==typeof e?/^url\(#([A-Za-z_][A-Za-z0-9_.:-]*)\)$/.exec(e.trim()):null)?.[1]}function r0(e,t,r,i,n,o,a,s){if(!e||"string"!=typeof i||e[r])return;let d=Math.max(0,a-e[t]),l=E(i,d);l>d?(e[t]=a+1,e[r]=!0,rH(o,"SCENE_BOUNDS",n,`${s} exceed the aggregate ${a}-byte limit`)):e[t]+=l}function r1(e,t,r,i,n=!1){rV(e)?(n&&rZ(e,["x","y"],t,r),!i||i.pointsExceeded||++i.points>rT&&(i.pointsExceeded=!0,rH(r,"SCENE_BOUNDS",t,`Scene points exceed the aggregate ${rT}-point limit`)),rY(e.x,`${t}.x`,r),rY(e.y,`${t}.y`,r)):rH(r,"SCENE_FINITE",t,"must be a point object")}function r2(e,t,r){if(!rV(e)||"number"!=typeof e.x||"number"!=typeof e.y)return;let i=Math.hypot(e.x,e.y);(!Number.isFinite(i)||Math.abs(i-1)>1e-9)&&rH(r,"SCENE_FINITE",t,"must be a finite unit vector")}function r3(e,t,r,i,n,o=!1){if(!Array.isArray(e))return void rH(r,"SCENE_FINITE",t,"must be an array of points");if(e.length<i&&rH(r,"SCENE_BOUNDS",t,`must contain at least ${i} points`),n?.pointCollections.has(e))return;n?.pointCollections.add(e),e.length>rC&&rH(r,"SCENE_BOUNDS",t,"contains too many points");let a=Math.min(e.length,rC,n?Math.max(0,rT-n.points+1):rC);for(let i=0;i<a;i++)r1(e[i],`${t}[${i}]`,r,n,o)}function r5(e,t,r,i=!1,n=0,o,a=!1){if(n>rM)return void rH(r,"SCENE_BOUNDS",t,`geometry exceeds maximum nesting depth ${rM}`);if(!rV(e)||"string"!=typeof e.kind)return void rH(r,"SCENE_DOCUMENT",t,"must be a typed geometry object");if(a){let i={rect:["kind","x","y","width","height","rx","ry"],circle:["kind","cx","cy","r"],ellipse:["kind","cx","cy","rx","ry"],line:["kind","x1","y1","x2","y2"],polygon:["kind","points"],polyline:["kind","points"],path:["kind","d","points"],compound:["kind","children"]}[e.kind];i&&rZ(e,i,t,r)}switch(e.kind){case"rect":rY(e.x,`${t}.x`,r),rY(e.y,`${t}.y`,r),rY(e.width,`${t}.width`,r,{nonNegative:!0}),rY(e.height,`${t}.height`,r,{nonNegative:!0}),void 0!==e.rx&&rY(e.rx,`${t}.rx`,r,{nonNegative:!0}),void 0!==e.ry&&rY(e.ry,`${t}.ry`,r,{nonNegative:!0});return;case"circle":rY(e.cx,`${t}.cx`,r),rY(e.cy,`${t}.cy`,r),rY(e.r,`${t}.r`,r,{nonNegative:!0});return;case"ellipse":rY(e.cx,`${t}.cx`,r),rY(e.cy,`${t}.cy`,r),rY(e.rx,`${t}.rx`,r,{nonNegative:!0}),rY(e.ry,`${t}.ry`,r,{nonNegative:!0});return;case"line":rY(e.x1,`${t}.x1`,r),rY(e.y1,`${t}.y1`,r),rY(e.x2,`${t}.x2`,r),rY(e.y2,`${t}.y2`,r);return;case"polygon":r3(e.points,`${t}.points`,r,3,o,a);return;case"polyline":r3(e.points,`${t}.points`,r,2,o,a);return;case"path":if("string"!=typeof e.d||0===e.d.length||e.d.length>rz)rH(r,"SCENE_SECURITY",`${t}.d`,"must use bounded SVG path data");else{let n=function(e,t=!1){let r=0,i,n=!1,o=0,a=()=>{for(;r<e.length&&(","===e[r]||/\s/.test(e[r]));)r++},s=()=>{let t=e[r];return void 0!==t&&"MmLlHhVvCcSsQqTtAaZz".includes(t)?t:void 0},d=()=>{a(),rW.lastIndex=r;let t=rW.exec(e);if(!t)return"expected a numeric path parameter";r=rW.lastIndex;let i=Number(t[0]);return Number.isFinite(i)?Math.abs(i)>rN?`path parameter ${t[0]} exceeds ${rN} user units`:void 0:`path parameter ${t[0]} is not finite`};for(;a(),!(r>=e.length);){let l=s();if(void 0!==l){if(i=l,r++,!n&&"M"!==i&&"m"!==i)return"must start with an M or m moveto command";if(n&&t&&("M"===i||"m"===i))return"multiple moveto subpaths require typed subpath geometry";if(n=!0,"Z"===i||"z"===i){i=void 0;continue}}else if(void 0===i)return"path parameters must follow a command";let c=rR[i];if(void 0===c||0===c)return`unknown path command ${String(i)}`;let u=0;for(;;){if(a(),r>=e.length||void 0!==s()){if(0===u)return`command ${i} requires ${c} parameters`;break}for(let t=0;t<c;t++){if(a(),r>=e.length||void 0!==s())return`command ${i} ended before its ${c}-parameter group was complete`;if(("A"===i||"a"===i)&&(3===t||4===t)){let t=e[r];if("0"!==t&&"1"!==t)return`command ${i} arc flags must be 0 or 1`;r++}else{let e=d();if(e)return e}}if(u++,++o>rT)return`contains more than ${rT} path parameter groups`}}return n?void 0:"must contain an M or m moveto command"}(e.d,a&&!i);n&&rH(r,"SCENE_SECURITY",`${t}.d`,`must use semantic SVG path data: ${n}`)}if(void 0!==e.points&&r3(e.points,`${t}.points`,r,2,o,a),void 0!==e.markerMidpoints&&r3(e.markerMidpoints,`${t}.markerMidpoints`,r,0,o,a),void 0!==e.subpaths)if(Array.isArray(e.subpaths)&&0!==e.subpaths.length)for(let i=0;i<Math.min(e.subpaths.length,rC);i++){let n=e.subpaths[i];if(!rV(n)){rH(r,"SCENE_DOCUMENT",`${t}.subpaths[${i}]`,"must be a typed contour");continue}r3(n.points,`${t}.subpaths[${i}].points`,r,2,o,a),"boolean"!=typeof n.closed&&rH(r,"SCENE_DOCUMENT",`${t}.subpaths[${i}].closed`,"must be boolean")}else rH(r,"SCENE_BOUNDS",`${t}.subpaths`,"must be a non-empty array of typed contours");return;case"compound":if(!Array.isArray(e.children))return void rH(r,"SCENE_BOUNDS",`${t}.children`,"must be a geometry array");e.children.length>rC&&rH(r,"SCENE_BOUNDS",`${t}.children`,"contains too many geometries");for(let s=0;s<Math.min(e.children.length,rC);s++)r5(e.children[s],`${t}.children[${s}]`,r,i,n+1,o,a);return;default:rH(r,"SCENE_DOCUMENT",`${t}.kind`,`unknown geometry kind "${e.kind}"`)}}function r4(e,t,r,i,n){if(!rV(e))return rH(r,"SCENE_MARKER",t,"must be a marker descriptor"),!1;if(i&&rZ(e,["id","shape","geometry","size","viewBox","ref","bounds","units","orient","overflow","paint","scale"],t,r),rJ(e.id,`${t}.id`,r,{externalId:i}),["arrow","open-arrow","circle","cross","triangle","diamond","diamond-open"].includes(String(e.shape))||rH(r,"SCENE_MARKER",`${t}.shape`,"must be a known marker shape"),r5(e.geometry,`${t}.geometry`,r,!0,0,n,i),i&&rV(e.geometry)&&"compound"===e.geometry.kind&&(!Array.isArray(e.geometry.children)||0===e.geometry.children.length)&&rH(r,"SCENE_BOUNDS",`${t}.geometry.children`,"external marker compounds must contain geometry"),rV(e.size)&&(i&&rZ(e.size,["width","height"],`${t}.size`,r),rY(e.size.width,`${t}.size.width`,r,{positive:!0}),rY(e.size.height,`${t}.size.height`,r,{positive:!0})),rV(e.ref)&&r1(e.ref,`${t}.ref`,r,n,i),void 0!==e.paint&&rQ(e.paint,`${t}.paint`,r,i),rV(e.viewBox)&&(i&&rZ(e.viewBox,["x","y","width","height"],`${t}.viewBox`,r),rY(e.viewBox.x,`${t}.viewBox.x`,r),rY(e.viewBox.y,`${t}.viewBox.y`,r),rY(e.viewBox.width,`${t}.viewBox.width`,r,{positive:!0}),rY(e.viewBox.height,`${t}.viewBox.height`,r,{positive:!0})),rV(e.bounds)){for(let n of(i&&rZ(e.bounds,["x0","y0","x1","y1"],`${t}.bounds`,r),["x0","y0","x1","y1"]))rY(e.bounds[n],`${t}.bounds.${n}`,r);"number"==typeof e.bounds.x0&&"number"==typeof e.bounds.x1&&e.bounds.x0>e.bounds.x1&&rH(r,"SCENE_BOUNDS",`${t}.bounds`,"x0 must not exceed x1"),"number"==typeof e.bounds.y0&&"number"==typeof e.bounds.y1&&e.bounds.y0>e.bounds.y1&&rH(r,"SCENE_BOUNDS",`${t}.bounds`,"y0 must not exceed y1")}void 0!==e.scale&&rY(e.scale,`${t}.scale`,r,{nonNegative:!0}),void 0===e.units||["strokeWidth","userSpaceOnUse"].includes(String(e.units))||rH(r,"SCENE_MARKER",`${t}.units`,"must be strokeWidth or userSpaceOnUse"),"number"==typeof e.orient?rY(e.orient,`${t}.orient`,r):void 0===e.orient||["auto","auto-start-reverse"].includes(String(e.orient))||rH(r,"SCENE_MARKER",`${t}.orient`,"must be auto, auto-start-reverse, or a finite angle"),void 0===e.overflow||["hidden","visible"].includes(String(e.overflow))||rH(r,"SCENE_MARKER",`${t}.overflow`,"must be hidden or visible");try{rg(e)}catch(e){rH(r,"SCENE_MARKER",t,e instanceof Error?e.message:String(e))}return"string"==typeof e.id}function r6(e,t,r){let i;try{i=ty(e),E(i,rj)>rj&&rH(r.diagnostics,"SCENE_DOCUMENT",t,"has an oversized SVG serialization")}catch(e){rH(r.diagnostics,"SCENE_DOCUMENT",t,e instanceof Error?e.message:String(e))}return r.aggregateBudgets&&void 0!==i&&r0(r.budget,"serializationBytes","serializationExceeded",i,t,r.diagnostics,r_,"Scene serializations"),i}function r8(e,t,r,i,n){var a,d,l,c;if(i>rM)return void rH(r.diagnostics,"SCENE_BOUNDS",t,`exceeds maximum nesting depth ${rM}`);if(++r.nodeCount>rC){r.nodeCount===rC+1&&rH(r.diagnostics,"SCENE_BOUNDS",t,"contains too many Scene nodes");return}if(!rV(e)||"string"!=typeof e.kind)return void rH(r.diagnostics,"SCENE_DOCUMENT",t,"must be a typed Scene node");let u=e.kind;if(function(e,t,r){if(rV(e))if("connector"===e.kind){if(rV(e.stroke)){let i=rX(e.stroke.color);i&&r.push({id:i,path:`${t}.stroke.color`})}if(Array.isArray(e.labels))for(let i=0;i<Math.min(e.labels.length,rC);i++){let n=e.labels[i];rV(n)&&r7(n.paint,`${t}.labels[${i}].paint`,r)}}else r7(e.paint,`${t}.paint`,r)}(e,t,r.paintReferences),!["shape","connector","text","group","document"].includes(u))return void rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.kind`,`unknown Scene node kind "${u}"`);if(r.external&&i>0&&"document"===u&&rH(r.diagnostics,"SCENE_DOCUMENT",t,`${u} marks must be top-level document furniture`),r.external){let i=["kind","id","role","identity","accessibility","channels","transform","owner"];rZ(e,{shape:[...i,"geometry","paint"],text:[...i,"text","x","y","fontSize","anchor","baselineShift","paint","fontWeight","letterSpacing","display","textLayout","block","measurement","prepared"],group:[...i,"open","close","children","join"],document:[...i,"element","text","domId","markerResources"],connector:[...i,"lineStyle","endpoints","relationship","route","stroke","markers","labels","hit","terminalProjection"]}[u],t,r.diagnostics)}if(rJ(e.id,`${t}.id`,r.diagnostics,{externalId:r.external})){let i=r.ids.get(e.id);r.external&&i?rH(r.diagnostics,"SCENE_ID",`${t}.id`,`duplicates ${i.path}`):r.ids.set(e.id,{path:`${t}.id`,kind:u})}if(void 0!==e.domId&&rJ(e.domId,`${t}.domId`,r.diagnostics,{externalId:r.external})){let i=r.domIds.get(e.domId),n=r.markerIds.get(e.domId),o=r.gradientIds.get(e.domId);r.external&&i?rH(r.diagnostics,"SCENE_ID",`${t}.domId`,`duplicates DOM id owned by ${i}`):r.external&&n?rH(r.diagnostics,"SCENE_ID",`${t}.domId`,`collides with marker resource "${e.domId}"`):o?rH(r.diagnostics,"SCENE_ID",`${t}.domId`,`collides with gradient resource "${e.domId}"`):r.domIds.set(e.domId,`${t}.domId`)}a=e.role,d=`${t}.role`,"string"!=typeof a?rH(r.diagnostics,"SCENE_ROLE",d,"must be a Scene role string"):Object.prototype.hasOwnProperty.call(o,a)||rD.test(a)?s(a).applicableKinds.includes(u)||rH(r.diagnostics,"SCENE_ROLE",d,`role "${a}" is not applicable to ${u} marks`):rH(r.diagnostics,"SCENE_ROLE",d,"must be a built-in or namespaced Scene role"),"string"==typeof e.id&&"string"==typeof e.role&&r.subjects.add(JSON.stringify([e.id,e.role])),rV(e.identity)&&"string"==typeof e.identity.id&&"string"==typeof e.identity.role&&r.subjects.add(JSON.stringify([e.identity.id,e.identity.role])),rV(e.owner)&&"string"==typeof e.owner.id&&"string"==typeof e.owner.role&&r.ownerReferences.push({key:JSON.stringify([e.owner.id,e.owner.role]),path:`${t}.owner`}),function(e,t,r){if(void 0!==e){if(!rV(e))return rH(r,"SCENE_DOCUMENT",t,"must be a semantic channel object");for(let i of["importance","value","progress"])void 0!==e[i]&&rY(e[i],`${t}.${i}`,r);for(let i of("number"==typeof e.progress&&(e.progress<0||e.progress>1)&&rH(r,"SCENE_BOUNDS",`${t}.progress`,"must be in [0,1]"),["category","status","route"]))void 0!==e[i]&&rJ(e[i],`${t}.${i}`,r,{max:4096});void 0!==e.emphasis&&"boolean"!=typeof e.emphasis&&rH(r,"SCENE_DOCUMENT",`${t}.emphasis`,"must be boolean")}}(e.channels,`${t}.channels`,r.diagnostics);let m=r.native&&"document"!==u?void 0:r6(e,t,r);if(void 0!==e.transform){if(rV(e.transform)&&["rotate","matrix"].includes(String(e.transform.kind)))for(let i of"matrix"===e.transform.kind?["a","b","c","d","e","f"]:["angle","cx","cy"])rY(e.transform[i],`${t}.transform.${i}`,r.diagnostics);else rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.transform`,"must be a rotate or matrix transform");r.external&&rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.transform`,"external Scene transforms are not exposed by the declarative builder")}if(void 0!==e.owner&&(rV(e.owner)?(rJ(e.owner.id,`${t}.owner.id`,r.diagnostics),"string"==typeof e.owner.role&&(Object.hasOwn(o,e.owner.role)||rD.test(e.owner.role))||rH(r.diagnostics,"SCENE_ROLE",`${t}.owner.role`,"must be a Scene role")):rH(r.diagnostics,"SCENE_REFERENCE",`${t}.owner`,"must be a semantic owner")),void 0!==e.visibility&&"conditional"!==e.visibility&&rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.visibility`,"must be conditional"),void 0!==e.attributes&&function(e,t,r){if(!rV(e))return rH(r,"SCENE_DOCUMENT",t,"must be an attribute hook object");if(rZ(e,["className","data","ariaHidden","tabIndex","ariaLabel"],t,r),void 0===e.className||"string"==typeof e.className&&ti.test(e.className)||rH(r,"SCENE_DOCUMENT",`${t}.className`,"must be space-separated CSS class tokens"),void 0!==e.ariaHidden&&!0!==e.ariaHidden&&rH(r,"SCENE_DOCUMENT",`${t}.ariaHidden`,"must be true when present"),void 0!==e.tabIndex&&0!==e.tabIndex&&rH(r,"SCENE_DOCUMENT",`${t}.tabIndex`,"must be 0 when present"),void 0!==e.ariaLabel&&rJ(e.ariaLabel,`${t}.ariaLabel`,r,{max:rz}),void 0!==e.data){if(!rV(e.data))return rH(r,"SCENE_DOCUMENT",`${t}.data`,"must be a string record");for(let[i,n]of Object.entries(e.data))(!tn.test(i)||tr.has(i))&&rH(r,"SCENE_DOCUMENT",`${t}.data.${i}`,"must be a family data-* key the writer does not own"),rJ(n,`${t}.data.${i}`,r,{empty:!0,max:rz})}}(e.attributes,`${t}.attributes`,r.diagnostics),"shape"===u){void 0===e.identity&&"string"==typeof e.role&&en(e.role)&&(r.native&&"string"==typeof e.id&&rV(e.owner)&&"string"==typeof e.owner.id&&e.owner.role===e.role?r.native.artwork.push({id:e.id,owner:{id:e.owner.id,role:e.role},path:`${t}.identity`}):n&&rV(e.owner)&&e.role===n.role&&e.owner.id===n.id&&e.owner.role===n.role||rH(r.diagnostics,"SCENE_FIDELITY",`${t}.identity`,"owned artwork without DOM identity must be inside its matching semantic group")),void 0!==e.surfaceFragment&&"boolean"!=typeof e.surfaceFragment&&rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.surfaceFragment`,"must be boolean"),r5(e.geometry,`${t}.geometry`,r.diagnostics,!1,0,r.budget,r.external),r.external&&rV(e.geometry)&&("path"===e.geometry.kind||"compound"===e.geometry.kind)&&rH(r.diagnostics,"SCENE_BOUNDS",`${t}.geometry`,"external shapes must use a directly bounded structured geometry"),rQ(e.paint,`${t}.paint`,r.diagnostics,r.external),void 0!==e.childPaints&&(Array.isArray(e.childPaints)&&rV(e.geometry)&&"compound"===e.geometry.kind&&Array.isArray(e.geometry.children)&&e.childPaints.length===e.geometry.children.length?e.childPaints.forEach((e,i)=>rQ(e,`${t}.childPaints[${i}]`,r.diagnostics,r.external)):rH(r.diagnostics,"SCENE_PAINT",`${t}.childPaints`,"must give one paint per compound geometry child")),void 0!==e.conditionalPaint&&("conditional"!==e.visibility&&rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.conditionalPaint`,"requires an explicit conditional state"),rQ(e.conditionalPaint,`${t}.conditionalPaint`,r.diagnostics,r.external));return}if("text"===u){if(rJ(e.text,`${t}.text`,r.diagnostics,{empty:!0,max:rz}),r.aggregateBudgets&&r0(r.budget,"textBytes","textExceeded",e.text,`${t}.text`,r.diagnostics,rO,"Scene text values"),rY(e.x,`${t}.x`,r.diagnostics),rY(e.y,`${t}.y`,r.diagnostics),rY(e.fontSize,`${t}.fontSize`,r.diagnostics,{positive:!0}),void 0!==e.fontWeight&&rY(e.fontWeight,`${t}.fontWeight`,r.diagnostics,{positive:!0}),void 0!==e.letterSpacing&&rY(e.letterSpacing,`${t}.letterSpacing`,r.diagnostics),void 0!==e.display&&"literal"!==e.display&&"formatted"!==e.display&&rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.display`,"must be literal or formatted"),void 0===e.measurement||["prepared","fallback"].includes(String(e.measurement))||rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.measurement`,"must identify prepared or fallback measurement"),"prepared"!==e.measurement||rV(e.block)&&"px"===e.block.unit&&rV(e.block.prepared)||rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.block`,"prepared text must retain its actual pixel block"),rV(e.block)){for(let i of(l=e.block,ed.has(l)||rH(r.diagnostics,"SCENE_FIDELITY",`${t}.block`,"must retain the actual immutable pixel text preparation"),["fontSize","fontWeight","letterSpacing"]))void 0!==e[i]&&e[i]!==e.block[i]&&rH(r.diagnostics,"SCENE_FIDELITY",`${t}.block.${i}`,"must equal the retained text typography");for(let i of["width","height","fontSize","fontWeight","lineHeight"])rY(e.block[i],`${t}.block.${i}`,r.diagnostics,{nonNegative:!0});rV(e.textLayout)&&(e.block.width!==e.textLayout.width||e.block.height!==e.textLayout.height||e.block.lineHeight!==e.textLayout.lineHeight)&&rH(r.diagnostics,"SCENE_FIDELITY",`${t}.textLayout`,"retained block differs from occupied text geometry")}if(void 0!==e.textLayout&&(rV(e.textLayout)?(r.external&&rZ(e.textLayout,["width","height","lineHeight","offsetY"],`${t}.textLayout`,r.diagnostics),rY(e.textLayout.width,`${t}.textLayout.width`,r.diagnostics,{nonNegative:!0}),rY(e.textLayout.height,`${t}.textLayout.height`,r.diagnostics,{nonNegative:!0}),rY(e.textLayout.lineHeight,`${t}.textLayout.lineHeight`,r.diagnostics,{positive:!0}),rY(e.textLayout.offsetY,`${t}.textLayout.offsetY`,r.diagnostics)):rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.textLayout`,"must be measured text geometry")),["start","middle","end"].includes(String(e.anchor))||rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.anchor`,"must be start, middle, or end"),void 0!==e.baselineShift&&rY(e.baselineShift,`${t}.baselineShift`,r.diagnostics),void 0===e.dominantBaseline||["middle","central","hanging"].includes(String(e.dominantBaseline))||rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.dominantBaseline`,"must be middle, central, or hanging"),void 0!==e.fontStyle&&"italic"!==e.fontStyle&&rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.fontStyle`,"must be italic"),void 0===e.textDecoration||["underline","line-through","underline line-through"].includes(String(e.textDecoration))||rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.textDecoration`,"must be underline, line-through, or both"),void 0!==e.spans)if(Array.isArray(e.spans)&&0!==e.spans.length){e.spans.length>rC&&rH(r.diagnostics,"SCENE_BOUNDS",`${t}.spans`,"contains too many text runs");for(let i=0;i<Math.min(e.spans.length,rC);i++){let n=e.spans[i];if(!rV(n)){rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.spans[${i}]`,"must be a painted run");continue}rJ(n.text,`${t}.spans[${i}].text`,r.diagnostics,{empty:!0,max:rz}),r.aggregateBudgets&&r0(r.budget,"textBytes","textExceeded",n.text,`${t}.spans[${i}].text`,r.diagnostics,rO,"Scene text values"),rQ({fill:n.fill},`${t}.spans[${i}]`,r.diagnostics,r.external)}}else rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.spans`,"must be a non-empty run list");rQ(e.paint,`${t}.paint`,r.diagnostics,r.external);return}if("group"===u){if(r.native&&"string"==typeof e.role&&en(e.role)&&rV(e.identity)&&"string"==typeof e.identity.id&&e.identity.role===e.role&&r.native.groups.add(JSON.stringify([e.identity.id,e.role])),void 0!==e.paint&&(rQ(e.paint,`${t}.paint`,r.diagnostics,r.external),rV(e.paint)&&rZ(e.paint,["opacity","fill"],`${t}.paint`,r.diagnostics)),!Array.isArray(e.children))return void rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.children`,"must be an array");e.children.length>rC&&rH(r.diagnostics,"SCENE_BOUNDS",`${t}.children`,"contains too many Scene nodes");let o=Math.min(e.children.length,Math.max(0,rC-r.nodeCount+1)),a="string"==typeof e.role&&en(e.role)?rV(e.identity)&&"string"==typeof e.identity.id&&e.identity.role===e.role?{id:e.identity.id,role:e.role}:void 0:n;for(let n=0;n<o;n++){let o=e.children[n];rV(o)?(rY(o.indent,`${t}.children[${n}].indent`,r.diagnostics,{nonNegative:!0}),r8(o.node,`${t}.children[${n}].node`,r,i+1,a)):rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.children[${n}]`,"must wrap a Scene node")}return void(r.external&&("string"!=typeof e.open||!/^<g(?:\s|>)/.test(e.open)||"</g>"!==e.close)&&rH(r.diagnostics,"SCENE_SECURITY",t,"external containers must use a generated <g> wrapper"))}if("document"===u){if(void 0!==e.nonPaint){let i={accessibility:["title","desc"],stylesheet:["style"],"interaction-metadata":["title","desc"]}[String(e.nonPaint)];("content"!==e.element||!i||void 0===m||x(m).some(e=>!i.includes(e.name)))&&rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.nonPaint`,"must describe only closed non-painting metadata elements")}if(["open","title","description","definitions","content","close"].includes(String(e.element))||rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.element`,"has an unknown document element"),void 0!==e.markerResources)if(Array.isArray(e.markerResources)){e.markerResources.length>rC&&rH(r.diagnostics,"SCENE_BOUNDS",`${t}.markerResources`,"contains too many marker resources");for(let i=0;i<Math.min(e.markerResources.length,rC);i++){if(r.native&&r.markerIds.size>=rC)return void rH(r.diagnostics,"SCENE_BOUNDS",`${t}.markerResources`,"contains too many aggregate marker resources");let n=e.markerResources[i],o=`${t}.markerResources[${i}]`;if(r4(n,o,r.diagnostics,r.external,r.budget)&&"string"==typeof n.id){let e=r.markerIds.get(n.id),t=r.domIds.get(n.id);e?rH(r.diagnostics,"SCENE_MARKER",`${o}.id`,`duplicates marker resource "${n.id}"`):r.external&&t?rH(r.diagnostics,"SCENE_ID",`${o}.id`,`collides with DOM id owned by ${t}`):r.gradientIds.has(n.id)?rH(r.diagnostics,"SCENE_ID",`${o}.id`,`collides with gradient resource "${n.id}"`):r.markerIds.set(n.id,n)}}if(r.external&&"definitions"===e.element)try{let i=tp(`<defs>
14
- ${rb(e.markerResources)}
15
- </defs>`);m!==i&&rH(r.diagnostics,"SCENE_FIDELITY",t,"definitions must be generated from the typed marker resources")}catch{}}else rH(r.diagnostics,"SCENE_MARKER",`${t}.markerResources`,"must be an array");if(void 0!==e.gradientResources)if("definitions"!==e.element&&rH(r.diagnostics,"SCENE_PAINT",`${t}.gradientResources`,"are only valid on a definitions document mark"),Array.isArray(e.gradientResources)){e.gradientResources.length>rk.maxResources&&rH(r.diagnostics,"SCENE_BOUNDS",`${t}.gradientResources`,`contains more than ${rk.maxResources} gradient resources`);for(let i=0;i<Math.min(e.gradientResources.length,rk.maxResources);i++){if(r.native&&r.gradientIds.size>=rk.maxResources)return void rH(r.diagnostics,"SCENE_BOUNDS",`${t}.gradientResources`,`contains more than ${rk.maxResources} aggregate gradient resources`);let n=e.gradientResources[i],o=`${t}.gradientResources[${i}]`;try{rE(n),r.gradientIds.has(n.id)||r.markerIds.has(n.id)||r.domIds.has(n.id)?rH(r.diagnostics,"SCENE_ID",`${o}.id`,`duplicates SVG resource id "${n.id}"`):r.gradientIds.set(n.id,n)}catch(e){rH(r.diagnostics,"SCENE_PAINT",o,e instanceof Error?e.message:String(e))}}if("definitions"===e.element)try{let i=[...Array.isArray(e.markerResources)&&e.markerResources.length>0?[rb(e.markerResources)]:[],...e.gradientResources.length>0?[function(e,t={}){if(e.length>rk.maxResources)throw Error(`A definitions mark may declare at most ${rk.maxResources} linear gradients`);let r=new Set,i=0,n=0,o=[];for(let a of e){if(r.has(a.id))throw Error(`Duplicate linear gradient resource "${a.id}"`);if(r.add(a.id),(i+=a.stops.length)>rk.maxAggregateStops)throw Error(`Linear gradient resources may declare at most ${rk.maxAggregateStops} aggregate stops`);let e=r$(a,t),s=+(0!==o.length),d=rk.maxSerializationBytes-n-s,l=E(e,Math.max(0,d));if(l>d)throw Error(`Linear gradient serialization exceeds ${rk.maxSerializationBytes} bytes`);n+=l+s,o.push(e)}return o.join(`
16
- `)}(e.gradientResources)]:[]].join(`
17
- `),n=tp(`<defs>
18
- ${i}
19
- </defs>`);m!==n&&rH(r.diagnostics,"SCENE_FIDELITY",t,"definitions must be generated from typed resources")}catch{}}else rH(r.diagnostics,"SCENE_PAINT",`${t}.gradientResources`,"must be an array");r.aggregateBudgets&&("title"===e.element||"description"===e.element)&&(rJ(e.text,`${t}.text`,r.diagnostics,{empty:!0,max:rz}),r0(r.budget,"textBytes","textExceeded",e.text,`${t}.text`,r.diagnostics,rO,"Scene text values")),r.external&&"close"===e.element&&"</svg>"!==m&&rH(r.diagnostics,"SCENE_SECURITY",t,"external document close must be canonical");return}if(["solid","dotted","dashed","thick","invisible"].includes(String(e.lineStyle))||rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.lineStyle`,"has an unknown line style"),rV(e.endpoints)){for(let i of["from","to"])r.external&&void 0===e.endpoints[i]?rH(r.diagnostics,"SCENE_REFERENCE",`${t}.endpoints.${i}`,"is required for external connectors"):void 0!==e.endpoints[i]&&rJ(e.endpoints[i],`${t}.endpoints.${i}`,r.diagnostics,{externalId:r.external})&&r.endpointReferences.push({id:e.endpoints[i],path:`${t}.endpoints.${i}`});for(let i of["start","end"]){let n=e.endpoints[i];if(rV(n)&&(void 0!==n.point&&r1(n.point,`${t}.endpoints.${i}.point`,r.diagnostics,r.budget,r.external),void 0!==n.id&&rJ(n.id,`${t}.endpoints.${i}.id`,r.diagnostics,{externalId:r.external}),void 0!==n.portId&&rJ(n.portId,`${t}.endpoints.${i}.portId`,r.diagnostics,{externalId:r.external}),void 0!==n.owner)){let a=`${t}.endpoints.${i}.owner`;if(rV(n.owner)){rJ(n.owner.id,`${a}.id`,r.diagnostics),"string"==typeof n.owner.role&&(Object.hasOwn(o,n.owner.role)||rD.test(n.owner.role))||rH(r.diagnostics,"SCENE_ROLE",`${a}.role`,"must be a Scene role");let t=e.endpoints["start"===i?"from":"to"];void 0!==t&&n.owner.id!==t&&rH(r.diagnostics,"SCENE_FIDELITY",a,"must retain the authored endpoint identity"),r.ownerReferences.push({key:JSON.stringify([n.owner.id,n.owner.role]),path:a})}else rH(r.diagnostics,"SCENE_REFERENCE",a,"must be a semantic owner")}}}else rH(r.diagnostics,"SCENE_REFERENCE",`${t}.endpoints`,"must be a typed endpoint object");if(rV(e.relationship)?rJ(e.relationship.kind,`${t}.relationship.kind`,r.diagnostics,{max:4096}):rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.relationship`,"must be a typed relationship"),rV(e.relationship)&&!["forward","reverse","bidirectional","undirected","self"].includes(String(e.relationship.direction))&&rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.relationship.direction`,"has an unknown connector direction"),rV(e.route)){if(r5(e.route.geometry,`${t}.route.geometry`,r.diagnostics,!1,0,r.budget,r.external),r.external&&rV(e.route.geometry)&&"path"===e.route.geometry.kind&&!Array.isArray(e.route.geometry.points)&&rH(r.diagnostics,"SCENE_BOUNDS",`${t}.route.geometry.points`,"external connector paths require deterministic routed points"),rY(e.route.bendRadius,`${t}.route.bendRadius`,r.diagnostics,{nonNegative:!0}),["authored","layout","family","projected"].includes(String(e.route.ownership))||rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.route.ownership`,"has an unknown route ownership"),"boolean"!=typeof e.route.closed&&rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.route.closed`,"must be boolean"),!0===e.route.closed&&rV(e.route.geometry)&&"path"!==e.route.geometry.kind&&rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.route.closed`,"closed connector topology requires path geometry"),void 0!==e.route.startTangent&&(r1(e.route.startTangent,`${t}.route.startTangent`,r.diagnostics,r.budget,r.external),r2(e.route.startTangent,`${t}.route.startTangent`,r.diagnostics)),void 0!==e.route.endTangent&&(r1(e.route.endTangent,`${t}.route.endTangent`,r.diagnostics,r.budget,r.external),r2(e.route.endTangent,`${t}.route.endTangent`,r.diagnostics)),Array.isArray(e.route.labelAnchors)){e.route.labelAnchors.length>rC&&rH(r.diagnostics,"SCENE_BOUNDS",`${t}.route.labelAnchors`,"contains too many points");let i=Math.min(e.route.labelAnchors.length,rC,Math.max(0,rT-r.budget.points+1));for(let n=0;n<i;n++)r1(e.route.labelAnchors[n],`${t}.route.labelAnchors[${n}]`,r.diagnostics,r.budget,r.external)}else rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.route.labelAnchors`,"must be an array");if(Array.isArray(e.route.contours)){(0===e.route.contours.length||e.route.contours.length>rC)&&rH(r.diagnostics,"SCENE_BOUNDS",`${t}.route.contours`,"must contain a bounded non-empty contour list");for(let i=0;i<Math.min(e.route.contours.length,rC);i++){let n=e.route.contours[i];if(!rV(n)){rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.route.contours[${i}]`,"must be typed contour semantics");continue}for(let[e,o]of(r1(n.start,`${t}.route.contours[${i}].start`,r.diagnostics,r.budget,r.external),r1(n.end,`${t}.route.contours[${i}].end`,r.diagnostics,r.budget,r.external),"boolean"!=typeof n.closed&&rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.route.contours[${i}].closed`,"must be boolean"),[["startTangent",n.startTangent],["endTangent",n.endTangent]])){if(void 0===o)continue;let n=`${t}.route.contours[${i}].${e}`;r1(o,n,r.diagnostics,r.budget,r.external),r2(o,n,r.diagnostics)}}}else rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.route.contours`,"must be an array")}else rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.route`,"must be a typed connector route");if(rV(e.stroke)){if(void 0===N(e.stroke.color)&&(r.external||!rX(e.stroke.color))&&rH(r.diagnostics,"SCENE_PAINT",`${t}.stroke.color`,"must be a safe non-fetching CSS paint"),rK(e.stroke.width,`${t}.stroke.width`,r.diagnostics,{nonNegative:!0,length:!0}),rK(e.stroke.opacity,`${t}.stroke.opacity`,r.diagnostics,{unitInterval:!0}),rK(e.stroke.miterLimit,`${t}.stroke.miterLimit`,r.diagnostics,{nonNegative:!0}),rK(e.stroke.pathLength,`${t}.stroke.pathLength`,r.diagnostics,{nonNegative:!0}),["butt","round","square"].includes(String(e.stroke.lineCap))||rH(r.diagnostics,"SCENE_PAINT",`${t}.stroke.lineCap`,"has an unknown line cap"),["arcs","bevel","miter","miter-clip","round"].includes(String(e.stroke.lineJoin))||rH(r.diagnostics,"SCENE_PAINT",`${t}.stroke.lineJoin`,"has an unknown line join"),void 0===e.stroke.mixBlendMode||["normal","multiply"].includes(String(e.stroke.mixBlendMode))||rH(r.diagnostics,"SCENE_PAINT",`${t}.stroke.mixBlendMode`,"must be normal or multiply"),"boolean"!=typeof e.stroke.nonScaling&&rH(r.diagnostics,"SCENE_PAINT",`${t}.stroke.nonScaling`,"must be boolean"),void 0!==e.stroke.encodesValue&&"boolean"!=typeof e.stroke.encodesValue&&rH(r.diagnostics,"SCENE_PAINT",`${t}.stroke.encodesValue`,"must be boolean"),void 0!==e.stroke.dash)if(rV(e.stroke.dash)){let i=e.stroke.dash.array;"string"==typeof i?rB.test(i.trim())||rH(r.diagnostics,"SCENE_PAINT",`${t}.stroke.dash.array`,"must be a finite numeric dash list"):Array.isArray(i)?i.forEach((e,i)=>rK(e,`${t}.stroke.dash.array[${i}]`,r.diagnostics,{nonNegative:!0})):rH(r.diagnostics,"SCENE_PAINT",`${t}.stroke.dash.array`,"must be a string or numeric array"),rK(e.stroke.dash.offset,`${t}.stroke.dash.offset`,r.diagnostics)}else rH(r.diagnostics,"SCENE_PAINT",`${t}.stroke.dash`,"must be a dash descriptor")}else rH(r.diagnostics,"SCENE_PAINT",`${t}.stroke`,"must be a typed connector stroke");if(rV(e.hit)?(r5(e.hit.geometry,`${t}.hit.geometry`,r.diagnostics,!1,0,r.budget,r.external),rY(e.hit.strokeWidth,`${t}.hit.strokeWidth`,r.diagnostics,{nonNegative:!0}),"boolean"!=typeof e.hit.closed&&rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.hit.closed`,"must be boolean"),["stroke","none"].includes(String(e.hit.pointerEvents))||rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.hit.pointerEvents`,"has unknown pointer-event semantics"),rV(e.route)&&"boolean"==typeof e.route.closed&&"boolean"==typeof e.hit.closed&&e.hit.closed!==e.route.closed&&rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.hit.closed`,"must match route.closed topology")):rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.hit`,"must be typed hit geometry"),Array.isArray(e.labels)){e.labels.length>rC&&rH(r.diagnostics,"SCENE_BOUNDS",`${t}.labels`,"contains too many connector labels");for(let i=0;i<Math.min(e.labels.length,rC);i++){let n=e.labels[i];if(!rV(n)){rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.labels[${i}]`,"must be a label descriptor");continue}if(r.external&&rZ(n,["id","text","anchor","bounds","halo","clearance","paint","fontSize","textAnchor","visual"],`${t}.labels[${i}]`,r.diagnostics),void 0!==n.id&&rJ(n.id,`${t}.labels[${i}].id`,r.diagnostics,{externalId:r.external}),rJ(n.text,`${t}.labels[${i}].text`,r.diagnostics,{empty:!0,max:rz}),r.aggregateBudgets&&r0(r.budget,"textBytes","textExceeded",n.text,`${t}.labels[${i}].text`,r.diagnostics,rO,"Scene text values"),void 0!==n.anchor&&r1(n.anchor,`${t}.labels[${i}].anchor`,r.diagnostics,r.budget,r.external),void 0!==n.bounds)if(rV(n.bounds)){for(let e of(r.external&&rZ(n.bounds,["x0","y0","x1","y1"],`${t}.labels[${i}].bounds`,r.diagnostics),["x0","y0","x1","y1"]))rY(n.bounds[e],`${t}.labels[${i}].bounds.${e}`,r.diagnostics);"number"==typeof n.bounds.x0&&"number"==typeof n.bounds.x1&&n.bounds.x0>n.bounds.x1&&rH(r.diagnostics,"SCENE_BOUNDS",`${t}.labels[${i}].bounds`,"x0 must not exceed x1"),"number"==typeof n.bounds.y0&&"number"==typeof n.bounds.y1&&n.bounds.y0>n.bounds.y1&&rH(r.diagnostics,"SCENE_BOUNDS",`${t}.labels[${i}].bounds`,"y0 must not exceed y1")}else rH(r.diagnostics,"SCENE_BOUNDS",`${t}.labels[${i}].bounds`,"must be a finite ordered box");if(void 0!==n.clearance&&rY(n.clearance,`${t}.labels[${i}].clearance`,r.diagnostics,{nonNegative:!0}),void 0===n.block||rV(n.block)&&(c=n.block,ed.has(c))||rH(r.diagnostics,"SCENE_FIDELITY",`${t}.labels[${i}].block`,"must retain the actual immutable pixel text preparation"),void 0!==n.fontSize&&rY(n.fontSize,`${t}.labels[${i}].fontSize`,r.diagnostics,{positive:!0}),void 0!==n.fontWeight&&rY(n.fontWeight,`${t}.labels[${i}].fontWeight`,r.diagnostics,{positive:!0}),void 0!==n.letterSpacing&&rY(n.letterSpacing,`${t}.labels[${i}].letterSpacing`,r.diagnostics),void 0!==n.display&&"literal"!==n.display&&"formatted"!==n.display&&rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.labels[${i}].display`,"must be literal or formatted"),void 0===n.textAnchor||["start","middle","end"].includes(String(n.textAnchor))||rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.labels[${i}].textAnchor`,"must be start, middle, or end"),void 0!==n.paint&&rQ(n.paint,`${t}.labels[${i}].paint`,r.diagnostics,r.external),void 0!==n.halo&&(rV(n.halo)?(r.external&&rZ(n.halo,["color","width"],`${t}.labels[${i}].halo`,r.diagnostics),rY(n.halo.width,`${t}.labels[${i}].halo.width`,r.diagnostics,{nonNegative:!0}),void 0!==n.halo.color&&void 0===N(n.halo.color)&&rH(r.diagnostics,"SCENE_PAINT",`${t}.labels[${i}].halo.color`,"must be a safe non-fetching CSS paint")):rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.labels[${i}].halo`,"must be a halo descriptor")),void 0!==n.visual)if(rV(n.visual)&&["inline","companion"].includes(String(n.visual.kind)))if("companion"===n.visual.kind){let e=`${t}.labels[${i}].visual.markId`;rJ(n.visual.markId,e,r.diagnostics,{externalId:r.external})&&r.companionLabelReferences.push({id:n.visual.markId,path:e})}else(void 0===n.anchor||void 0===n.paint||void 0===n.fontSize||void 0===n.textAnchor)&&rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.labels[${i}].visual`,"inline labels require anchor, paint, fontSize, and textAnchor");else rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.labels[${i}].visual`,"must be inline or companion label ownership")}}if(rV(e.markers)){Array.isArray(e.markers.mid)||rH(r.diagnostics,"SCENE_MARKER",`${t}.markers.mid`,"must be an array"),Array.isArray(e.markers.mid)&&e.markers.mid.length>rC&&rH(r.diagnostics,"SCENE_BOUNDS",`${t}.markers.mid`,"contains too many mid markers");let i=[[e.markers.start,`${t}.markers.start`],[e.markers.end,`${t}.markers.end`]];if(Array.isArray(e.markers.mid))for(let r=0;r<Math.min(e.markers.mid.length,rC);r++)i.push([e.markers.mid[r],`${t}.markers.mid[${r}]`]);for(let[e,t]of i)void 0!==e&&r4(e,t,r.diagnostics,r.external,r.budget)&&rV(e)&&"string"==typeof e.id&&r.markerReferences.push({id:e.id,path:`${t}.id`,marker:e})}else rH(r.diagnostics,"SCENE_MARKER",`${t}.markers`,"must be a typed marker set");if(!(!r.external&&!r.crossChecks&&r.native&&void 0!==e7(e))){if(rV(e.terminalProjection)){for(let i of(["native","emulated","projected","lossy","unsupported"].includes(String(e.terminalProjection.realization))||rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.terminalProjection.realization`,"has an unknown realization"),["line","polyline","path"].includes(String(e.terminalProjection.topology))||rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.terminalProjection.topology`,"has an unknown topology"),r5(e.terminalProjection.geometry,`${t}.terminalProjection.geometry`,r.diagnostics,!1,0,void 0,r.external),["forward","reverse","bidirectional","undirected","self"].includes(String(e.terminalProjection.direction))||rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.terminalProjection.direction`,"has an unknown direction"),["solid","dotted","dashed","thick","invisible"].includes(String(e.terminalProjection.lineStyle))||rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.terminalProjection.lineStyle`,"has an unknown line style"),["labels","strokeLosses","diagnostics"]))Array.isArray(e.terminalProjection[i])||rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.terminalProjection.${i}`,"must be an array");if(rV(e.terminalProjection.markers)&&Array.isArray(e.terminalProjection.markers.mid)||rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.terminalProjection.markers`,"must contain a mid-marker array"),rV(e.terminalProjection.markerPlacements))for(let i of["start","mid","end"]){let n=e.terminalProjection.markerPlacements[i];if(!Array.isArray(n)){rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.terminalProjection.markerPlacements.${i}`,"must be an array");continue}for(let e=0;e<Math.min(n.length,rC);e++){let o=n[e];if(!rV(o)){rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.terminalProjection.markerPlacements.${i}[${e}]`,"must be a marker placement");continue}rJ(o.markerId,`${t}.terminalProjection.markerPlacements.${i}[${e}].markerId`,r.diagnostics,{externalId:r.external}),r1(o.point,`${t}.terminalProjection.markerPlacements.${i}[${e}].point`,r.diagnostics,void 0,r.external),rY(o.contourIndex,`${t}.terminalProjection.markerPlacements.${i}[${e}].contourIndex`,r.diagnostics,{nonNegative:!0})}}else rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.terminalProjection.markerPlacements`,"must contain typed start/mid/end marker placements");for(let i of["endpoints","route","stroke","hit"])rV(e.terminalProjection[i])||rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.terminalProjection.${i}`,"must preserve typed connector semantics")}else rH(r.diagnostics,"SCENE_DOCUMENT",`${t}.terminalProjection`,"must be a terminal projection");!r.external&&r.crossChecks&&function(e,t,r){if(!rV(e.route)||!rV(e.stroke)||!rV(e.markers)||!Array.isArray(e.markers.mid)||!Array.isArray(e.labels)||!rV(e.hit)||!rV(e.endpoints)||!rV(e.relationship)||!rV(e.terminalProjection)||!Array.isArray(e.terminalProjection.diagnostics))return;let i=e.route.geometry,n=eE(i,e.route.closed),o=n.starts[0],a=n.ends.at(-1);for(let[i,n,s]of[["start",e.endpoints.start?.point,o],["end",e.endpoints.end?.point,a]])n&&s&&!ey(n,s)&&rH(r.diagnostics,"SCENE_FIDELITY",`${t}.endpoints.${i}.point`,"must equal the endpoint derived from connector geometry");let s=ev(i,e.route.closed);e.route.contours.length!==s.length&&rH(r.diagnostics,"SCENE_FIDELITY",`${t}.route.contours`,"must match the geometry-derived contour count");let d=!ek(i);for(let i=0;i<Math.min(e.route.contours.length,s.length);i++){let n=e.route.contours[i],o=s[i];if(ey(n.start,o.start)&&ey(n.end,o.end)&&n.closed===o.closed||rH(r.diagnostics,"SCENE_FIDELITY",`${t}.route.contours[${i}]`,"must match geometry-derived endpoint topology"),d)for(let e of["startTangent","endTangent"]){let a=n[e],s=o[e];(void 0===a!=(void 0===s)||a&&s&&!ey(a,s,1e-9))&&rH(r.diagnostics,"SCENE_FIDELITY",`${t}.route.contours[${i}].${e}`,"must match the tangent derived from linear route geometry")}}let l=e.route.contours[0]?.startTangent,c=e.route.contours.at(-1)?.endTangent;for(let[i,n,o]of[["startTangent",e.route.startTangent,l],["endTangent",e.route.endTangent,c]])(void 0===n!=(void 0===o)||n&&o&&!ey(n,o,1e-9))&&rH(r.diagnostics,"SCENE_FIDELITY",`${t}.route.${i}`,"must equal the corresponding contour tangent authority");try{let n=e2({geometry:i,lineStyle:e.lineStyle,endpoints:e.endpoints,relationship:e.relationship,route:e.route,stroke:e.stroke,markers:e.markers,labels:e.labels,hit:e.hit,...e.transform?{transform:e.transform}:{},additionalDiagnostics:e.terminalProjection.diagnostics.slice(1)});(function e(t,r){if(Object.is(t,r))return!0;if(Array.isArray(t)||Array.isArray(r))return Array.isArray(t)&&Array.isArray(r)&&t.length===r.length&&t.every((t,i)=>e(t,r[i]));if(!rV(t)||!rV(r))return!1;let i=Object.keys(t).filter(e=>void 0!==t[e]).sort(),n=Object.keys(r).filter(e=>void 0!==r[e]).sort();return i.length===n.length&&i.every((i,o)=>i===n[o]&&e(t[i],r[i]))})(e.terminalProjection,n)||rH(r.diagnostics,"SCENE_FIDELITY",`${t}.terminalProjection`,"must equal the canonical projection derived from connector semantics")}catch(e){rH(r.diagnostics,"SCENE_FIDELITY",`${t}.terminalProjection`,e instanceof Error?e.message:String(e))}}(e,t,r)}}function r7(e,t,r){if(rV(e))for(let i of["fill","stroke"]){let n=rX(e[i]);n&&r.push({id:n,path:`${t}.${i}`})}}function r9(e,t={}){return"external"===t.mode||"internal"===t.mode?t.mode:(rV(e)&&"string"==typeof e.family?A(e.family):void 0)?.kind==="family"?"external":"internal"}function ie(e,t={}){let r=[];if(ii(e,!1,r),"external"===r9(e)&&rH(r,"SCENE_DOCUMENT","scene.family","native admission requires a built-in family"),r.length>0)throw new rS(r);let i={artwork:[],groups:new Set,enclosures:new Map},n={...ir(r,!1,t.crossChecks??!1,!0),native:i},o,a=()=>{if(o)throw Error("Native Scene validation has already finished");if(r.length>0)throw new rS(r)},s=e=>{if(a(),!Number.isInteger(e)||e<0||e>rM)throw rH(r,"SCENE_BOUNDS","scene.depth",`must be an integer nesting depth between 0 and ${rM}`),new rS(r)};return{node(e,t=0){if(a(),s(t),"group"===e.kind&&(!Array.isArray(e.children)||0!==e.children.length))throw rH(r,"SCENE_DOCUMENT","scene.parts","native groups must be shallow headers with separately submitted children"),new rS(r);let i=`scene.parts[${n.nodeCount}]`;if(r8(e,i,n,t),r.length>0)throw new rS(r);let o="document"===e.kind?ty(e):r6(e,i,n);if(r.length>0)throw new rS(r);return o},depth:s,enclosure(e,t){a(),rJ(e,"scene.enclosure.id",r),rJ(t.id,"scene.enclosure.owner.id",r);let n=i.enclosures.get(e);if(n&&(n.id!==t.id||n.role!==t.role)?rH(r,"SCENE_FIDELITY","scene.enclosure","artwork cannot have conflicting semantic enclosures"):i.enclosures.size>=rC?rH(r,"SCENE_BOUNDS","scene.enclosure","contains too many semantic enclosure relations"):i.enclosures.set(e,{id:t.id,role:t.role}),r.length>0)throw new rS(r)},serialization(e){if(a(),E(e,rj)>rj)throw rH(r,"SCENE_DOCUMENT","scene.serialization","has an oversized SVG serialization"),new rS(r)},finish(){if(o)return o;for(let e of(it(n),i.artwork)){let t=i.enclosures.get(e.id);t&&t.id===e.owner.id&&t.role===e.owner.role&&i.groups.has(JSON.stringify([t.id,t.role]))||rH(r,"SCENE_FIDELITY",e.path,"owned artwork without DOM identity must be inside its matching semantic group")}return o=Object.freeze({valid:0===r.length,diagnostics:Object.freeze(r.map(e=>Object.freeze(e)))})}}}function it(e){for(let t of e.paintReferences)e.gradientIds.has(t.id)||rH(e.diagnostics,"SCENE_REFERENCE",t.path,`references undeclared gradient "${t.id}"`);for(let t of e.ownerReferences)e.subjects.has(t.key)||rH(e.diagnostics,"SCENE_REFERENCE",t.path,"must reference an actual Scene subject identity and role");for(let t of e.companionLabelReferences){let r=e.ids.get(t.id);r?"text"!==r.kind&&rH(e.diagnostics,"SCENE_REFERENCE",t.path,`must reference a Text mark; "${t.id}" is a ${r.kind} mark`):rH(e.diagnostics,"SCENE_REFERENCE",t.path,`references unknown companion Text mark "${t.id}"`)}}function ir(e,t,r,i=t){return{diagnostics:e,external:t,aggregateBudgets:i,paintReferences:[],ids:new Map,subjects:new Set,ownerReferences:[],domIds:new Map,markerIds:new Map,gradientIds:new Map,markerReferences:[],endpointReferences:[],companionLabelReferences:[],budget:{textBytes:0,serializationBytes:0,points:0,textExceeded:!1,serializationExceeded:!1,pointsExceeded:!1,pointCollections:new WeakSet},crossChecks:r,nodeCount:0}}function ii(e,t,r){rJ(e.family,"scene.family",r);let i=rY(e.width,"scene.width",r,t?{positive:!0}:{nonNegative:!0}),n=rY(e.height,"scene.height",r,t?{positive:!0}:{nonNegative:!0});if(void 0!==e.transparent&&"boolean"!=typeof e.transparent&&rH(r,"SCENE_DOCUMENT","scene.transparent","must be boolean"),rV(e.colors)){for(let i of(t&&rZ(e.colors,["bg","fg","line","accent","muted","surface","border","font","shadow","embedFontImport"],"scene.colors",r),["bg","fg","line","accent","muted","surface","border"]))("bg"===i||"fg"===i||void 0!==e.colors[i])&&void 0===N(e.colors[i])&&rH(r,"SCENE_PAINT",`scene.colors.${i}`,"must be a safe non-fetching CSS paint");void 0!==e.colors.font&&void 0===S(e.colors.font)&&rH(r,"SCENE_SECURITY","scene.colors.font","must be a safe non-fetching font family"),void 0!==e.colors.shadow&&"boolean"!=typeof e.colors.shadow&&rH(r,"SCENE_DOCUMENT","scene.colors.shadow","must be boolean"),void 0!==e.colors.embedFontImport&&"boolean"!=typeof e.colors.embedFontImport&&rH(r,"SCENE_DOCUMENT","scene.colors.embedFontImport","must be boolean")}else rH(r,"SCENE_DOCUMENT","scene.colors","must be a DiagramColors object");return{widthOk:i,heightOk:n}}var io=globalThis.process?.env,ia=io?.AGENTIC_MERMAID_SCENE_ASSERTIONS==="1",is=new WeakSet;function id(e){return ia||void 0!==e&&(is.has(e)||"strict"===e.renderOptions.layoutSafety)}var il=16*rw.maxNodes,ic=16*rw.maxNodes,iu=8*rw.maxTextBytes,im=Object.freeze({...Object.freeze({maxObjects:4*rw.maxNodes,maxTextBytes:rw.maxTextBytes,maxArrayEntries:rw.maxNodes,maxAggregateArrayEntries:ic,maxDepth:4*rw.maxDepth,maxPropertiesPerObject:64,maxAggregateProperties:il,maxPropertyKeyBytes:256,maxAggregatePropertyKeyBytes:iu}),maxObjects:8*rw.maxNodes,maxTextBytes:rw.maxTextBytes+rw.maxAggregateSerializationBytes+rw.maxFinalSvgBytes}),ip=new WeakMap;function ih(e,t,r=!0){ip.set(e,{mode:t,crossChecks:r})}function ig(){throw new rS([{code:"SCENE_DOCUMENT",path:"scene.family",message:"source-only browser admission requires a built-in family"}])}function iy(e,t,r){let i=function(e,t,r,i){let n=[];if(!rV(e))return Object.freeze({valid:!1,diagnostics:Object.freeze([{code:"SCENE_DOCUMENT",path:"scene",message:"must be a Scene document object"}])});let o="external"===r9(e,t);if(o&&1)return rH(n,"SCENE_DOCUMENT","scene.family","source-only browser admission requires a built-in family"),Object.freeze({valid:!1,diagnostics:Object.freeze(n)});o&&rZ(e,["family","width","height","colors","transparent","parts"],"scene",n);let{widthOk:a,heightOk:s}=ii(e,o,n);if(Array.isArray(e.parts)){let t=ir(n,o,r);e.parts.length>rC&&rH(n,"SCENE_BOUNDS","scene.parts","contains too many top-level Scene nodes");for(let r=0;r<Math.min(e.parts.length,rC);r++)r8(e.parts[r],`scene.parts[${r}]`,t,0);let i=o?(void 0).document(e,t,a,s):void 0;if(it(t),0===n.length&&o&&(void 0).canonical(e,n),0===n.length&&r)try{let t=o?i:e.parts.map(ty).join(`
20
- `);void 0!==t&&rr(t,o?"strict":"default")}catch(e){rH(n,"SCENE_SECURITY","scene",e instanceof Error?e.message:String(e))}}else rH(n,"SCENE_DOCUMENT","scene.parts","must be an array");return Object.freeze({valid:0===n.length,diagnostics:Object.freeze(n.map(e=>Object.freeze(e)))})}(e,{mode:t},r);if(!i.valid)throw new rS(i.diagnostics)}function ib(e){return ix(e)}function ix(e,t,r=id()){return function(e,t,r,i,n=!1){let o="object"==typeof e&&null!==e?ip.get(e):void 0;n&&("external"===t||void 0!==o&&("external"===o.mode||"external"===r9(e)))&&ig();let a="internal"!==t||r;if(void 0!==o&&o.mode===(t??r9(e)))return("external"===o.mode||r)&&!o.crossChecks&&(i(e,o.mode,!0),ih(e,o.mode,!0)),e;let s=function(e,t,r="input"){let i=new WeakSet,n=new WeakMap,o=0,a=0,s=0,d=0,l=0,c=(e,r,u)=>{if("string"==typeof e){let r=Math.max(0,t.maxTextBytes-a),i=E(e,r);if(i>r)throw Error(`External Scene text values exceed the aggregate ${t.maxTextBytes}-byte limit`);return a+=i,e}if(null===e||"object"!=typeof e){if("function"==typeof e||"symbol"==typeof e||"bigint"==typeof e)throw TypeError(`External Scene ${u} must be declarative data`);return e}if(r>t.maxDepth)throw Error("External Scene input object graph is too deeply nested");if(++o>t.maxObjects)throw Error("External Scene input object graph is too large");if(i.has(e))throw Error("External Scene input must be acyclic");let m=n.get(e);if(void 0!==m)return m;i.add(e);try{if(Array.isArray(e)){if(Object.getPrototypeOf(e)!==Array.prototype)throw TypeError(`External Scene ${u} must be a plain array`);let i=Reflect.getOwnPropertyDescriptor(e,"length");if(!i||!("value"in i)||"number"!=typeof i.value||!Number.isSafeInteger(i.value)||i.value<0)throw TypeError(`External Scene ${u}.length must be a non-negative integer data property`);let o=i.value;if(o>t.maxArrayEntries)throw Error(`External Scene ${u} contains too many entries`);if((s+=o)>t.maxAggregateArrayEntries)throw Error(`External Scene input exceeds the aggregate ${t.maxAggregateArrayEntries}-array-entry limit`);let a=Reflect.ownKeys(e);if(a.length>o+1||!a.includes("length"))throw TypeError(`External Scene ${u} must not define custom array properties or iterators`);let d=new Map;for(let t of(d.set("length",i),a)){if("length"===t)continue;let r=Reflect.getOwnPropertyDescriptor(e,t);if(!r)throw TypeError(`External Scene ${u} has an unstable property descriptor`);d.set(t,r)}for(let e of a)if("length"!==e&&("string"!=typeof e||!/^(?:0|[1-9]\d*)$/.test(e)||Number(e)>=o))throw TypeError(`External Scene ${u} must not define custom array properties or iterators`);let l=Array(o);n.set(e,l),tx(e,l);for(let e=0;e<o;e++){let t=d.get(String(e));if(!t)throw TypeError(`External Scene ${u} must not be sparse`);if(!("value"in t)||!t.enumerable)throw TypeError(`External Scene ${u}[${e}] must be an enumerable data property`);l[e]=c(t.value,r+1,`${u}[${e}]`)}return Object.freeze(l)}let i=Object.getPrototypeOf(e);if(i!==Object.prototype&&null!==i)throw TypeError(`External Scene ${u} must be a plain object`);let o=Reflect.ownKeys(e);if(o.length>t.maxPropertiesPerObject)throw Error(`External Scene ${u} contains too many properties`);if((d+=o.length)>t.maxAggregateProperties)throw Error(`External Scene input exceeds the aggregate ${t.maxAggregateProperties}-property limit`);for(let e of o){if("string"!=typeof e)continue;let r=Math.max(0,t.maxAggregatePropertyKeyBytes-l),i=E(e,Math.min(t.maxPropertyKeyBytes,r));if(i>t.maxPropertyKeyBytes)throw Error(`External Scene ${u} contains a property key longer than ${t.maxPropertyKeyBytes} bytes`);if(i>r)throw Error(`External Scene property keys exceed the aggregate ${t.maxAggregatePropertyKeyBytes}-byte limit`);l+=i}let a=Object.create(null);for(let t of(n.set(e,a),tx(e,a),o)){let i;if("string"!=typeof t)throw TypeError(`External Scene ${u} must not contain symbol keys`);let n=Reflect.getOwnPropertyDescriptor(e,t);if(!n||!n.enumerable)throw TypeError(`External Scene ${u}.${t} must be an enumerable data property`);if("value"in n)i=n.value;else if(i=function(e,t,r){let i=e3.get(e);return"terminalProjection"===t&&i&&r.get===e6.get?e6.get.call(e):void 0}(e,t,n),void 0===i)throw TypeError(`External Scene ${u}.${t} must be an enumerable data property`);Object.defineProperty(a,t,{value:c(i,r+1,`${u}.${t}`),enumerable:!0,configurable:!1,writable:!1})}return el(e,a),Object.freeze(a)}finally{i.delete(e)}};return c(e,0,r)}(e,im,"scene");return n&&"external"===r9(s)&&ig(),i(s,t,"internal"!==t||r),ih(s,t??r9(s),a),s}(e,t,r,iy,!0)}var ik="backend-claim-matrix@4";function iv(){let e={bg:"#ffffff",fg:"#172033",line:"#334155",accent:"#a33b20"},t={id:"backend-conformance-arrow",shape:"arrow",geometry:{kind:"path",d:"M 0 0 L 8 4 L 0 8 Z"},size:{width:8,height:8},viewBox:{x:0,y:0,width:8,height:8},ref:{x:8,y:4},units:"userSpaceOnUse",orient:"auto",overflow:"visible",paint:{fill:"#a33b20",stroke:"#334155",strokeWidth:"1"}},r={id:"backend-conformance-gradient",units:"userSpaceOnUse",x1:0,y1:0,x2:120,y2:0,stops:[{offset:0,color:"#a33b20"},{offset:1,color:"#334155"}]},i=tL({id:"backend-conformance-prelude",width:120,height:80,colors:e,transparent:!0,font:"Inter",hasMonoFont:!1},'<svg xmlns="http://www.w3.org/2000/svg" width="120" height="80" viewBox="0 0 120 80" role="img" aria-labelledby="backend-conformance-title backend-conformance-description">'),n=tI({id:"backend-conformance-title",element:"title",text:"Backend conformance fixture",domId:"backend-conformance-title"}),o=tI({id:"backend-conformance-description",element:"description",text:"A representative Scene document",domId:"backend-conformance-description"}),a=tA({id:"backend-conformance-definitions",markerResources:[t],gradientResources:[r]},`<defs>
21
- ${ry(t)}
22
- ${r$(r)}
23
- </defs>`),s=tN({id:"backend-conformance-node",role:"node",geometry:{kind:"rect",x:8,y:16,width:34,height:24,rx:3,ry:3},paint:{fill:"#f4efe6",stroke:"#334155",strokeWidth:"2"}}),d=tB({id:"backend-conformance-container",role:"group",open:"<g>",paint:{opacity:"0.8",fill:"#f4efe6"},close:"</g>",children:[{node:s,indent:2}]}),l=tN({id:"backend-conformance-data-mark",role:"bar",geometry:{kind:"rect",x:92,y:48,width:16,height:20},paint:{fill:"#a33b20",stroke:"#334155",strokeWidth:"1"},channels:{value:.75,category:"fixture"}}),c=tT({id:"backend-conformance-relation",role:"edge",geometry:{kind:"path",d:"M 42 28 L 62 14 Q 66 12 70 14 L 90 28",points:[{x:42,y:28},{x:66,y:12},{x:90,y:28}],markerMidpoints:[{x:62,y:14},{x:70,y:14}]},lineStyle:"dashed",paint:{fill:"none",stroke:"#334155",strokeWidth:"2",opacity:"0.65",strokeLinecap:"square",strokeLinejoin:"bevel",strokeMiterlimit:"7",strokeDasharray:"6 3",strokeDashoffset:"2",vectorEffect:"non-scaling-stroke",paintOrder:"stroke fill"},endpoints:{from:"backend-conformance-node",to:"backend-conformance-data-mark"},relationship:{kind:"dependency",direction:"forward"},route:{ownership:"layout",bendRadius:4,labelAnchors:[{x:66,y:8}],contours:[{start:{x:42,y:28},end:{x:90,y:28},closed:!1,startTangent:{x:.8192319205190405,y:-.5734623443633283},endTangent:{x:.8192319205190405,y:.5734623443633283}}]},stroke:{opacity:.65,dash:{array:"6 3",offset:2},lineCap:"square",lineJoin:"bevel",miterLimit:7,pathLength:77,paintOrder:"stroke fill",mixBlendMode:"multiply",nonScaling:!0},markers:{start:t,mid:[t],end:t},labels:[{id:"backend-conformance-relation-label",text:"depends on",anchor:{x:66,y:8},clearance:2,halo:{color:"#ffffff",width:3},paint:{fill:"#172033"},fontSize:11,textAnchor:"middle",visual:{kind:"inline"}}]}),u=tT({id:"backend-conformance-freehand-relation",role:"edge",geometry:{kind:"line",x1:42,y1:58,x2:90,y2:58},lineStyle:"solid",paint:{fill:"none",stroke:"#334155",strokeWidth:"2",strokeLinecap:"square",strokeLinejoin:"miter",strokeMiterlimit:"7",vectorEffect:"non-scaling-stroke"},endpoints:{from:"backend-conformance-node",to:"backend-conformance-data-mark"},relationship:{kind:"association",direction:"forward"},stroke:{lineCap:"square",lineJoin:"miter",miterLimit:7,nonScaling:!0},transform:{kind:"rotate",angle:90,cx:42,cy:58}}),m=tT({id:"backend-conformance-closed-relation",role:"edge",geometry:{kind:"path",d:"M 10 65 L 25 50 L 40 65 Z",points:[{x:10,y:65},{x:25,y:50},{x:40,y:65}]},lineStyle:"solid",paint:{fill:"none",stroke:"#334155",strokeWidth:"2"},route:{ownership:"authored",closed:!0}}),f=tT({id:"backend-conformance-multi-relation",role:"edge",geometry:{kind:"path",d:"M 8 72 L 28 72 M 52 72 L 72 72",points:[{x:8,y:72},{x:28,y:72},{x:52,y:72},{x:72,y:72}],subpaths:[{points:[{x:8,y:72},{x:28,y:72}],closed:!1},{points:[{x:52,y:72},{x:72,y:72}],closed:!1}]},lineStyle:"solid",paint:{fill:"none",stroke:"#334155",strokeWidth:"2"},markers:{start:t,mid:[],end:t}}),p=tj({id:"backend-conformance-text",role:"member",text:"Fixture label",x:25,y:31,fontSize:12,anchor:"middle",paint:{fill:"#172033"},baselineShift:0});return v({doc:{family:"backend-conformance",width:120,height:80,colors:e,transparent:!1,parts:[i,n,o,a,d,l,c,p,tD()]},context:{seed:24301,style:{stroke:"freehand",fill:"wash",roughness:1,bowing:1,passes:2,strokeWidth:1.5,hachureAngle:-41,hachureGap:5,fillWeight:.8,washOpacity:.3,washEdge:.34,backdrop:"plain"}},probes:[{primitive:"document",node:i,requiredFragments:["<svg","backend-conformance-title"]},{primitive:"marker",node:a,requiredFragments:['id="backend-conformance-arrow"']},{primitive:"container",node:d,requiredFragments:['data-id="backend-conformance-container"','data-id="backend-conformance-node"']},{primitive:"shape",node:s,requiredFragments:['data-id="backend-conformance-node"','data-role="node"']},{primitive:"data-mark",node:l,requiredFragments:['data-id="backend-conformance-data-mark"','data-role="bar"']},{primitive:"connector",node:c,requiredFragments:['data-id="backend-conformance-relation"','data-role="edge"']},{primitive:"text",node:p,requiredFragments:['data-id="backend-conformance-text"',"Fixture label"]}],nodes:{root:i,marker:a,shape:s,container:d,dataMark:l,richConnector:c,freehandConnector:u,closedConnector:m,multiSubpathConnector:f,label:p}})}function iE(e){return 0===e.length?void 0:`missing ${e.join(", ")}`}function i$(e,t,r){return e?{passed:e,observation:t}:{passed:e,observation:t,diagnostic:r}}function iw(e,t){return e.split(t).length-1}function iS(e,t){let r=e.drawNode(t,iB.context);return rG(r,"backend conformance drawNode output"),r}function iN(e){let t=e.render(iB.doc,iB.context);return rG(t,"backend conformance render output"),t}function iC(e,t){let r=e.match(/^\s*<(?:line|polyline|path)\b[^>]*>/)?.[0]??"";return/\sstroke-opacity="0"/.test(r)?e.split(`
24
- `).slice(t.split(`
25
- `).length).join(`
26
- `):e}function iM(e,t,r,i=()=>!0){let n=iS(e,r),o=iC(n,ty(r)),a="text"===r.kind?n.includes(r.text)&&n.includes(`x="${r.x}"`)&&n.includes(`y="${r.y}"`):"shape"===r.kind&&"rect"===r.geometry.kind?n.includes(`x="${r.geometry.x}"`)&&n.includes(`y="${r.geometry.y}"`)&&n.includes(`width="${r.geometry.width}"`)&&n.includes(`height="${r.geometry.height}"`):"connector"===r.kind&&"line"===r.route.geometry.kind?n.includes(`x1="${r.route.geometry.x1}"`)&&n.includes(`y1="${r.route.geometry.y1}"`)&&n.includes(`x2="${r.route.geometry.x2}"`)&&n.includes(`y2="${r.route.geometry.y2}"`):"connector"===r.kind&&"path"===r.route.geometry.kind?n.includes(`d="${r.route.geometry.d}"`):n===ty(r),s="native"===t.realization?a:"emulated"===t.realization&&n!==ty(r)&&o.includes("<path"),d="backend:hybrid"!==t.target||"shape"!==r.kind||n.includes("fill-opacity=")&&n.includes('stroke="none"');return i$(s&&d&&i(n,o),(t.realization,""),`backend output did not demonstrate ${t.realization} ${t.primitive}/${t.feature}`)}function iz(e,t,r,i){let n="lossy"===t.realization?iB.nodes.freehandConnector:iB.nodes.richConnector,o=iS(e,n),a=iC(o,ty(n));return"lossy"===t.realization?i$(o!==ty(n)&&a.includes('stroke="none"')&&!a.includes(`${r}="`),"",`lossy ${r} projection was not observable on the visible freehand ribbon`):i$(("native"===t.realization?o.includes('data-id="backend-conformance-relation"'):o!==ty(n))&&a.includes(`${r}="${i}"`),(t.realization,""),`${r}=${i} was not preserved by the ${t.realization} realization`)}function iO(e){return[e.primitive,e.feature,e.operation].join("/")}Object.freeze(["draw-node-determinism","draw-node-semantics","document-determinism","single-svg-document","finite-serialization","output-security","document-semantics","container-semantics","shape-semantics","text-semantics","connector-semantics","marker-semantics","data-mark-semantics","capability-claims"]);var iT=Object.freeze({"document/identity/serialize":e=>{let t=iN(e);return i$(1===iw(t,"<svg")&&t.includes('viewBox="0 0 120 80"')&&t.trimEnd().endsWith("</svg>"),"","document envelope or bounds were not preserved")},"document/resources/serialize":e=>{let t=iN(e);return i$(t.includes("<defs>")&&t.includes('id="backend-conformance-arrow"')&&t.includes('<linearGradient id="backend-conformance-gradient"')&&rt(t).ok,"","document resources were missing or unsafe")},"document/interaction/accessibility":e=>{let t=iN(e);return i$(t.includes('role="img"')&&t.includes('aria-labelledby="backend-conformance-title backend-conformance-description"')&&t.includes('<title id="backend-conformance-title">Backend conformance fixture</title>')&&t.includes('<desc id="backend-conformance-description">A representative Scene document</desc>'),"","document accessibility projection was incomplete")},"text/geometry/render":(e,t)=>iM(e,t,iB.nodes.label,e=>e.includes('x="25"')&&e.includes('y="31"')&&e.includes('font-size="12"')),"text/paint/render":(e,t)=>iM(e,t,iB.nodes.label,e=>e.includes('fill="#172033"')),"text/labels/accessibility":e=>i$(iS(e,iB.nodes.label).includes("Fixture label"),"","text label was not serialized"),"text/identity/serialize":e=>{let t=iS(e,iB.nodes.label);return i$(t.includes('data-id="backend-conformance-text"')&&t.includes('data-role="member"'),"","text DOM identity was lost")},"shape/geometry/render":(e,t)=>iM(e,t,iB.nodes.shape),"shape/paint/render":(e,t)=>iM(e,t,iB.nodes.shape,e=>e.includes("#334155")&&e.includes("#f4efe6")),"shape/identity/serialize":e=>{let t=iS(e,iB.nodes.shape);return i$(t.includes('data-id="backend-conformance-node"')&&t.includes('data-role="node"'),"","shape DOM identity was lost")},"container/geometry/render":(e,t)=>{let r=iS(e,iB.nodes.container);return i$("native"===t.realization&&r.startsWith("<g ")&&r.trimEnd().endsWith("</g>")&&r.includes('data-id="backend-conformance-node"'),"","container boundary/child geometry was not preserved as a native wrapper")},"container/paint/render":(e,t)=>{let r=iS(e,iB.nodes.container);return i$("native"===t.realization&&r.includes('opacity="0.8"')&&r.includes('fill="#f4efe6"'),"","container paint cascade was not preserved as a native wrapper")},"container/identity/serialize":e=>{let t=iS(e,iB.nodes.container);return i$(t.includes('data-id="backend-conformance-container"')&&t.includes('data-role="group"'),"","container DOM identity was lost")},"connector/geometry/render":(e,t)=>{let r=iB.nodes.richConnector,i=iS(e,r),n=iC(i,ty(r));return i$("native"===t.realization?"path"===r.route.geometry.kind&&i.includes(`d="${r.route.geometry.d}"`):"lossy"===t.realization&&i!==ty(r)&&i.includes("Q 66 12 70 14")&&!n.includes("Q 66 12 70 14"),(t.realization,""),"connector geometry realization did not match its claim")},"connector/stroke/render":(e,t)=>iM(e,t,iB.nodes.freehandConnector,e=>e.includes("#334155")),"connector/transform/render":(e,t)=>{let r=iB.nodes.freehandConnector,i=iS(e,r),n=iC(i,ty(r));return i$(i.includes('transform="rotate(90 42 58)"')&&rf(r,{x:42,y:82})&&!rf(r,{x:66,y:58})&&("native"===t.realization?!/\sstroke-opacity="0"/.test(i.match(/^\s*<(?:line|polyline|path)\b[^>]*>/)?.[0]??""):"emulated"===t.realization&&n.startsWith('<g transform="rotate(90 42 58)">')),"","connector transform was not preserved by both rendering and interaction")},"connector/topology/render":(e,t)=>{let r=iB.nodes.richConnector,i=iS(e,r),n=iC(i,ty(r));return i$("native"===t.realization?"path"===r.route.geometry.kind&&i.includes(`d="${r.route.geometry.d}"`):"lossy"===t.realization&&i!==ty(r)&&i.includes("Q 66 12 70 14")&&!n.includes("Q 66 12 70 14"),(t.realization,""),"connector topology realization did not match its claim")},"connector/subpaths/render":(e,t)=>{let r=iB.nodes.multiSubpathConnector,i=iS(e,r),n=iC(i,ty(r)),o=rf(r,{x:18,y:72})&&rf(r,{x:62,y:72})&&!rf(r,{x:40,y:72})&&2===r.route.contours.length&&r.route.contours.every(e=>e.startTangent?.x===1&&e.endTangent?.x===1),a="native"===t.realization?2===iw(i.match(/^\s*<path\b[^>]*>/)?.[0]??"","M "):"emulated"===t.realization&&i!==ty(r)&&iw(n,"<path")>=2;return i$(o&&a,"","connector subpath boundaries were not preserved")},"connector/closedness/render":(e,t)=>{let r=iB.nodes.closedConnector,i=iS(e,r),n=iC(i,ty(r));return i$(rf(r,{x:25,y:65})&&("native"===t.realization?/\sZ(?:\s|&quot;|")/.test(i.match(/^\s*<path\b[^>]*>/)?.[0]??""):"lossy"===t.realization&&i!==ty(r)&&/\sZ(?:\s|&quot;|")/.test(i.slice(0,i.indexOf(`
27
- `)))&&!n.includes("M 10 65 L 25 50 L 40 65 Z")),(t.realization,""),"output did not demonstrate the declared closedness realization")},"connector/bend-radius/render":(e,t)=>{let r=iB.nodes.richConnector,i=iS(e,r),n=iC(i,ty(r));return i$(i.includes("Q 66 12 70 14")&&4===r.route.bendRadius&&("native"===t.realization?!/\sstroke-opacity="0"/.test(i.match(/^\s*<path\b[^>]*>/)?.[0]??""):"lossy"===t.realization&&i!==ty(r)&&!n.includes("Q 66 12 70 14")),(t.realization,""),"bend-radius realization did not match the declared capability")},"connector/stroke-opacity/render":(e,t)=>iz(e,t,"stroke-opacity","0.65"),"connector/stroke-cap/render":(e,t)=>iz(e,t,"stroke-linecap","square"),"connector/stroke-join/render":(e,t)=>iz(e,t,"stroke-linejoin","bevel"),"connector/stroke-miter/render":(e,t)=>iz(e,t,"stroke-miterlimit","7"),"connector/dash-array/render":(e,t)=>iz(e,t,"stroke-dasharray","6 3"),"connector/dash-offset/render":(e,t)=>iz(e,t,"stroke-dashoffset","2"),"connector/dash-restart/render":(e,t)=>{let r=iB.nodes.richConnector,i=iC(iS(e,r),ty(r)),n=iw(i,'stroke-dasharray="6 3"'),o=iw(i,"M");return i$("native"===t.realization?1===n:"lossy"===t.realization&&n>=1&&o>1,(t.realization,""),"dash restart boundaries did not match the declared realization")},"connector/path-length/render":(e,t)=>{let r=iB.nodes.richConnector,i=iC(iS(e,r),ty(r)),n=iw(i,'pathLength="77"'),o=iw(i,"M");return i$("native"===t.realization?1===n:"lossy"===t.realization&&n>=1&&o>1,(t.realization,""),"pathLength behavior did not match the declared realization")},"connector/paint-order/render":(e,t)=>iz(e,t,"paint-order","stroke fill"),"connector/compositing/render":(e,t)=>iz(e,t,"style","mix-blend-mode:multiply"),"connector/non-scaling-stroke/render":(e,t)=>iz(e,t,"vector-effect","non-scaling-stroke"),"connector/marker-orientation/render":(e,t)=>{let r=iN(e);if("unsupported"===t.realization)return i$(r.includes('orient="auto"')&&!r.includes('marker-start="url(#backend-conformance-arrow)"')&&!r.includes('marker-mid="url(#backend-conformance-arrow)"')&&!r.includes('marker-end="url(#backend-conformance-arrow)"'),"","backend declared connector marker orientation unsupported but attached the marker");let i=r.includes('orient="auto"')&&r.includes('marker-start="url(#backend-conformance-arrow)"')&&r.includes('marker-mid="url(#backend-conformance-arrow)"')&&r.includes('marker-end="url(#backend-conformance-arrow)"'),n="projected"!==t.realization||r.includes('markerUnits="userSpaceOnUse"');return i$(("native"===t.realization||"projected"===t.realization)&&i&&n,(t.realization,""),"marker orientation/carrier projection did not match the declaration")},"connector/marker-overflow/render":(e,t)=>{let r=iN(e),i=r.includes('marker-start="url(#backend-conformance-arrow)"')&&r.includes('marker-end="url(#backend-conformance-arrow)"');return"unsupported"===t.realization?i$(r.includes('overflow="visible"')&&!i&&!r.includes('marker-mid="url(#backend-conformance-arrow)"'),"","backend declared connector marker overflow unsupported but attached the marker"):i$(("native"===t.realization||"projected"===t.realization)&&r.includes('overflow="visible"')&&i,(t.realization,""),"marker overflow or its connector attachment was not preserved")},"connector/endpoints/serialize":e=>{let t=iS(e,iB.nodes.richConnector);return i$(t.includes('data-from="backend-conformance-node"')&&t.includes('data-to="backend-conformance-data-mark"'),"","connector endpoint identities were not serialized")},"connector/direction/serialize":e=>{let t=iS(e,iB.nodes.richConnector);return i$(t.includes('data-relationship="dependency"')&&t.includes('data-direction="forward"'),"","connector relationship direction was not serialized")},"connector/labels/accessibility":e=>i$(iS(e,iB.nodes.richConnector).includes('aria-label="backend-conformance-node to backend-conformance-data-mark: depends on"'),"","connector label was absent from accessibility output"),"connector/labels/render":(e,t)=>{let r=iS(e,iB.nodes.richConnector);return i$("native"===t.realization&&r.includes('data-id="backend-conformance-relation-label"')&&r.includes('data-connector-label-for="backend-conformance-relation"')&&r.includes('x="66" y="6"')&&r.includes('font-size="11"')&&r.includes('fill="#172033"')&&r.includes('stroke="#ffffff"')&&r.includes('stroke-width="3"')&&r.includes('paint-order="stroke fill"')&&r.includes(">depends on</text>"),"","connector label visual semantics were not preserved")},"connector/relation/accessibility":e=>{let t=iS(e,iB.nodes.richConnector);return i$(t.includes('data-from="backend-conformance-node"')&&t.includes('data-to="backend-conformance-data-mark"')&&t.includes('role="graphics-symbol"')&&t.includes('aria-roledescription="relation"')&&t.includes('aria-label="backend-conformance-node to backend-conformance-data-mark: depends on"'),"","connector relation accessibility semantics were lost")},"connector/markers/render":(e,t)=>{let r=iS(e,iB.nodes.richConnector);return"unsupported"===t.realization?i$(!r.includes('marker-start="url(#backend-conformance-arrow)"')&&!r.includes('marker-mid="url(#backend-conformance-arrow)"')&&!r.includes('marker-end="url(#backend-conformance-arrow)"'),"","backend declared connector markers unsupported but still serialized one"):i$(("native"===t.realization||"projected"===t.realization)&&r.includes('marker-start="url(#backend-conformance-arrow)"')&&r.includes('marker-mid="url(#backend-conformance-arrow)"')&&r.includes('marker-end="url(#backend-conformance-arrow)"'),(t.realization,""),"connector marker projection did not match the declaration")},"connector/interaction/hit-test":e=>{let t=iB.nodes.freehandConnector;return i$(iS(e,t).includes('data-id="backend-conformance-freehand-relation"')&&rf(t,{x:42,y:82})&&!rf(t,{x:66,y:58}),"","connector carrier or typed hit geometry was not preserved")},"connector/hit-geometry/hit-test":e=>{let t=iB.nodes.multiSubpathConnector;return i$(iS(e,t).includes('data-id="backend-conformance-multi-relation"')&&rf(t,{x:18,y:72})&&!rf(t,{x:40,y:72}),"","connector hit geometry did not preserve typed contour boundaries")},"connector/identity/serialize":e=>{let t=iS(e,iB.nodes.richConnector);return i$(t.includes('data-id="backend-conformance-relation"')&&t.includes('data-role="edge"'),"","connector DOM identity was lost")},"marker/geometry/render":(e,t)=>{let r=iS(e,iB.nodes.marker);return i$(("native"===t.realization||"projected"===t.realization)&&r.includes("M 0 0 L 8 4 L 0 8 Z")&&r.includes('viewBox="0 0 8 8"'),(t.realization,""),"marker geometry was not present in backend output")},"marker/paint/render":(e,t)=>{let r=iS(e,iB.nodes.marker);return i$(("native"===t.realization||"projected"===t.realization)&&r.includes('fill="#a33b20"')&&r.includes('stroke="#334155"'),(t.realization,""),"marker paint was not present in backend output")},"marker/identity/serialize":e=>i$(iS(e,iB.nodes.marker).includes('id="backend-conformance-arrow"'),"","marker resource identity was lost"),"data-mark/geometry/render":(e,t)=>iM(e,t,iB.nodes.dataMark),"data-mark/paint/render":(e,t)=>iM(e,t,iB.nodes.dataMark,e=>e.includes("#a33b20")&&e.includes("#334155")),"data-mark/identity/serialize":e=>{let t=iS(e,iB.nodes.dataMark);return i$(t.includes('data-id="backend-conformance-data-mark"')&&t.includes('data-role="bar"'),"","quantitative mark DOM identity was lost")}}),ij=Symbol();function i_(e,t,r){return e[ij]?.(t,r)??r}function iI(e,t,r,i){return[e,...i.map(e=>tb(e.serialized,e.indent)),t].join(r)}function iA(e,t){return!t.style||e.transparent?"":`<rect width="${h(e.width)}" height="${h(e.height)}" fill="var(--bg)" data-backdrop="page" />`}var iD,iB,iL,iP={id:"default",capabilities:rl("backend:default","crisp"),drawNode:e=>ty(e),render(e,t){let r=ib(e),i=iA(r,t);return r.parts.map((e,r)=>{let n=i_(t,e,ty(e));return i&&0===r?`${n}
28
- ${i}`:n}).join(`
29
- `)}},iU=new WeakSet([iP.render]),iF=Object.getOwnPropertyDescriptors(iP);function iR(e){return e===iP&&iU.has(e.render)}function iW(e){return void 0!==iL&&e===iL}var iq,iG="1.0.0",iV=Object.freeze({core:T,scene:"^2.0.0"}),iH=Object.freeze({owner:"agentic-mermaid",source:"built-in",reference:"src/scene/backend.ts"}),iZ=Object.freeze({owner:"host",source:"in-process"}),iY=new Map,iJ=new Map,iK=new Map,iQ=null;function iX(e,t){if(e.passed)return;let r=e.checks.filter(e=>!e.passed).map(e=>`${e.id}${e.diagnostic?`: ${e.diagnostic}`:""}`);throw Error(`Built-in backend "${t}" failed SVG conformance: ${r.join("; ")}`)}function i0(e){(function(){if(null!==iQ)throw Error(`Backend registry mutation is forbidden while candidate "${iQ}" is undergoing conformance`)})(),iQ="<built-in>";try{var r,i,n;let o,a,s,d=e.id,l=_("backend",d);iQ=l;let c=iJ.get(d);if(void 0!==c)throw Error(`Backend input name "${d}" already selects "${c}"`);let u=function(e){if(e!==iP)return!1;for(let t of["id","capabilities","drawNode","render"]){let r=Object.getOwnPropertyDescriptor(e,t);if(!r||!("value"in r)||r.value!==iF[t].value)return!1}return!0}(e);if(!Array.isArray(e.capabilities))throw Error(`Backend "${e.id}" must declare capability claims`);let m=ru(e.capabilities);if(!m.valid)throw Error(`Backend "${e.id}" has invalid capabilities: ${m.diagnostics.join("; ")}`);if(0===e.capabilities.length)throw Error(`Backend "${e.id}" must declare capability claims`);if(e.capabilities.find(e=>e.target!==l))throw Error(`Backend "${e.id}" capability target must be "${l}"`);let f=e.capabilities.find(e=>!e.evidence?.trim());if(f)throw Error(`Backend "${e.id}" capability ${f.primitive}/${f.feature}/${f.operation} must declare evidence`);for(let{primitive:t,feature:r,operation:i}of ra)if(!e.capabilities.some(e=>e.primitive===t&&e.feature===r&&e.operation===i))throw Error(`Backend "${e.id}" must declare an evidenced essential ${t}/${r}/${i} capability`);let p=(a=!1,{running:()=>a,report:()=>{if(o)return o;let t=iQ;iQ=l,a=!0;try{o=function(e,t=e.id){var r;iB??=j(void 0,iv);let i=[],n=(e,t,r)=>{i.push(Object.freeze({id:e,passed:t,...r?{diagnostic:r}:{}}))},o=[],a=[];for(let t of iB.probes)try{let r=iS(e,t.node),i=iS(e,t.node);if("string"!=typeof r||"string"!=typeof i){o.push(`${t.primitive} returned a non-string`),a.push(`${t.primitive} returned a non-string`);continue}r!==i&&o.push(`${t.primitive} changed between identical calls`);let n=t.requiredFragments.filter(e=>!r.includes(e));n.length>0&&a.push(`${t.primitive} ${iE(n)}`)}catch(r){let e=`${t.primitive} threw ${r instanceof Error?r.message:String(r)}`;o.push(e),a.push(e)}n("draw-node-determinism",0===o.length,o.join("; ")||void 0),n("draw-node-semantics",0===a.length,a.join("; ")||void 0);let s="",d="",l;try{s=iN(e),d=iN(e),"string"!=typeof s||"string"!=typeof d?(l="render must return a string",s="string"==typeof s?s:"",d="string"==typeof d?d:""):s!==d&&(l="render changed between identical calls")}catch(e){l=`render threw ${e instanceof Error?e.message:String(e)}`}n("document-determinism",void 0===l,l);let c=y("xml-envelope",r=s,()=>t2(r));n("single-svg-document",c,c?void 0:"render must return one well-formed namespaced SVG document");let u=s.match(/\b(?:NaN|Infinity|undefined)\b/)?.[0];n("finite-serialization",!u,u?`serialized ${u}`:void 0);let m=rt(s),f;try{rr(s,"default")}catch(e){f=e instanceof Error?e.message:String(e)}let p=m.ok&&void 0===f;for(let[e,t]of(n("output-security",p,p?void 0:[f,m.ok?void 0:`unsafe SVG constructs: ${m.refs.join(", ")}`].filter(Boolean).join("; ")),[["document-semantics",['aria-labelledby="backend-conformance-title backend-conformance-description"','<title id="backend-conformance-title">Backend conformance fixture</title>','<desc id="backend-conformance-description">A representative Scene document</desc>']],["container-semantics",['data-id="backend-conformance-container"','data-role="group"']],["shape-semantics",['data-id="backend-conformance-node"','data-role="node"']],["text-semantics",['data-id="backend-conformance-text"','data-role="member"',"Fixture label"]],["connector-semantics",['data-id="backend-conformance-relation"','data-role="edge"','data-from="backend-conformance-node"','data-to="backend-conformance-data-mark"','role="graphics-symbol"','aria-roledescription="relation"','aria-label="backend-conformance-node to backend-conformance-data-mark: depends on"']],["marker-semantics",['id="backend-conformance-arrow"']],["data-mark-semantics",['data-id="backend-conformance-data-mark"','data-role="bar"']]])){let r=t.filter(e=>!s.includes(e));n(e,0===r.length,iE(r))}let h=e.capabilities.map(t=>{let r=rc(t),i=iT[iO(t)],n={claimKey:r,target:t.target,primitive:t.primitive,feature:t.feature,operation:t.operation,realization:t.realization,...t.diagnostic?{limitation:t.diagnostic}:{}};if(!i)return ri.includes(t.primitive)&&ro.includes(t.feature)&&rn.includes(t.operation)?{...n,status:"failed",diagnostic:"No executable witness is registered for this core claim."}:{...n,status:"unverified-extension",diagnostic:"Namespaced extension claim is outside the built-in witness vocabulary."};let o=`${ik}/${iO(t)}`;try{let r=i(e,t);return{...n,witnessId:o,status:r.passed?"passed":"failed",observation:r.observation,...r.diagnostic?{diagnostic:r.diagnostic}:{}}}catch(e){return{...n,witnessId:o,status:"failed",diagnostic:`Witness threw ${e instanceof Error?e.message:String(e)}`}}}),g=h.filter(e=>"failed"===e.status);return n("capability-claims",0===g.length,g.map(e=>`${e.primitive}/${e.feature}/${e.operation}: ${e.diagnostic??"failed"}`).join("; ")||void 0),v({version:4,fixtureId:ik,backendId:t,contracts:{scene:2,outputSecurity:2},directOutputs:["svg"],passed:i.every(e=>e.passed),checks:i,claims:h})}(u?function(e){let{id:t,capabilities:r,drawNode:i,render:n}=e,o;return{id:t,capabilities:r,drawNode:(t,r)=>i.call(e,t,r),render(t,r){let i=t===iB?.doc?o??=ib(t):t;return n.call(e,i,r)}}}(e):e,l)}finally{a=!1,iQ=t}return o}}),h=(i=(r=function(e,t,r){let{drawNode:i,render:n}=e,o=!1,a=()=>{o||r.running()||(iX(r.report(),t),o=!0)};return e.drawNode=(t,r)=>(a(),i.call(e,t,r)),e.render=(t,r)=>(a(),n.call(e,t,r)),e===iP&&iU.has(n)&&iU.add(e.render),e}(e,d,p)).capabilities,s=["target","primitive","feature","operation","realization","evidence","diagnostic"],r.capabilities=Object.freeze(i.map(e=>{let t=("object"==typeof e||"function"==typeof e)&&null!==e?e:void 0,r=t?{...t}:{};if(t)for(let e of s)Object.prototype.hasOwnProperty.call(r,e)||(r[e]=Reflect.get(t,e));return Object.freeze(r)})),Object.freeze(r));t(iY,{identity:(n={version:iG,compatibility:iV,provenance:iH},B({id:l,kind:"backend",version:n.version??iG,compatibility:n.compatibility,provenance:n.provenance??iZ})),value:h}),iK.set(l,p.report),iJ.set(d,l),u&&(iL=h),iq=void 0}finally{iQ=null}}function i1(){return Object.freeze(Array.from(iY.values(),({identity:e,value:t})=>{let r=iK.get(e.id);return Object.freeze({identity:e,backend:t,inputName:Array.from(iJ.entries()).find(([,t])=>t===e.id)?.[0]??e.id,get conformance(){return r()}})}))}function i2(e,t){return e.find(e=>e.identity.id===t||e.inputName===t)}function i3(e,t){w("backend-registry",t?"bypass":iq?"hit":"miss");let r=t?i1():iq??=i1(),i=i2(r,e);if(!t)return i;let n=t.selectBackend(Object.freeze({requestedId:e,...i?{canonicalId:i.identity.id}:{},registered:r}));if(null!==n)return"string"==typeof n?i2(r,n):i}i0(iP);export{te as a,q as b,G as c,V as d,R as e,H as f,Z as g,Y as h,K as i,Q as j,X as k,ee as l,t7 as m,rr as n,ei as o,eo as p,el as q,eg as r,ex as s,eN as t,eC as u,eM as v,ez as w,eO as x,eT as y,ej as z,eI as A,eA as B,eB as C,eU as D,eq as E,eG as F,eH as G,eZ as H,eQ as I,e4 as J,e7 as K,e9 as L,ty as M,tb as N,tx as O,tk as P,tN as Q,tT as R,tj as S,t_ as T,tI as U,tA as V,tD as W,tB as X,tL as Y,tU as Z,et as _,ra as $,rd as aa,rl as ba,ry as ca,rb as da,rw as ea,rS as fa,rG as ga,ie as ha,id as ia,ib as ja,ix as ka,i_ as la,iI as ma,iA as na,iP as oa,iR as pa,iW as qa,iX as ra,i0 as sa,i3 as ta};