agentic-mermaid 0.5.1 → 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.
- package/AGENT_NATIVE.md +63 -375
- package/CHANGELOG.md +73 -0
- package/README.md +87 -50
- package/assets/hero.png +0 -0
- package/dist/agent-core.d.ts +7 -7
- package/dist/agent-core.js +1 -1
- package/dist/agent.d.ts +7 -7
- package/dist/agent.js +1 -1
- package/dist/agentic-mermaid-mcp.js +1 -1
- package/dist/am.js +1 -1
- package/dist/browser-lazy/chunks/agentic-producer-core-ECZ3CMZM.js +1 -0
- package/dist/browser-lazy/chunks/architecture-H5LTMKQW.js +13 -0
- package/dist/browser-lazy/chunks/block-566X6FNV.js +11 -0
- package/dist/browser-lazy/chunks/builtin-backends-VAFEZXKY.js +12 -0
- package/dist/browser-lazy/chunks/c4-ZXFDLBFK.js +10 -0
- package/dist/browser-lazy/chunks/{chunk-REBVEXI2.js → chunk-2JQXRKBC.js} +1 -1
- package/dist/browser-lazy/chunks/chunk-37FZNMPR.js +1 -0
- package/dist/browser-lazy/chunks/chunk-3JTYTXA6.js +22 -0
- package/dist/browser-lazy/chunks/{chunk-2J5K6NIP.js → chunk-4NILRBC7.js} +1 -1
- package/dist/browser-lazy/chunks/chunk-5LKPDHPC.js +4 -0
- package/dist/browser-lazy/chunks/chunk-62MR3LWJ.js +1 -0
- package/dist/browser-lazy/chunks/chunk-64JFHCJC.js +1 -0
- package/dist/browser-lazy/chunks/chunk-6GPDLZFQ.js +1 -0
- package/dist/browser-lazy/chunks/chunk-6UOOATQR.js +1 -0
- package/dist/browser-lazy/chunks/chunk-7TTFBJYA.js +1 -0
- package/dist/browser-lazy/chunks/chunk-7UFOFWBA.js +20 -0
- package/dist/browser-lazy/chunks/{chunk-HR5TE7TE.js → chunk-A7V5VDKN.js} +1 -1
- package/dist/browser-lazy/chunks/chunk-CPO5P4L2.js +1 -0
- package/dist/browser-lazy/chunks/chunk-EIYLJ4FI.js +20 -0
- package/dist/browser-lazy/chunks/{chunk-GMTB5UTY.js → chunk-G4JBA7HU.js} +3 -3
- package/dist/browser-lazy/chunks/chunk-HJVO5VC3.js +1 -0
- package/dist/browser-lazy/chunks/chunk-IUI4DYC3.js +3 -0
- package/dist/browser-lazy/chunks/{chunk-SBXYR7Z3.js → chunk-J57YRC2M.js} +1 -1
- package/dist/browser-lazy/chunks/chunk-LBXXKLIR.js +3 -0
- package/dist/browser-lazy/chunks/chunk-NKW2ZNCD.js +1 -0
- package/dist/browser-lazy/chunks/chunk-O34YYEQV.js +1 -0
- package/dist/browser-lazy/chunks/{chunk-E7UIB4SZ.js → chunk-OBI5U5XU.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-LLPBKBIG.js → chunk-OFOS57WQ.js} +1 -1
- package/dist/browser-lazy/chunks/chunk-PSZEE64O.js +16 -0
- package/dist/browser-lazy/chunks/chunk-PXTLV57R.js +1 -0
- package/dist/browser-lazy/chunks/chunk-QVSZOF5M.js +1 -0
- package/dist/browser-lazy/chunks/chunk-TLFX3U6S.js +1 -0
- package/dist/browser-lazy/chunks/{chunk-MSP3S2VS.js → chunk-TT5GR5EJ.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-KXPF5KIU.js → chunk-V6I2VGNQ.js} +5 -5
- package/dist/browser-lazy/chunks/{chunk-HDKHAM2V.js → chunk-VRZKI33U.js} +1 -1
- package/dist/browser-lazy/chunks/chunk-XHU3A432.js +1 -0
- package/dist/browser-lazy/chunks/chunk-YVNJDVQO.js +1 -0
- package/dist/browser-lazy/chunks/chunk-Z7UHFVKN.js +6 -0
- package/dist/browser-lazy/chunks/class-XIFNVBFE.js +13 -0
- package/dist/{zenuml/chunks/decode-BWERFDGK.js → browser-lazy/chunks/decode-5MFOG3AZ.js} +1 -1
- package/dist/browser-lazy/chunks/{elk.bundled-L4CADV5W.js → elk.bundled-RYWHIS5N.js} +8 -8
- package/dist/browser-lazy/chunks/er-VEUYJBGG.js +11 -0
- package/dist/browser-lazy/chunks/eventmodeling-G7DITZX7.js +19 -0
- package/dist/browser-lazy/chunks/flowchart-SSFIU4EU.js +4 -0
- package/dist/browser-lazy/chunks/{forest-implementation-AEP24AIP.js → forest-implementation-RWFF7XDV.js} +1 -1
- package/dist/browser-lazy/chunks/gantt-HQNVDX2B.js +11 -0
- package/dist/browser-lazy/chunks/{gitgraph-W26QIMTY.js → gitgraph-Z5MN6M6L.js} +4 -4
- package/dist/browser-lazy/chunks/ishikawa-UEERNFQV.js +6 -0
- package/dist/browser-lazy/chunks/journey-3BEWWGB5.js +16 -0
- package/dist/browser-lazy/chunks/kanban-2WFNCWLB.js +20 -0
- package/dist/{zenuml/chunks/mermaid-yaml-runtime-KZVU74WU.js → browser-lazy/chunks/mermaid-yaml-runtime-IK4ET4BT.js} +8 -8
- package/dist/browser-lazy/chunks/{mindmap-5A3MVHNH.js → mindmap-R2C6SNYR.js} +6 -6
- package/dist/browser-lazy/chunks/{packet-AL6VDOMY.js → packet-GMVCI5YZ.js} +5 -5
- package/dist/browser-lazy/chunks/pie-WER45DKC.js +15 -0
- package/dist/browser-lazy/chunks/{quadrant-RJ56XFBR.js → quadrant-NCUPSFKN.js} +5 -5
- package/dist/browser-lazy/chunks/radar-WLYS4YC5.js +16 -0
- package/dist/browser-lazy/chunks/render-core-42UVWIPF.js +3 -0
- package/dist/browser-lazy/chunks/requirement-AK3NWMJ6.js +19 -0
- package/dist/browser-lazy/chunks/{sankey-WKTBEZSS.js → sankey-C2DY6WVU.js} +8 -8
- package/dist/browser-lazy/chunks/sequence-D4WJB44W.js +5 -0
- package/dist/browser-lazy/chunks/state-YUQVESE7.js +4 -0
- package/dist/browser-lazy/chunks/{timeline-PRV5PWGP.js → timeline-BMBJJXWR.js} +4 -4
- package/dist/browser-lazy/chunks/{treemap-BVME3JLI.js → treemap-B66XBZZ6.js} +4 -4
- package/dist/browser-lazy/chunks/{xychart-XBI2RNHD.js → xychart-HAVFROGT.js} +6 -6
- package/dist/browser-lazy/chunks/{zenuml-GQKPRQFJ.js → zenuml-62RLYFWP.js} +8 -8
- package/dist/browser-lazy/index.d.ts +10 -0
- package/dist/browser-lazy/index.js +1 -1
- package/dist/browser.global.js +541 -541
- package/dist/{chunk-AVS4T4NO.js → chunk-2DNGDTJD.js} +2 -2
- package/dist/{chunk-AWZBTOV6.js → chunk-4F2UGYTM.js} +2 -2
- package/dist/{chunk-6JBQYHWB.js → chunk-7XYB2LNC.js} +2 -2
- package/dist/chunk-DOFB572I.js +58 -0
- package/dist/chunk-EHJI3QYE.js +52 -0
- package/dist/{chunk-YISEN5SO.js → chunk-HINRNKPO.js} +2 -2
- package/dist/{chunk-ORYXYGDV.js → chunk-KXMANAST.js} +33 -33
- package/dist/chunk-U4MT3RRE.js +2 -0
- package/dist/{chunk-AIWXP4OF.js → chunk-WYIB6BUR.js} +2 -2
- package/dist/{cli-BOEN5YAF.js → cli-ZYIDBYNS.js} +2 -2
- package/dist/{index-Cr3xjRw9.d.ts → index-Bvhprdxz.d.ts} +3 -3
- package/dist/index.d.ts +4 -4
- package/dist/index.js +1 -1
- package/dist/{mcp-cli-NM3P4VPC.js → mcp-cli-YVDCORWA.js} +2 -2
- package/dist/{paint-certification-C33LRvWT.d.ts → paint-certification-BoLyr006.d.ts} +22 -2
- package/dist/{server-FY5Z7F32.js → server-4JGAVXR3.js} +2 -2
- package/dist/{svg-styles-C_v2tnxG.d.ts → svg-styles-BnCoXyYe.d.ts} +1 -1
- package/dist/svg-styles.d.ts +1 -1
- package/dist/svg-styles.js +1 -1
- package/dist/svg.d.ts +4 -4
- package/dist/svg.js +1 -1
- package/dist/{types-DxOTIgwg.d.ts → types-CLVJCaH2.d.ts} +11 -1
- package/dist/zenuml/chunks/{appearance-FTQ2722O.js → appearance-5RM5MVM2.js} +1 -1
- package/dist/zenuml/chunks/{builtin-backends-QLY75JCL.js → builtin-backends-UTNWL4N3.js} +11 -11
- package/dist/zenuml/chunks/{chunk-LYIRUTCM.js → chunk-3A6S6GNB.js} +2 -2
- package/dist/zenuml/chunks/{chunk-6OONHTSD.js → chunk-55WS466K.js} +9 -9
- package/dist/zenuml/chunks/chunk-6J4BGPB2.js +29 -0
- package/dist/zenuml/chunks/chunk-CNLL4BGF.js +1 -0
- package/dist/zenuml/chunks/{chunk-YFCDP4ZS.js → chunk-IARQ24W3.js} +13 -13
- package/dist/zenuml/chunks/chunk-ZNZRIISS.js +4 -0
- package/dist/{browser-lazy/chunks/decode-63UIZGD2.js → zenuml/chunks/decode-LDNNXEAO.js} +1 -1
- package/dist/{browser-lazy/chunks/mermaid-yaml-runtime-QVYX4EWK.js → zenuml/chunks/mermaid-yaml-runtime-A5CNJ3IE.js} +8 -8
- package/dist/zenuml/chunks/render-core-ECIWU5ZS.js +3 -0
- package/dist/zenuml/chunks/{zenuml-URQ4HIMD.js → zenuml-N3LZMB2G.js} +9 -9
- package/dist/zenuml.d.ts +2 -2
- package/dist/zenuml.js +1 -1
- package/docs/MCP-DIRECTORY-LISTINGS.md +81 -12
- package/docs/README.md +59 -110
- package/docs/api.md +3 -1
- package/docs/config.md +37 -0
- package/docs/getting-started.md +27 -44
- package/examples/styles/readme-hero.md +25 -0
- package/examples/styles/readme-hero.mmd +13 -0
- package/examples/styles/readme-hero.style.json +7 -0
- package/package.json +1 -1
- package/server.json +2 -2
- package/dist/browser-lazy/chunks/agentic-producer-core-MGU4FD6J.js +0 -1
- package/dist/browser-lazy/chunks/architecture-KZTC3672.js +0 -13
- package/dist/browser-lazy/chunks/block-J5PD6HQM.js +0 -11
- package/dist/browser-lazy/chunks/builtin-backends-GSGJPT5A.js +0 -12
- package/dist/browser-lazy/chunks/c4-VNQSIA5M.js +0 -10
- package/dist/browser-lazy/chunks/chunk-4C2BVM5Y.js +0 -1
- package/dist/browser-lazy/chunks/chunk-5GE2SFLQ.js +0 -4
- package/dist/browser-lazy/chunks/chunk-6YGQR6R4.js +0 -16
- package/dist/browser-lazy/chunks/chunk-7AHX3HH7.js +0 -1
- package/dist/browser-lazy/chunks/chunk-B5PDJUJG.js +0 -3
- package/dist/browser-lazy/chunks/chunk-CXQWSLJV.js +0 -1
- package/dist/browser-lazy/chunks/chunk-DWDYWUAS.js +0 -1
- package/dist/browser-lazy/chunks/chunk-EUBVLDYV.js +0 -29
- package/dist/browser-lazy/chunks/chunk-FBL4ONAL.js +0 -20
- package/dist/browser-lazy/chunks/chunk-NQF75XGM.js +0 -3
- package/dist/browser-lazy/chunks/chunk-P7DO3MRP.js +0 -13
- package/dist/browser-lazy/chunks/chunk-QQ2U2KAY.js +0 -1
- package/dist/browser-lazy/chunks/chunk-SJYDRC6G.js +0 -1
- package/dist/browser-lazy/chunks/chunk-UUTB6MDK.js +0 -1
- package/dist/browser-lazy/chunks/chunk-WEREIH5P.js +0 -1
- package/dist/browser-lazy/chunks/chunk-WHNTP27R.js +0 -6
- package/dist/browser-lazy/chunks/chunk-YXGB25MZ.js +0 -1
- package/dist/browser-lazy/chunks/class-FNDNJGYH.js +0 -13
- package/dist/browser-lazy/chunks/er-P263BDFG.js +0 -11
- package/dist/browser-lazy/chunks/eventmodeling-XX3VCGSC.js +0 -19
- package/dist/browser-lazy/chunks/flowchart-GTLWJA3P.js +0 -4
- package/dist/browser-lazy/chunks/gantt-SRIHFAIC.js +0 -11
- package/dist/browser-lazy/chunks/ishikawa-NTHJ7BUO.js +0 -6
- package/dist/browser-lazy/chunks/journey-3T62IEHN.js +0 -16
- package/dist/browser-lazy/chunks/kanban-U6DQ7LWQ.js +0 -20
- package/dist/browser-lazy/chunks/pie-4QYMTQ7W.js +0 -15
- package/dist/browser-lazy/chunks/radar-L5B4CNEL.js +0 -16
- package/dist/browser-lazy/chunks/render-core-CIGKBI2T.js +0 -3
- package/dist/browser-lazy/chunks/requirement-5QVLRI6Z.js +0 -19
- package/dist/browser-lazy/chunks/sequence-G6DQHPR7.js +0 -5
- package/dist/browser-lazy/chunks/state-6DEA5BXE.js +0 -4
- package/dist/chunk-PNL435CH.js +0 -58
- package/dist/chunk-XCEEF3NJ.js +0 -2
- package/dist/chunk-YQKNJNU4.js +0 -52
- package/dist/zenuml/chunks/chunk-4VRUBLG4.js +0 -29
- package/dist/zenuml/chunks/chunk-7QDAZ2HL.js +0 -4
- package/dist/zenuml/chunks/chunk-GDLMM3YO.js +0 -1
- package/dist/zenuml/chunks/render-core-DNCYYOIB.js +0 -3
- /package/dist/browser-lazy/chunks/{chunk-5FQ534HP.js → chunk-BMZ24VPS.js} +0 -0
- /package/dist/browser-lazy/chunks/{chunk-2I4UPL7Q.js → chunk-D6MQ7QSU.js} +0 -0
- /package/dist/browser-lazy/chunks/{chunk-LH7HUDKW.js → chunk-L4UC3KGS.js} +0 -0
- /package/dist/browser-lazy/chunks/{chunk-NMQQMRIR.js → chunk-MFTQWHUB.js} +0 -0
- /package/dist/browser-lazy/chunks/{chunk-N5ELX7LR.js → chunk-PJJSDGLB.js} +0 -0
- /package/dist/browser-lazy/chunks/{chunk-CSFUKSU6.js → chunk-QCU5G5PZ.js} +0 -0
- /package/dist/browser-lazy/chunks/{chunk-5UVGUSD6.js → chunk-YHMTSXIR.js} +0 -0
- /package/dist/zenuml/chunks/{chunk-EVPSMEKN.js → chunk-GC7IPQ5P.js} +0 -0
package/dist/chunk-PNL435CH.js
DELETED
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import{a as Ji,c as ve,d as Rt,e as Zi,f as Qi}from"./chunk-3LGLPG33.js";import{a as pc}from"./chunk-VUFVLGTH.js";var mc=1;var gc=/^[a-z][a-z0-9.-]*:[a-z0-9][a-z0-9._/-]*$/;var yc=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/;var hc=new Set(["required","preferred","optional"]);function Nt(e){return gc.test(e)}function De(e){if(typeof e!=="string")return void 0;const n=e.match(yc);if(!n)return void 0;const t=n[4];if(t?.split(".").some(r=>/^\d+$/.test(r)&&r.length>1&&r.startsWith("0"))){return void 0}return{major:n[1],minor:n[2],patch:n[3],...t?{prerelease:t}:{}}}function Tr(e,n){if(e.length!==n.length)return e.length<n.length?-1:1;return e===n?0:e<n?-1:1}function bc(e,n){return Tr(e.major,n.major)||Tr(e.minor,n.minor)||Tr(e.patch,n.patch)}function Rr(e){if(typeof e!=="string")return false;const n=e.trim();if(n==="*"||/^(0|[1-9]\d*)\.(?:x|\*)$/i.test(n))return true;const t=n.match(/^(\^|~|>=)?(.+)$/);const r=De(t?.[2]??"");if(!t||!r)return false;return!r.prerelease||t[1]===void 0}function Nr(e,n){const t=De(e);if(!t||typeof n!=="string")return false;const r=n.trim();if(r==="*")return t.prerelease===void 0;const i=r.match(/^(0|[1-9]\d*)\.(?:x|\*)$/i);if(i)return t.prerelease===void 0&&t.major===i[1];const o=r.match(/^(\^|~|>=)?(.+)$/);const s=De(o?.[2]??"");if(!o||!s)return false;const a=bc(t,s);if(t.prerelease||s.prerelease){return o[1]===void 0&&a===0&&t.prerelease===s.prerelease}switch(o[1]){case">=":return a>=0;case"~":return a>=0&&t.major===s.major&&t.minor===s.minor;case"^":if(a<0)return false;if(s.major!=="0")return t.major===s.major;if(s.minor!=="0")return t.major==="0"&&t.minor===s.minor;return t.major==="0"&&t.minor==="0"&&t.patch===s.patch;default:return a===0}}function xc(e,n){if(!Array.isArray(e))throw new TypeError("Capability offers must be an array");if(!Array.isArray(n))throw new TypeError("Capability requirements must be an array");const t=new Map;for(const[s,a]of e.entries()){if(!a||typeof a!=="object"||Array.isArray(a)){throw new TypeError(`Capability offer at index ${s} must be an object`)}if(typeof a.id!=="string")throw new Error(`Invalid capability id "${String(a.id)}"`);if(!Nt(a.id))throw new Error(`Invalid capability id "${a.id}"`);if(typeof a.version!=="string")throw new Error(`Capability "${a.id}" has invalid semantic version "${String(a.version)}"`);if(!De(a.version))throw new Error(`Capability "${a.id}" has invalid semantic version "${a.version}"`);if(t.has(a.id))throw new Error(`Duplicate capability offer "${a.id}"`);t.set(a.id,a.version)}const r=new Set;const i=n.map((s,a)=>{if(!s||typeof s!=="object"||Array.isArray(s)){throw new TypeError(`Capability requirement at index ${a} must be an object`)}if(typeof s.id!=="string")throw new Error(`Invalid capability id "${String(s.id)}"`);if(!Nt(s.id))throw new Error(`Invalid capability id "${s.id}"`);if(!hc.has(s.level)){throw new Error(`Capability "${s.id}" has invalid requirement level "${String(s.level)}"`)}if(!Rr(s.range)){throw new Error(`Capability "${s.id}" has invalid semantic-version range "${String(s.range)}"`)}if(r.has(s.id))throw new Error(`Duplicate capability requirement "${s.id}"`);r.add(s.id);const c=t.get(s.id);const d=c===void 0?"unsupported":Nr(c,s.range)?"selected":"incompatible";return Object.freeze({id:s.id,range:s.range,level:s.level,status:d,...c!==void 0?{version:c}:{}})});const o=i.every(s=>s.level!=="required"||s.status==="selected");return Object.freeze({version:mc,accepted:o,resolutions:Object.freeze(i)})}var Sc=Object.freeze([{id:"core:render-request",version:"1.0.0"},{id:"core:family-descriptor",version:"1.0.0"}].map(e=>Object.freeze(e)));function eo(e,n,t,r){const i={id:`output:${e}`,version:"1.0.0"};const o=Ji.includes(e);return xc([...Sc,...n,...!o||!r?[]:[i]],[{id:"core:render-request",range:"^1.0.0",level:"required"},...t,{id:`output:${e}`,range:"^1.0.0",level:"required"}])}function ff(e,n){return eo(e,n?[n]:[],n?[{id:n.id,range:n.version,level:"required"}]:[],true)}function pf(e,n){return eo(e,n.offers,n.requirements,n.outputAvailable)}var kc=Object.freeze({id:"agentic-mermaid:inter-estimate",version:"4.0.0"});function Ec(e){if(e===void 0)return void 0;if(typeof e!=="object"||e===null)throw new TypeError("textMeasurement must be an object with id, version, and measure");const{id:n,version:t,measure:r}=e;if(typeof n!=="string"||n.length>160||!/^[A-Za-z][A-Za-z0-9._:/-]*$/.test(n)){throw new TypeError("textMeasurement.id must be a stable name of at most 160 characters")}if(n===kc.id)throw new TypeError("textMeasurement.id is reserved for the deterministic default");if(typeof t!=="string"||t.length>80||!De(t)){throw new TypeError("textMeasurement.version must be a semantic version")}if(typeof r!=="function")throw new TypeError("textMeasurement.measure must be a function");return Object.freeze({id:n,version:t,measure:r})}var no=1e6;var Cc=2e4;function yf(e,n){const t=Ec(e);if(!t)return void 0;const r=Object.freeze({id:t.id,version:t.version});const i=new Map;return Object.freeze({identity:r,width(o){const s=o.fontFamily??(o.monospace?"JetBrains Mono":n);const a=JSON.stringify([o.text,s,o.fontSize,o.fontWeight,o.fontStyle,o.monospace]);const c=i.get(a);if(c!==void 0)return c;const d=$r(void 0,()=>t.measure(Object.freeze({...o,fontFamily:s})));if(typeof d!=="number"||!Number.isFinite(d)||d<0||d>no){throw new RangeError(`Text measurement profile ${r.id}@${r.version} must return a finite width between 0 and ${no} pixels`)}if(i.size<Cc)i.set(a,d);return d}})}var Xn;function $r(e,n){const t=Xn;Xn=e;try{return n()}finally{Xn=t}}function je(){return Xn!==void 0}function Or(e){return Xn?.width(e)}var wc=[[11904,12031],[12032,12255],[12288,12351],[12352,12447],[12448,12543],[12544,12591],[12688,12799],[12800,13311],[13312,19903],[19968,40959],[63744,64255],[131072,196607]];var Tc=[[4352,4447],[12592,12687],[44032,55215]];var Rc=[[9001,9002],[65040,65049],[65072,65135],[65280,65376],[65504,65510]];var Nc=[[127744,129791]];var to=[127995,127999];var $c=[[768,879],[6832,6911],[7616,7679],[8400,8447],[65056,65071]];var Oc=new Set([8203,8204,8205,65279]);var ro=65038;var io=65039;var bf=8205;function qn(e,n){for(const[t,r]of n)if(e>=t&&e<=r)return true;return false}function oo(e){return qn(e,wc)||qn(e,Tc)||qn(e,Rc)||qn(e,Nc)}function so(e){return qn(e,$c)||Oc.has(e)}function xf(e){return e>=to[0]&&e<=to[1]}var _r="<\\/?(?:b|strong|i|em|u|s|del)\\s*>";var ao=/<(\/)?(?:(b|strong)|(i|em)|(u)|(s|del))\s*>/gi;var Jn=new RegExp(_r,"i");function $t(e){const n=[];let t=false;let r=false;let i=false;let o=false;let s=0;ao.lastIndex=0;let a;while((a=ao.exec(e))!==null){if(a.index>s){n.push({text:e.slice(s,a.index),bold:t,italic:r,underline:i,strikethrough:o})}s=a.index+a[0].length;const c=Boolean(a[1]);if(a[2])t=!c;else if(a[3])r=!c;else if(a[4])i=!c;else if(a[5])o=!c}if(s<e.length){n.push({text:e.slice(s),bold:t,italic:r,underline:i,strikethrough:o})}return n}function Ot(e){let n=e.text;if(e.strikethrough)n=`<s>${n}</s>`;if(e.underline)n=`<u>${n}</u>`;if(e.italic)n=`<i>${n}</i>`;if(e.bold)n=`<b>${n}</b>`;return n}var _c=new Intl.Segmenter(void 0,{granularity:"grapheme"});var Ac=/^[\x20-\x7e]*$/;function ne(e){if(Ac.test(e))return e.split("");return Array.from(_c.segment(e),n=>n.segment)}var Mc=new Set(["i","l","t","f","j","I","1","!","|",".",",",":",";","'"]);var Ic=new Set(["W","M","w","m","@","%"]);var co=new Set(["W","M"]);var Pc=new Set(["(",")","[","]","{","}","/","\\","-",'"',"`"]);function lo(e){return so(e)||e===ro||e===io}function uo(e){return oo(e)}var vc=/\p{Emoji_Presentation}|\p{Extended_Pictographic}/u;function fo(e){return vc.test(e)}function mn(e){const n=e.codePointAt(0);if(n===void 0)return 0;if(lo(n))return 0;if(uo(n)||fo(e))return 2;if(e===" ")return .3;if(co.has(e))return 1.5;if(Ic.has(e))return 1.2;if(Mc.has(e))return .4;if(Pc.has(e))return .5;if(e==="r")return .8;if(n>=65&&n<=90)return 1.2;if(n>=48&&n<=57)return 1;return 1}var Dc={version:4,unit:"px",fontCalibration:"Inter-compatible proportional estimate",monospaceCalibration:"0.6em-per-cell",wideCodepoints:"src/shared/unicode-ranges.ts",emojiDetection:"Emoji_Presentation-or-Extended_Pictographic",ambiguousWidth:"single-cell",paintedAdvanceProjection:"prepared-positions-or-svg-textLength-spacingAndGlyphs",naturalAdvanceExemptions:"prepared-non-ascii-shaping-runs"};function jc(e){return e>=600?.6:e>=500?.57:.54}function po(e){const n=jc(e.fontWeight);let t=0;let r=0;for(const o of e.text){t+=mn(o);r++}const i=e.fontSize*.15;return{contract:Dc,width:Or({...e,fontStyle:e.fontStyle??"normal",monospace:false})??t*e.fontSize*n+i,charWidthUnits:t,codePointCount:r,fontSize:e.fontSize,fontWeight:e.fontWeight,baseRatio:n,minPadding:i}}function Zn(e,n,t,r="normal",i){return po({text:e,fontSize:n,fontWeight:t,fontStyle:r,fontFamily:i}).width}function _t(e,n,t,r="normal",i){const o=po({text:e,fontSize:n,fontWeight:t,fontStyle:r,fontFamily:i});if(je())return o.width;let s=0;for(const a of e){if(co.has(a))s+=1.85-1.5}return o.width+s*n*o.baseRatio}function At(e,n,t=0,r=400,i="normal",o){const s=ne(e);const a=Math.max(0,s.length-1)*t;const c=Or({text:e,fontSize:n,fontWeight:r,fontStyle:i,fontFamily:o,monospace:true});if(c!==void 0)return Math.max(0,c+a);let d=0;for(const l of s){let u=0;for(const m of l){const f=m.codePointAt(0);if(f===void 0||lo(f))continue;u=Math.max(u,uo(f)||fo(m)?2:1)}d+=u}return Math.max(0,d*n*.6+a)}function zc(e,n,t,r=0,i="normal",o){const s=Jn.test(e)?$t(e):[{text:e,bold:false}];const a=s.map(l=>l.text).join("");const c=r===0?0:Math.max(0,ne(a).length-1)*r;const d=s.reduce((l,u)=>l+Zn(u.text,n,u.bold?Math.max(700,t):t,"italic"in u&&u.italic||i==="italic"?"italic":"normal",o),0);return Math.max(0,d+c)}var Ne=1.3;function Nf(e,n,t,r=0){if(typeof e!=="string"){const a=e.lines.map(l=>l.map(u=>u.text).join(""));const c=e.lines.reduce((l,u,m)=>{const f=r===0?0:Math.max(0,ne(a[m]).length-1)*r;const g=u.reduce((b,h)=>b+Zn(h.text,n,h.bold?Math.max(700,t):t),0);return Math.max(l,g+f)},0);const d=n*Ne;return{width:c,height:a.length*d,lines:a,lineHeight:d}}const i=e.split("\n");const o=n*Ne;let s=0;for(const a of i){const c=zc(a,n,t,r);if(c>s)s=c}return{width:s,height:i.length*o,lines:i,lineHeight:o}}import{decodeXML as Lc}from"entities";var Ar=Symbol.for("agentic-mermaid.performance-observer.v1");var Mr=globalThis;function Ir(e,n){try{e(Object.freeze(n))}catch{}}function mo(){const e=Mr[Ar];if(typeof e==="function")Ir(e,{version:1,kind:"scope",owner:"graphical"})}function Xe(e,n,t,r){const i=Mr[Ar];if(typeof i==="function")Ir(i,{version:1,kind:"cache",owner:e,outcome:n,...t?{reason:t}:{},...r?{detail:r}:{}})}function Of(e,n,t){const r=Mr[Ar];if(typeof r==="function")Ir(r,{version:1,kind:"fallback",owner:e,reason:n,...t!==void 0?{attempt:t}:{}})}var gn;var Qn=0;var Bc=512*1024;var go=512;var yn=0;function Mf(e){mo();const n=gn;const t=Qn;const r=yn;gn=new Map;Qn=0;yn=0;try{return e()}finally{gn=n;Qn=t;yn=r}}function ze(e,n,t){if(!gn){Xe("svg-inspection","bypass","outside-graphical-scope",e);return t()}let r=gn.get(e);if(r?.has(n)){Xe("svg-inspection","hit",void 0,e);return r.get(n)}Xe("svg-inspection","miss",void 0,e);const i=t();if(yn<go&&Qn+n.length<=Bc){if(!r){r=new Map;gn.set(e,r)}r.set(n,i);Qn+=n.length;yn++}else Xe("svg-inspection","store-skipped",yn>=go?"entry-limit":"character-limit",e);return i}function et(e){if(e===void 0)return false;const n=e.charCodeAt(0);const t=n|32;return t>=97&&t<=122||n>=48&&n<=57||n===95||n===46||n===58||n===45}function Mt(e){if(e===void 0)return false;const n=e.charCodeAt(0);if(n<128)return n===32||n>=9&&n<=13;return/\s/.test(e)}function yo(e,n){let t=e.indexOf(">",n);if(t<0)return-1;for(let r=n;r<t;r++){const i=e[r];if(i!=='"'&&i!=="'")continue;const o=e.indexOf(i,r+1);if(o<0)return-1;r=o;if(o>t){t=e.indexOf(">",o+1);if(t<0)return-1}}return t+1}function Be(e){return ze("start-tags",e,()=>It(e))}function ho(e,n,t){const r={attribute:t,expectedName:n,name:void 0};It(e,void 0,void 0,r);return r.name}function It(e,n,t,r){const i=n||t||r?void 0:[];for(let o=e.indexOf("<");o>=0;o=e.indexOf("<",o+1)){if(e.startsWith("<!--",o)){const f=e.indexOf("-->",o+4);if(f<0)break;o=f+2;continue}const s=e[o+1];if(!s||s==="/"||s==="!"||s==="?")continue;let a=o+1;while(et(e[a]))a++;if(a===o+1)continue;const c=yo(e,a);if(c<0)break;let d=c-2;while(d>o&&Mt(e[d]))d--;const l=e.slice(o+1,a);if(r)r.name=l;const u=e[d]==="/";const m=i?[]:void 0;if(i||n||r){let f=a;while(f<c-1){while(Mt(e[f]))f++;if(e[f]===">"||e[f]==="/"&&e[f+1]===">")break;const g=f;while(et(e[f]))f++;if(f===g)break;const b=e.slice(g,f);while(Mt(e[f]))f++;if(e[f]!=="=")break;f++;while(Mt(e[f]))f++;const h=e[f];if(h!=='"'&&h!=="'")break;f++;const k=f;const x=e.indexOf(h,f);if(x<0||x>=c-1)break;f=x;if(m)m.push(Object.freeze({name:b,value:e.slice(k,f),quote:h,nameStart:g,valueStart:k,valueEnd:f}));else if(r&&r.name===r.expectedName)r.attribute(b,e.slice(k,f));else if(n&&Wc.has(b)){const S={start:k,end:f};n.push(S);if(b==="style")t.push(S)}f++}}if(i)i.push(Object.freeze({name:l,start:o,end:c,attributes:Object.freeze(m),selfClosing:u}));if(r)return void 0;if(t&&l==="style"&&!u){const f=e.indexOf("</style",c);if(f>=0){const g={start:c,end:f};n?.push(g);t.push(g)}}o=c-1}return i&&Object.freeze(i)}function zf(e){const n=e.search(/\S/);if(n<0)return void 0;const t=yo(e,n);if(t<0)return void 0;const r=Be(e.slice(0,t))[0];return r?.start===n&&r.name==="svg"?r:void 0}function Fc(e,n){return e.attributes.find(t=>t.name===n)}function bo(e,n){const t=Fc(e,n);return t?Lc(t.value):void 0}function xo(e,n){if(n.length===0)return e;const t=[...n].sort((o,s)=>s.start-o.start);const r=[];let i=e.length;for(const o of t){if(o.end>i){let s=e;for(const a of t)s=`${s.slice(0,a.start)}${a.value}${s.slice(a.end)}`;return s}r.push(e.slice(o.end,i),o.value);i=o.start}r.push(e.slice(0,i));return r.reverse().join("")}function Bf(e,n){const t=[];for(const r of Be(e)){for(const i of r.attributes){const o=n(i,r);if(o!==void 0&&o!==i.value){t.push({start:i.valueStart,end:i.valueEnd,value:o})}}}return xo(e,t)}var Wc=new Set(["clip-path","color","cursor","fill","filter","flood-color","lighting-color","marker-end","marker-mid","marker-start","mask","stop-color","stroke","style"]);function qe(e){const n=[];const t=[];It(e,n,t);return{source:e,cssRanges:n,styleContexts:t}}function Lf(e){const n=[];It(e,void 0,n);return n}function Ff(e){return qe(e).cssRanges.map(n=>e.slice(n.start,n.end)).join("\n")}function Pt(e,n,t=qe(e)){if(t.source!==e)throw new Error("SVG CSS projection does not match its source");return xo(e,t.cssRanges.map(r=>({...r,value:n(e.slice(r.start,r.end))})))}function Wf(e,n,t){return`${e.slice(0,n.start)}${t}${e.slice(n.end)}`}var Le=class{#e=new Map;#n=0;#r;#t;#i;constructor(n,t,r){this.#r=n;this.#t=t;this.#i=r}get(n){const t=this.#e.get(n);if(!t)return void 0;this.#e.delete(n);this.#e.set(n,t);return t.value}canFit(n,t){const r=this.#e.get(n);return Number.isFinite(t)&&t>=0&&this.#e.size+(r?0:1)<=this.#r&&this.#n-(r?.weight??0)+t<=this.#t}leastRecentlyUsed(){const n=this.#e.values().next();return n.done?void 0:n.value.value}delete(n){const t=this.#e.get(n);if(!t)return false;this.#e.delete(n);this.#n-=t.weight;this.#i?.(n,t.value);return true}set(n,t,r){if(!Number.isFinite(r)||r<0||r>this.#t)return;this.delete(n);this.#e.set(n,{value:t,weight:r});this.#n+=r;while(this.#e.size>this.#r||this.#n>this.#t){const i=this.#e.keys().next().value;this.delete(i)}}clear(){if(this.#i)for(const n of this.#e.keys())this.delete(n);else{this.#e.clear();this.#n=0}}};var Vc=/[-+]?(?:\d+\.?\d*|\.\d+)(?:[eE][-+]?\d+)?/g;var Pr=/\.\d{12}/;var Uc=/^[-+]?(?:\d+\.?\d*|\.\d+)(?:[eE][-+]?\d+)?(?:%|px|pt|pc|em|ex|rem|cm|mm|in)?$/;var Gc=new Set(["x","y","x1","y1","x2","y2","cx","cy","r","rx","ry","dx","dy","width","height","refX","refY","markerWidth","markerHeight","stroke-width","stroke-dashoffset","stroke-miterlimit","pathLength","font-size","font-weight","letter-spacing","textLength","opacity","fill-opacity","stroke-opacity","stop-opacity","offset"]);var vt=new Map;var Dt=new Map;function U(e){const n=vt.get(e);if(n!==void 0)return n;const t=String(e);const r=t.length>=14&&Pr.test(t)&&Number.isFinite(e)?String(Number(e.toPrecision(12))):t;if(vt.size>=1024)vt.clear();vt.set(e,r);return r}function nt(e,n){if(n.length<13||!Pr.test(n))return n;const t=n.length<=512?`${e}\0${n}`:void 0;const r=t===void 0?void 0:Dt.get(t);if(r!==void 0)return r;const i=Gc.has(e)&&Uc.test(n)||(e==="viewBox"||e==="points"||e==="stroke-dasharray")&&/^[-+\d.eE,\s]+$/.test(n)||e==="d"&&/^[MmZzLlHhVvCcSsQqTtAa\d.eE,+\s-]+$/.test(n)||(e==="transform"||e==="gradientTransform"||e==="patternTransform")&&/^(?:(?:matrix|translate|scale|rotate|skewX|skewY)\s*\([-+\d.eE,\s]+\)\s*)+$/.test(n);if(!i)return n;const o=n.replace(Vc,(s,a)=>{if(!Pr.test(s))return s;const c=Number(s);if(!Number.isFinite(c))return s;const d=U(c);return s.startsWith(".")&&a>0&&/[\d.]/.test(n[a-1])?` ${d}`:d});if(t!==void 0){if(Dt.size>=256)Dt.clear();Dt.set(t,o)}return o}function So(e,n){const t=new WeakSet;let r=0;const i=o=>{if(r>n)return;if(typeof o==="string"){r+=o.length*4+16;return}if(o===null||typeof o!=="object"){r+=16;return}if(t.has(o)){r+=8;return}t.add(o);r+=64;if(o instanceof Map){for(const[s,a]of o){r+=32;i(s);i(a);if(r>n)break}}else if(o instanceof Set){for(const s of o){r+=16;i(s);if(r>n)break}}else if(o instanceof ArrayBuffer)r+=o.byteLength;else if(ArrayBuffer.isView(o))i(o.buffer);else{for(const s of Object.keys(o)){r+=s.length*2+16;i(o[s]);if(r>n)break}}};i(e);return r}import{decodeXML as ud}from"entities";var Yc=["text-spans","indexed-layout","position-cache"];var ko=globalThis;var Eo=ko.process?.env?.AGENTIC_MERMAID_EXPERIMENTS??ko.AGENTIC_MERMAID_EXPERIMENTS;var Hc=new Set(typeof Eo==="string"?Eo.split(",").map(e=>e.trim()).filter(Boolean):Yc);var Kc;function hn(e){return(Kc??Hc).has(e)}function jt(e,n=false){if(!/[\u0000-\u001f\u007f-\u009f]/.test(e))return e;let t="";for(const r of e){const i=r.codePointAt(0);const o=i<=31||i>=127&&i<=159;if(r===" ")t+=" ";else if(!o||n&&(r==="\n"||r==="\r"))t+=r;else t+="?"}return t}function zt(e){return e.split("\n").map(n=>jt(n)).join("\n")}var Co=new Le(512,4*1024*1024);var To=new WeakSet;function tt(e){To.add(e);return e}function Ro(e){if(To.has(e))return e;return tt(Object.freeze({source:e.source,display:e.display,...e.transform?{transform:e.transform}:{},lineStarts:Object.freeze([...e.lineStarts]),lines:Object.freeze(e.lines.map(n=>Object.freeze(n.map(t=>Object.freeze({...t,...t.clusters?{clusters:Object.freeze(t.clusters.map(r=>Object.freeze({...r})))}:{}})))))}))}function rt(e,n){return n?.value===e?n.prepared:e}function ep(e){return e.lines.map(n=>n.map(t=>t.text).join("")).join("\n")}function np(e,n,t){e=Ro(e);if(e.transform)throw new TypeError("Display tokens must be decoded before text transforms");const r=new RegExp(n.source,n.flags.includes("g")?n.flags:n.flags+"g");const i=e.lines.map(o=>Object.freeze(o.map(s=>{const a=[],c=[];for(const m of s.clusters??[{text:s.text,sourceStart:s.sourceStart,sourceEnd:s.sourceEnd}]){for(let f=0;f<m.text.length;f++){a.push(m.sourceStart);c.push(m.sourceEnd)}}const d=[];const l=(m,f,g,b)=>{let h=f;for(const k of ne(m)){d.push(Object.freeze({text:jt(k),sourceStart:a[b?f:h]??s.sourceStart,sourceEnd:c[b?g-1:h+k.length-1]??s.sourceEnd}));h+=k.length}};let u=0;for(const m of s.text.matchAll(r)){if(m[0].length===0)throw new TypeError("Display token patterns must not match empty text");l(s.text.slice(u,m.index),u,m.index,false);l(t(m[0]),m.index,m.index+m[0].length,true);u=m.index+m[0].length}l(s.text.slice(u),u,s.text.length,false);return Object.freeze({...s,text:d.map(m=>m.text).join(""),clusters:Object.freeze(d)})})));return tt(Object.freeze({...e,lines:Object.freeze(i)}))}function tp(e,n,t="<br>"){if(e.transform)throw new TypeError("Authored text must be written before text transforms");return e.lines.map(r=>r.map(i=>Ot({...i,text:n(i.text)})).join("")).join(t)}function rp(e){const n=[[]];const t=[0];let r="",i="literal";for(const o of e){const s=bn(o,"literal");if(s.transform)throw new TypeError("Display text must be combined before text transforms");if(s.display==="formatted")i="formatted";const a=r.length;for(const[c,d]of s.lines.entries()){if(c>0){n.push([]);t.push(a+s.lineStarts[c])}for(const l of d)n.at(-1).push(Object.freeze({...l,sourceStart:a+l.sourceStart,sourceEnd:a+l.sourceEnd,...l.clusters?{clusters:Object.freeze(l.clusters.map(u=>Object.freeze({...u,sourceStart:a+u.sourceStart,sourceEnd:a+u.sourceEnd})))}:{}}))}r+=s.source}return tt(Object.freeze({source:r,display:i,lines:Object.freeze(n.map(o=>Object.freeze(o))),lineStarts:Object.freeze(t)}))}function Xc(e,n){if(n==="uppercase")return e.toUpperCase();if(n==="lowercase")return e.toLowerCase();if(n==="capitalize")return e.replace(/(?<![\p{L}\p{M}\p{N}\p{Pc}])\p{L}/gu,t=>t.toUpperCase());return e}function bn(e,n="formatted",t){if(typeof e!=="string"){e=Ro(e);if(!t||e.transform===t)return e;if(e.transform)throw new TypeError("A prepared display transform cannot be replaced without its original runs");return wo(e,t)}const r=hn("text-spans")&&e.length<=16384?JSON.stringify([e,n,t]):void 0;if(r!==void 0){const l=Co.get(r);if(l)return l}let i=0;const o=[];const s=Object.freeze([]);const a=e.split("\n").map(l=>{o.push(i);if(l===""){i++;return s}let u;if(n==="literal"){u=[{text:l,bold:false,italic:false,underline:false,strikethrough:false,sourceStart:i,sourceEnd:i+l.length}]}else{const m=new RegExp(_r,"gi");const f=[];let g=0;for(const b of l.matchAll(m)){if(b.index>g)f.push({start:g,end:b.index});g=b.index+b[0].length}if(g<l.length)f.push({start:g,end:l.length});u=$t(l).map((b,h)=>({...b,sourceStart:i+f[h].start,sourceEnd:i+f[h].end}))}u=u.map(m=>{let f=m.sourceStart;const g=ne(m.text).map(b=>{const h=Object.freeze({text:jt(b),sourceStart:f,sourceEnd:f+b.length});f+=b.length;return h});return Object.freeze({...m,text:g.map(b=>b.text).join(""),clusters:Object.freeze(g)})});i+=l.length+1;return Object.freeze(u)});const c=tt(Object.freeze({source:e,display:n,lines:Object.freeze(a),lineStarts:Object.freeze(o)}));const d=t?wo(c,t):c;if(r!==void 0)Co.set(r,d,r.length*2+e.length*96+256);return d}function wo(e,n){const t=e.lines.map(r=>{const i=r.map(d=>d.text).join("");const o=Xc(i,n);const s=n==="capitalize"?new Set([...i.matchAll(/(?<![\p{L}\p{M}\p{N}\p{Pc}])\p{L}/gu)].map(d=>d.index)):void 0;let a=0,c=0;return Object.freeze(r.map(d=>{const l=c;const u=(d.clusters??[{text:d.text,sourceStart:d.sourceStart,sourceEnd:d.sourceEnd}]).map(m=>{const f=n==="uppercase"||s?.has(a)?m.text.toUpperCase().length:n==="lowercase"?m.text.toLowerCase().length:m.text.length;const g=o.slice(c,c+f);a+=m.text.length;c+=f;return Object.freeze({...m,text:g})});return Object.freeze({...d,text:o.slice(l,c),clusters:Object.freeze(u)})}))});return tt(Object.freeze({...e,transform:n,lines:Object.freeze(t)}))}function lp(e,n=true){return qc(Jc(e,n))}function qc(e){return e.replace(/\*\*(.+?)\*\*/g,"<b>$1</b>").replace(/(?<!\*)\*([^\s*](?:[^*]*[^\s*])?)\*(?!\*)/g,"<i>$1</i>").replace(/~~(.+?)~~/g,"<s>$1</s>")}function Jc(e,n=true){const t=e.startsWith('"')&&e.endsWith('"')?e.slice(1,-1):e;const r=Qc(t);return(n?r.replace(/\\n/g,"\n"):r).replace(/<\/?(?:sub|sup|small|mark)\s*>/gi,"")}var Zc=/<br\s*\/?>/gi;function Qc(e){return e.replace(Zc,"\n")}function Dr(e,n="formatted"){return bn(e,n).lines.map(t=>t.map(r=>r.text).join("")).join("\n")}var ed=/[&<>"']/;var nd=/[&<>"'\t\n\r]/;function ae(e){if(typeof e==="string"&&!ed.test(e))return e;return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function j(e){if(typeof e==="string"&&!nd.test(e))return e;return ae(e).replace(/[\t\n\r]/g,n=>n===" "?"	":n==="\n"?" ":" ")}function up(e){return j(zt(e))}function td(e,n="formatted"){if(n==="literal"||!Jn.test(e))return ae(e);return vr(bn(e,n).lines[0])}function $o(e,n=400){const t=[];if(e.bold)t.push(`font-weight="${n>700?n:"bold"}"`);if(e.italic)t.push('font-style="italic"');const r=[];if(e.underline)r.push("underline");if(e.strikethrough)r.push("line-through");if(r.length)t.push(`text-decoration="${r.join(" ")}"`);return t}function vr(e,n=400){if(e.length===0)return"";const t=e.every(r=>!r.bold&&!r.italic&&!r.underline&&!r.strikethrough);if(t)return e.map(r=>ae(r.text)).join("");return e.map(r=>{const i=ae(r.text);if(!r.bold&&!r.italic&&!r.underline&&!r.strikethrough)return i;return`<tspan ${$o(r,n).join(" ")}>${i}</tspan>`}).join("")}function No(e,n,t,r,i){const o=e.lineBlocks[n];if(/[^\x20-\x7e]/u.test(o.runs.map(a=>a.text).join(""))){const a=r==="start"?t+o.width/2:r==="end"?t-o.width/2:t;return`<tspan x="${U(a)}"${i===void 0?"":` y="${U(i)}"`} text-anchor="middle" data-text-fragment="true">${vr(o.runs,e.fontWeight)}</tspan>`}if(e.letterSpacing===0&&!o.fragments)return vr(o.runs,e.fontWeight);if(!o.fragments)throw new TypeError("Tracked text requires retained fragment allocations");const s=(r==="middle"?t-o.width/2:r==="end"?t-o.width:t)+o.originX;return o.fragments.map(a=>{const c=$o(o.runs[a.runIndex],e.fontWeight);const d=/^ | $/.test(a.text)?' xml:space="preserve"':"";return`<tspan x="${U(s+a.x)}" text-anchor="start" letter-spacing="0" data-text-fragment="true" textLength="${U(Math.max(0,a.width))}" lengthAdjust="spacingAndGlyphs"${d}${c.length?` ${c.join(" ")}`:""}>${ae(a.text)}</tspan>`}).join("")}function jr(e,n,t,r,i,o=.35,s=false){const a=typeof e==="string"?void 0:e;const c=a?a.text:e;const d=a?a.lines:c.split("\n");const l=a?.prepared.display??(s?"literal":"formatted");const u=i.match(/\btext-anchor="([^"]*)"/)?.[1]??"start";const m=a&&/[^\x20-\x7e]/u.test(a.lineBlocks.map(y=>y.runs.map(E=>E.text).join("")).join(""));const f=a&&(a.letterSpacing!==0||m);const g=(y,E)=>a?No(a,E,n,u):td(y,l);if(l==="literal"&&Jn.test(c)&&!i.includes("data-literal-text="))i+=' data-literal-text="true"';const b=a?a.lineBlocks.map(y=>y.runs.map(E=>E.text).join("")).join("\n"):Dr(c,l);if(/(?:^ | $| {2}|\t)/m.test(b)&&!i.includes("xml:space="))i+=' xml:space="preserve"';if(a)i+=' data-prepared-text="true"';const h=y=>a&&!f&&!a.lineBlocks[y].fragments?` textLength="${U(a.lineBlocks[y].width)}" lengthAdjust="spacingAndGlyphs" data-font-metrics="deterministic-fit"`:"";if(d.length===1){const y=r*o;if(m)return`<text x="${U(n)}" y="${U(t)}" ${i}>${No(a,0,n,u,t+y)}</text>`;return`<text x="${U(n)}" y="${U(t)}" ${i} dy="${U(y)}"${h(0)}>${g(c,0)}</text>`}const k=a?.lineHeight??r*Ne;const x=-((d.length-1)/2)*k+r*o;const S=d.map((y,E)=>{const R=E===0?x:k;const w=m?`y="${U(t+x+E*k)}"`:`dy="${U(R)}"`;return`<tspan x="${U(n)}" ${w}${h(E)}>${g(y,E)}</tspan>`}).join("");return`<text x="${U(n)}" y="${U(t)}" ${i}>${S}</text>`}var zr=Object.assign(Object.create(null),{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"});var rd=/^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/;function We(e){const n=e.replace("#","");const t=n.length===3||n.length===4?n[0]+n[0]+n[1]+n[1]+n[2]+n[2]:n;return[parseInt(t.slice(0,2),16),parseInt(t.slice(2,4),16),parseInt(t.slice(4,6),16)]}function id(e){if(!ge(e))return null;return We(e)}function Se(e,n,t){return"#"+[e,n,t].map(r=>Math.round(Math.max(0,Math.min(255,r))).toString(16).padStart(2,"0")).join("")}function fe(e,n,t){return Se(...Mo(We(e),We(n),t))}function Mo(e,n,t,r=[0,0,0]){const i=t/100;for(let o=0;o<3;o++)r[o]=Math.round(Math.max(0,Math.min(255,e[o]*i+n[o]*(1-i))));return r}function Br(e){return e<=.04045?e/12.92:((e+.055)/1.055)**2.4}function Fr(e){return .2126*Br(e[0]/255)+.7152*Br(e[1]/255)+.0722*Br(e[2]/255)}function Wr(e,n){return(Math.max(e,n)+.05)/(Math.min(e,n)+.05)}function Lr(e){const n=ie(e);return n?Fr(n):null}function Fe(e,n){const t=Lr(e);const r=Lr(n);if(t===null||r===null)return null;return Wr(t,r)}function xn(e,n,t,r){const i=Fe(e,n);if(i===null||i>=t)return e;const o=Fe("#000000",n)??0;const s=Fe("#ffffff",n)??0;const a=r?Fe(r,n)??0:0;const c=a>=t?r:o>=s?"#000000":"#ffffff";if((Fe(c,n)??0)<t)return e;const d=Lr(n);const l=We(c);const u=We(e);const m=[0,0,0];for(let f=1;f<=1e3;f++){Mo(l,u,f/10,m);if(Wr(Fr(m),d)>=t)return Se(...m)}return c}var Lt=4.5;var gp=3;var it=3;function yp(e,n,t=Lt){return xn(e,n,t)}function ge(e){return rd.test(e)}function hp(e){return/^#[0-9a-fA-F]{6}$/.test(e)}function Io(e,n,t){return(e*299+n*587+t*114)/1e3}function ie(e){const n=e.trim().toLowerCase();const t=Object.hasOwn(zr,n)?zr[n]:void 0;if(t){const s=We(t);return[s[0],s[1],s[2],1]}if(n==="transparent")return[0,0,0,0];const r=ge(n)?n.slice(1):void 0;if(r){const s=r.length<=4?[...r].map(a=>a+a).join(""):r;return[Number.parseInt(s.slice(0,2),16),Number.parseInt(s.slice(2,4),16),Number.parseInt(s.slice(4,6),16),s.length===8?Number.parseInt(s.slice(6,8),16)/255:1]}const i=n.match(/^rgba?\((.*)\)$/);if(i){const s=i[1].trim();const a=s.split("/").map(f=>f.trim());if(a.length>2||a.length===2&&s.includes(","))return null;const c=(s.includes(",")?s.split(","):a[0].split(/\s+/)).map(f=>f.trim());let d=a[1];if(s.includes(",")&&c.length===4&&d===void 0)d=c.pop();if(c.length!==3)return null;if(s.includes(",")&&c.some(f=>f.endsWith("%"))&&!c.every(f=>f.endsWith("%")))return null;const l=f=>{const g=f.endsWith("%");const b=Bt(f,g);if(b===null)return null;const h=g?b*2.55:b;return Math.max(0,Math.min(255,h))};const u=c.map(l);if(u.some(f=>f===null))return null;const m=Oo(d);if(m===null)return null;return[u[0],u[1],u[2],m]}const o=n.match(/^hsla?\((.*)\)$/);if(o){const s=o[1].trim();const a=s.split("/").map(I=>I.trim());if(a.length>2||a.length===2&&s.includes(","))return null;const c=(s.includes(",")?s.split(","):a[0].split(/\s+/)).map(I=>I.trim());let d=a[1];if(s.includes(",")&&c.length===4&&d===void 0)d=c.pop();if(c.length!==3||s.includes(",")&&(!c[1].endsWith("%")||!c[2].endsWith("%")))return null;const l=od(c[0]);const u=Bt(c[1],c[1].endsWith("%"));const m=Bt(c[2],c[2].endsWith("%"));const f=Oo(d);if(l===null||u===null||m===null||f===null)return null;const g=Math.max(0,u)/100;const b=m/100;const h=(1-Math.abs(2*b-1))*g;const k=(l%360+360)%360/60;const x=h*(1-Math.abs(k%2-1));const[S,y,E]=k<1?[h,x,0]:k<2?[x,h,0]:k<3?[0,h,x]:k<4?[0,x,h]:k<5?[x,0,h]:[h,0,x];const R=b-h/2;const w=[(S+R)*255,(y+R)*255,(E+R)*255];if(w.some(I=>!Number.isFinite(I)))return null;return[Math.max(0,Math.min(255,w[0])),Math.max(0,Math.min(255,w[1])),Math.max(0,Math.min(255,w[2])),f]}return null}function od(e){const n=e.trim().match(/^([+-]?(?:\d+(?:\.\d+)?|\.\d+)(?:e[+-]?\d+)?)(deg|grad|rad|turn)?$/i);if(!n)return null;const t=Number(n[1]);if(!Number.isFinite(t))return null;let r=t;switch(n[2]?.toLowerCase()){case"grad":r*=.9;break;case"rad":r*=180/Math.PI;break;case"turn":r*=360;break}return Number.isFinite(r)?r:null}function Oo(e){if(e===void 0)return 1;const n=e.endsWith("%");const t=Bt(e,n);if(t===null)return null;const r=n?t/100:t;return Math.max(0,Math.min(1,r))}function Bt(e,n){const t=n?/^[+-]?(?:\d+(?:\.\d+)?|\.\d+)(?:e[+-]?\d+)?%$/i:/^[+-]?(?:\d+(?:\.\d+)?|\.\d+)(?:e[+-]?\d+)?$/i;if(!t.test(e))return null;const r=Number(n?e.slice(0,-1):e);return Number.isFinite(r)?r:null}function _o(e,n){const t=ie(e);if(!t)return null;if(t[3]===1)return[t[0],t[1],t[2]];const r=ie(n);if(!r)return null;const i=r[3];const o=t[3]+i*(1-t[3]);if(o<=0)return null;return[0,1,2].map(s=>Math.min(255,Math.max(0,(t[s]*t[3]+r[s]*i*(1-t[3]))/o)))}function Ao(e){const n=id(e);return n?Fr(n):null}function sd(e,n){const t=Ao(e);const r=Ao(n);if(t===null||r===null)return null;return Wr(t,r)}function bp(e,n,t="#ffffff"){const r=_o(n,t);if(!r)return null;const i=Se(...r);const o=_o(e,i);if(!o)return null;return sd(Se(...o),i)}var ad=/^[a-z0-9_,'(). \t-]+$/i;function cd(e){if(!e.includes('"')&&!e.includes("'"))return e;let n="";for(let t=0;t<e.length;t++){const r=e[t];if(r!=='"'&&r!=="'"){n+=r;continue}const i=e.indexOf(r,t+1);if(i<0)return void 0;const o=e.slice(t+1,i);if(o.includes('"')||o.includes("'"))return void 0;n+=`'${o}'`;t=i}return n}function Sn(e){if(typeof e!=="string")return void 0;const n=cd(e.trim());if(n===void 0||n.length===0||n.length>256||!ad.test(n))return void 0;let t=0;for(const r of n){if(r==="(")t++;else if(r===")"){t--;if(t<0)return void 0}}if(t!==0)return void 0;for(const r of n.matchAll(/([a-z][a-z0-9-]*)\s*\(/gi)){if(r[1].toLowerCase()!=="var")return void 0}if(/\b(?:url|expression|import)\b/i.test(n))return void 0;return n}function Vr(e){const n=Sn(e);if(n===void 0)throw new Error("font family must be a safe non-fetching CSS family or var() fallback");return n}var dd=/^(?:#[0-9a-f]{3,4}|#[0-9a-f]{6}|#[0-9a-f]{8}|[a-z][a-z0-9-]*)$/i;var vo=/^var\(--[a-z_][a-z0-9_-]*\)$/i;var ld=/^[a-z0-9_#(),.%+\-\s/]*$/i;var Po=new Set(["color","color-mix","device-cmyk","hsl","hsla","hwb","lab","lch","oklab","oklch","rgb","rgba"]);function Ep(e){const n=[];let t=0;let r=0;for(let i=0;i<e.length;i++){const o=e[i];if(o==="(")t++;else if(o===")")t--;else if(o===","&&t===0){n.push(e.slice(r,i));r=i+1}if(t<0)return[e]}if(t!==0)return[e];n.push(e.slice(r));return n}function Do(e){return jo(e,false)}function jo(e,n){if(typeof e!=="string")return void 0;const t=e.trim();if(t.length===0||t.length>256)return void 0;if(dd.test(t))return t;if(!ld.test(t))return void 0;const r=t.indexOf("(");if(r<=0||!t.endsWith(")"))return void 0;let i=0;for(const s of t){if(s==="(")i++;else if(s===")"){i--;if(i<0)return void 0}}if(i!==0)return void 0;for(const s of t.matchAll(/([a-z][a-z0-9-]*)\s*\(/gi)){const a=s[1].toLowerCase();if(!(n&&a==="var")&&!Po.has(a))return void 0}const o=t.slice(0,r).trim().toLowerCase();return n&&o==="var"||Po.has(o)?t:void 0}function Cp(e,n=false){const t=ce(e);if(t===void 0)return void 0;const r=t.toLowerCase();if(r==="currentcolor"||n&&r==="none")return t;if(vo.test(t))return t;return ie(t)!==null?t:void 0}function wp(e){return`a color name, #RGB, #RGBA, #RRGGBB, #RRGGBBAA, rgb(), rgba(), hsl(), hsla(), transparent, currentColor${e?", none":""}, or var(--name)`}function ce(e){if(typeof e==="string"&&e.length<=256&&vo.test(e))return e;return jo(e,true)}function zo(e,n){const t=ce(e);if(t===void 0)throw new Error(`${n} must be a safe non-fetching CSS color or var() reference`);return t}var vp={bg:"#FFFFFF",fg:"#27272A"};var K={text:100,textSec:78,textMuted:66,textFaint:54,line:50,arrow:85,nodeFill:3,nodeStroke:20,groupHeader:5,innerStroke:12,keyBadge:10};function Dp(e){const n=e.colors??{};const t=e.type==="dark";const r=i=>e.tokenColors?.find(o=>Array.isArray(o.scope)?o.scope.includes(i):o.scope===i)?.settings?.foreground;return{bg:n["editor.background"]??(t?"#1e1e1e":"#ffffff"),fg:n["editor.foreground"]??(t?"#d4d4d4":"#333333"),line:n["editorLineNumber.foreground"]??void 0,accent:n["focusBorder"]??r("keyword")??void 0,muted:r("comment")??n["editorLineNumber.foreground"]??void 0,surface:n["editor.selectionBackground"]??void 0,border:n["editorWidget.border"]??void 0}}function jp(e){if(!e.shadow)return"";const n=fd(e.bg);const t=n?"#ffffff":"#000000";const r=n?"0.12":"0.08";return` <filter id="bm-shadow" x="-12%" y="-10%" width="128%" height="136%">
|
|
2
|
-
<feDropShadow dx="0" dy="1.5" stdDeviation="2.5" flood-color="${t}" flood-opacity="${r}" />
|
|
3
|
-
</filter>`}function fd(e){const n=e.replace("#","");if(n.length<6)return false;const[t,r,i]=We(e);return Io(t,r,i)/255<.4}function Bo(e){return/^[A-Za-z0-9][A-Za-z0-9 _-]*$/.test(e)}var pd="'Inter'";function md(e){if(!e.includes("var("))return e;const n=/^var\(\s*--[\w-]+\s*,\s*([^()]+)\)$/.exec(e)?.[1]?.trim();return n||pd}function zp(e){return Pt(e,gd)}function gd(e){const n="var(--font,";let t="";let r=0;while(true){const i=e.indexOf(n,r);if(i===-1)return t+e.slice(r);t+=e.slice(r,i);let o=1;let s=i+n.length;while(s<e.length&&o>0){if(e[s]==="(")o++;else if(e[s]===")")o--;s++}t+=md(e.slice(i+n.length,s-1).trim());r=s}}function Wo(e,n,t,r=false){e=Vr(e);const i=r?[...Bo(e)?[`@import url('https://fonts.googleapis.com/css2?family=${encodeURIComponent(e)}:wght@400;500;600;700&display=swap');`]:[],...n?[`@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&display=swap');`]:[]]:[];const o=`
|
|
4
|
-
/* Derived from --bg and --fg (overridable via --line, --accent, etc.) */
|
|
5
|
-
--_text: var(--fg);
|
|
6
|
-
--_text-sec: var(--muted, color-mix(in srgb, var(--fg) ${K.textSec}%, var(--bg)));
|
|
7
|
-
--_text-muted: var(--muted, color-mix(in srgb, var(--fg) ${K.textMuted}%, var(--bg)));
|
|
8
|
-
--_text-faint: color-mix(in srgb, var(--fg) ${K.textFaint}%, var(--bg));
|
|
9
|
-
--_line: var(--line, color-mix(in srgb, var(--fg) ${K.line}%, var(--bg)));
|
|
10
|
-
--_arrow: var(--accent, color-mix(in srgb, var(--fg) ${K.arrow}%, var(--bg)));
|
|
11
|
-
--_node-fill: var(--surface, color-mix(in srgb, var(--fg) ${K.nodeFill}%, var(--bg)));
|
|
12
|
-
--_node-stroke: var(--border, color-mix(in srgb, var(--fg) ${K.nodeStroke}%, var(--bg)));
|
|
13
|
-
--_group-fill: var(--bg);
|
|
14
|
-
--_group-hdr: color-mix(in srgb, var(--fg) ${K.groupHeader}%, var(--bg));
|
|
15
|
-
--_inner-stroke: color-mix(in srgb, var(--fg) ${K.innerStroke}%, var(--bg));
|
|
16
|
-
--_key-badge: color-mix(in srgb, var(--fg) ${K.keyBadge}%, var(--bg));`;const s=t?'\n .node, .class-node, .entity, .actor[data-type="participant"], .note, .block, .timeline-event, .journey-task, .sankey-node { filter: url(#bm-shadow); }':"";const a=Bo(e)?`'${e}'`:e;const c=` svg { font-family: var(--font, ${a}), system-ui, sans-serif; }`;const d=i.length>0?[` ${i.join("\n ")}`,c]:[c];return["<style>",...d,...n?[` .mono { font-family: 'JetBrains Mono', 'SF Mono', 'Fira Code', ui-monospace, monospace; }`]:[],` svg {${o}`,` }${s}`,"</style>"].join("\n")}function Vo(e,n,t,r,i){const o=t.font===void 0?void 0:Vr(t.font);for(const f of["bg","fg","line","accent","muted","surface","border"]){const g=t[f];if(g!==void 0)zo(g,f)}const s=[`--bg:${t.bg}`,`--fg:${t.fg}`,t.line?`--line:${t.line}`:"",t.accent?`--accent:${t.accent}`:"",t.muted?`--muted:${t.muted}`:"",t.surface?`--surface:${t.surface}`:"",t.border?`--border:${t.border}`:"",o?`--font:${o}`:""].filter(Boolean).join(";");const a=r?"":";background:var(--bg)";const c=bd(i)?i:void 0;const d=c?.attrs??i??{};const l=`${s}${a}${c?.style?`;${c.style}`:""}`;const u=Object.entries(d).filter(([,f])=>f!==void 0).map(([f,g])=>`${f}="${g}"`).join(" ");const m=u?` ${u}`:"";return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${U(e)} ${U(n)}" width="${nt("width",String(c?.width??e))}" height="${nt("height",String(c?.height??n))}" style="${l}"${m}>`}var Lo=new Le(64,256*1024);function Uo(e){const n=[e.bg,e.fg,e.line,e.accent,e.muted,e.surface,e.border].join("\n");const t=Lo.get(n);if(t)return t;const r=Object.freeze(yd(Go(e)??e));const i=n.length*2+So(r,256*1024);Lo.set(n,r,i);return r}function Go(e){if(ge(e.bg)&&ge(e.fg))return e;const n=ie(e.bg),t=ie(e.fg);if(!n||!t||n[3]!==1||t[3]!==1)return void 0;return{...e,bg:Se(n[0],n[1],n[2]),fg:Se(t[0],t[1],t[2])}}function yd(e){const{bg:n,fg:t}=e;const r=e.surface??fe(t,n,K.nodeFill);const i=fe(t,n,K.groupHeader);const o=fe(t,n,K.keyBadge);const s=Fo(e,[n,r,i,o]);const{text:a,textSec:c,textMuted:d,textFaint:l}=s.legible?s:Fo(e,[n,i,o]);return{bg:n,fg:t,text:a,textSec:c,textMuted:d,textFaint:l,line:xn(e.line??fe(t,n,K.line),n,3,a),arrow:xn(e.accent??fe(t,n,K.arrow),n,3,a),nodeFill:r,nodeStroke:hd(e.border??fe(t,n,K.nodeStroke),n,a),groupFill:n,groupHdr:i,innerStroke:fe(t,n,K.innerStroke),keyBadge:o}}function hd(e,n,t){const r=ie(e),i=ie(n);if(!r||!i||r[3]!==1||i[3]!==1)return e;const o=Se(r[0],r[1],r[2]),s=Se(i[0],i[1],i[2]);if((Fe(o,s)??Infinity)>=it)return e;const a=ie(t);return xn(o,s,it,a?.[3]===1?Se(a[0],a[1],a[2]):void 0)}function Fo(e,n){const{bg:t,fg:r}=e;const i=Ft(r,n);const o=Ft(e.muted??fe(r,t,K.textSec),n,i);const s=Ft(e.muted??fe(r,t,K.textMuted),n,i);const a=Ft(fe(r,t,K.textFaint),n,i,it);const c=(l,u)=>n.every(m=>(Fe(l,m)??Infinity)>=u);const d=[i,o,s].every(l=>c(l,Lt))&&c(a,it);return{text:i,textSec:o,textMuted:s,textFaint:a,legible:d}}function Ft(e,n,t,r=Lt){let i=e;for(let o=0;o<2;o++){for(const s of n)i=xn(i,s,r,t)}return i}function Yo(e){if(!Go(e))return void 0;const n=Uo(e);const t=new Map;t.set("bg",n.bg);t.set("fg",n.fg);if(e.line&&ge(e.line))t.set("line",e.line);if(e.accent&&ge(e.accent))t.set("accent",e.accent);if(e.muted&&ge(e.muted))t.set("muted",e.muted);if(e.surface&&ge(e.surface))t.set("surface",e.surface);if(e.border&&ge(e.border))t.set("border",e.border);t.set("_text",n.text);t.set("_text-sec",n.textSec);t.set("_text-muted",n.textMuted);t.set("_text-faint",n.textFaint);t.set("_line",n.line);t.set("_arrow",n.arrow);t.set("_node-fill",n.nodeFill);t.set("_node-stroke",n.nodeStroke);t.set("_group-fill",n.groupFill);t.set("_group-hdr",n.groupHdr);t.set("_inner-stroke",n.innerStroke);t.set("_key-badge",n.keyBadge);return t}function Bp(e,n){if(ge(e))return e;const t=e.match(/^var\(\s*--([\w-]+)\s*(?:,\s*(#[0-9a-fA-F]{3,8})\s*)?\)$/);if(!t)return void 0;return Yo(n)?.get(t[1])??t[2]}function Ho(e){const n=new Map;for(const t of e.styleContexts){const r=e.source.slice(t.start,t.end);for(const i of r.matchAll(/--([\w-]+)\s*:\s*([^;{}]+)/g)){const o=i[2].trim();if(o==="none"||o.toLowerCase()==="currentcolor"||ie(o)||o.startsWith("var(")&&ce(o))n.set(i[1],o)}}return n}function Lp(e,n){const t=Wt(n,e);return t?Ko(e,t):e}function Fp(e,n){const t=j(e);const r=Wt(n);return Ur(t,r)}function Wp(){let e;let n;return(t,r)=>{const i=j(t);if(r!==e){const o=Object.isFrozen(r)?Object.getOwnPropertyDescriptors(r):void 0;const s=o&&Reflect.ownKeys(o).every(a=>"value"in o[a])&&["bg","fg","line","accent","muted","surface","border","font"].every(a=>{const c=o[a];return Object.hasOwn(o,a)&&(c.value===void 0||typeof c.value==="string")});if(!s)return Ur(i,Wt(r));n=Wt(r);e=r}return Ur(i,n)}}function Ur(e,n){const t=n?n.resolveCss(e,n.vars,10):e;if(n&&/[<"]/.test(t)){const r=Ko(`<rect fill="${e}"/>`,n);return bo(Be(r)[0],"fill")}return ud(t)}function Wt(e,n){const t=Yo(e);if(!t)return void 0;const r=Uo(e);const i=n===void 0?void 0:qe(n);const o=i?Ho(i):new Map;for(const[c,d]of t)if(c.startsWith("_")||d!==void 0&&!o.has(c))o.set(c,d);o.set("bg",r.bg);o.set("fg",r.fg);const s=new Set(["font"]);for(const c of[e.font,e.line,e.accent,e.muted,e.surface,e.border]){if(!c)continue;for(const d of c.matchAll(/var\(\s*--([\w-]+)/g)){if(!o.has(d[1]))s.add(d[1])}}const a=(c,d,l)=>{let u=c;for(let m=0;m<l;m++){const f=u;u=u.replace(/var\(--([\w-]+)\)/g,(g,b)=>{if(s.has(b))return g;return d.get(b)??g});u=u.replace(/var\(--([\w-]+),\s*([^()]+)\)/g,(g,b,h)=>{if(s.has(b))return g;return d.get(b)??h.trim()});u=u.replace(/color-mix\(in srgb,\s*(#[0-9a-fA-F]{3,8})\s+(\d+(?:\.\d+)?)%,\s*(#[0-9a-fA-F]{3,8}|transparent)\)/g,(g,b,h,k)=>{const x=k==="transparent"?r.bg:k;return fe(b,x,parseFloat(h))});if(u===f)break}return u};return{vars:o,SKIP_VARS:s,resolveCss:a,projection:i}}function Ko(e,n){const{vars:t,SKIP_VARS:r,resolveCss:i}=n;const o=n.projection??qe(e);const s=new Map;let a=Pt(e,u=>{const m=s.get(u);if(m!==void 0)return m;const f=i(u,t,10);s.set(u,f);return f},o);let c=a.includes("color-mix(");if(!c){for(const u of a.matchAll(/var\((?=\s*--([\w-]+))/g)){if(!r.has(u[1])){c=true;break}}}if(!c)return a;let d=qe(a);const l=Ho(d);if(l.size>0){for(let u=0;u<5;u++){const m=Pt(a,f=>i(f,l,1),d);if(m===a)break;a=m;d=qe(a)}}return a}function bd(e){return Boolean(e&&("width"in e||"height"in e||"style"in e||"attrs"in e))}var Ve="0.5.1";var Vt=2;var Xo=`${Vt}.0.0`;function Xp(e,n){if(e===void 0||n===void 0)return false;if(e.id!==n.id||e.kind!==n.kind||e.version!==n.version)return false;const t=new Set([...Object.keys(e.compatibility),...Object.keys(n.compatibility)]);for(const r of t){if(e.compatibility[r]!==n.compatibility[r])return false}return e.provenance.owner===n.provenance.owner&&e.provenance.source===n.provenance.source&&e.provenance.reference===n.provenance.reference}var xd=Object.freeze({core:Ve,scene:Xo});function Yr(e,n){if(!e.compatibility[n]){throw new Error(`Extension "${e.id}" must declare an explicit compatible "${n}" range`)}}function Sd(e){const n=[];for(const[t,r]of Object.entries(e.compatibility)){if(r===void 0)continue;const i=xd[t];if(!Rr(r)){n.push(Object.freeze({contract:t,range:r,status:"invalid",diagnostic:`Compatibility requirement "${t}" has invalid semantic-version range "${r}".`}));continue}if(i!==void 0){const o=Nr(i,r);n.push(Object.freeze({contract:t,range:r,status:o?"compatible":"incompatible",version:i,...!o?{diagnostic:`Compatibility requirement "${t}" range "${r}" does not include host version ${i}.`}:{}}));continue}if(!Nt(t)){n.push(Object.freeze({contract:t,range:r,status:"invalid",diagnostic:`Unknown compatibility requirement "${t}" must use a namespace.`}));continue}n.push(Object.freeze({contract:t,range:r,status:"deferred"}))}return Object.freeze({accepted:n.every(t=>t.status==="compatible"||t.status==="deferred"),resolutions:Object.freeze(n)})}var qo=/^[a-z][a-z0-9-]*$/;var Jo=/^[a-z0-9][a-z0-9._/-]*$/;var Zo=new WeakSet;var Ut=new WeakMap;function kd(e,n){const t=Ut.get(e);if(t){t.reentrantAttempted=true;throw new Error(`Extension registry mutation is forbidden while ${t.operation} is in progress`)}const r={operation:n,reentrantAttempted:false};Ut.set(e,r);return r}function Ed(e){if(e.reentrantAttempted){throw new Error(`Extension registry mutation is forbidden after a reentrant attempt during ${e.operation}`)}}function Cd(e,n){if(Ut.get(e)===n)Ut.delete(e)}function ot(e,n){if(!qo.test(e))throw new Error(`Invalid extension kind "${e}"`);if(!Jo.test(n)){throw new Error(`Invalid ${e} extension local id "${n}"`)}return`${e}:${n}`}function Je(e){const n=e.indexOf(":");if(n<=0||n===e.length-1||e.indexOf(":",n+1)!==-1)return void 0;const t=e.slice(0,n);const r=e.slice(n+1);if(!qo.test(t)||!Jo.test(r))return void 0;return{kind:t,localId:r}}function kn(e){const n=e.id;const t=e.kind;const r=e.version;const i=e.compatibility;const o=e.provenance;const s=Object.freeze({...i??{}});const a=Object.freeze({...o});const c=Je(n);if(!c||c.kind!==t){throw new Error(`Extension id "${n}" must use the "${t}:" namespace`)}if(!De(r)){throw new Error(`Extension "${n}" requires a semantic version (received "${r}")`)}if(a.owner.trim().length===0)throw new Error(`Extension "${n}" requires a provenance owner`);if(a.source.trim().length===0)throw new Error(`Extension "${n}" requires a provenance source`);const d=Object.freeze({id:n,kind:t,version:r,compatibility:s,provenance:a});const l=Sd(d);if(!l.accepted){throw new Error(`Extension "${n}" has incompatible requirements: ${l.resolutions.filter(u=>u.status==="incompatible"||u.status==="invalid").map(u=>u.diagnostic).join("; ")}`)}Zo.add(d);return d}var Gr=class extends Error{constructor(t,r){super(`Cannot register ${t.kind} "${t.id}" for owner "${t.provenance.owner}": already registered by "${r.provenance.owner}" at version ${r.version}`);this.incoming=t;this.existing=r;this.name="ExtensionCollisionError"}incoming;existing;code="EXTENSION_ID_COLLISION"};function st(e,n){const t=kd(e,"extension registration");try{const r=Object.freeze({identity:n.identity,value:n.value});if(!Zo.has(r.identity)){throw new TypeError("Extension registration identity must be created by createExtensionIdentity()")}const i=r.identity.id;const o=e.get(i);if(o)throw new Gr(r.identity,o.identity);Ed(t);e.set(i,r)}finally{Cd(e,t)}}var ke=Object.freeze({fontFamily:{kind:"font",description:"Safe font family/stack for roles whose descriptor exposes family-specific typography."},fontSize:{kind:"number",minimum:1,maximum:256,expected:"between 1 and 256",description:"Font size in SVG user units."},fontWeight:{kind:"number",minimum:1,maximum:1e3,expected:"between 1 and 1000",description:"CSS numeric font weight."},letterSpacing:{kind:"number",minimum:-2,maximum:4,expected:"between -2 and 4",description:"Letter spacing in SVG user units."},textTransform:{kind:"enum",values:["uppercase","lowercase","capitalize"],description:"Text transformation."},textColor:{kind:"color",description:"Text paint."},paddingX:{kind:"number",minimum:0,maximum:256,expected:"between 0 and 256",description:"Horizontal role padding."},paddingY:{kind:"number",minimum:0,maximum:256,expected:"between 0 and 256",description:"Vertical role padding."},cornerRadius:{kind:"number",minimum:0,maximum:256,expected:"between 0 and 256",description:"Applicable corner radius."},lineWidth:{kind:"number",exclusiveMinimum:0,maximum:20,expected:"greater than 0 and at most 20",description:"Border or connector width."},bendRadius:{kind:"number",minimum:0,maximum:256,expected:"between 0 and 256",description:"Applicable connector bend radius."},fillColor:{kind:"color",description:"Surface fill paint."},borderColor:{kind:"color",description:"Border paint."},strokeColor:{kind:"color",description:"Connector stroke paint."},headerFillColor:{kind:"color",description:"Group header surface paint."},cue:{kind:"enum",values:["none","outline","double-line","pattern"],description:"Non-color semantic cue on roles whose family renderer exposes a cue projection."}});var Hr=Object.freeze(["fontSize","fontWeight","letterSpacing","textTransform","textColor","paddingX","paddingY","cornerRadius","lineWidth","fillColor","borderColor"]);var Qo=Object.freeze(["fontSize","fontWeight","letterSpacing","textTransform","textColor","lineWidth","bendRadius","strokeColor"]);var wd=Object.freeze([...Hr,"fontFamily","headerFillColor"]);var Td=Object.freeze(["fontSize","fontWeight","letterSpacing","textTransform","textColor"]);var Rd=Object.freeze(["fontFamily","fontSize","fontWeight","letterSpacing","textTransform","textColor","fillColor","borderColor","strokeColor","lineWidth","cue"]);var Nd=Object.freeze(["fillColor","borderColor","strokeColor","lineWidth","cue"]);var $d=Object.freeze(["fillColor","borderColor","strokeColor","lineWidth","textColor"]);var Kr=Object.freeze(["fillColor","borderColor","strokeColor","lineWidth"]);var Od=Object.freeze(["borderColor","strokeColor","lineWidth"]);var es=Object.freeze([...Kr,"cue"]);function oe(e,n){return Object.freeze({properties:e,...n?{bindingFamilies:Object.freeze([...n])}:{}})}var Ze=Object.freeze({node:oe(Hr),edge:oe(Qo),group:oe(wd),"group-header":oe(Rd,["journey"]),label:oe(Td),actor:oe(Hr,["sequence"]),relationship:oe(Qo,["er"]),"pie-slice":oe(Nd,["pie","radar"]),legend:oe($d,["radar"]),bar:oe(Kr,["xychart","sankey","treemap"]),series:oe(Od,["xychart"]),point:oe(Kr,["radar","xychart"]),task:oe(es,["gantt"]),milestone:oe(es,["gantt"])});var at=Object.freeze(Object.keys(Ze));var Ue=Object.freeze(at.filter(e=>"bindingFamilies"in Ze[e]));var Gt=Object.freeze([...new Set(Ue.flatMap(e=>Ze[e].properties))]);var pe=["shape","connector","text","group","document"];var En=["shape"];var Xr=["connector"];var ns=["text"];var _d=["shape","text"];var ye=["shape","group"];var Ad=["shape","text","group"];var ts=["connector","group"];var Md=["document"];var rs=["text","group"];var Id=["document"];function A(e,n,t,r={}){const i=Ze[e];return Object.freeze({applicableKinds:n,styleFallback:t,styleConsumption:i?"exact":"fallback-only",styleExtras:Object.freeze([]),...i?{styleProperties:i.properties}:{},styleBindingFamilies:Object.freeze([...i?.bindingFamilies??[]]),domIdentity:false,relation:false,sketch:"none",textHalo:false,...r})}var Cn=Object.freeze({node:A("node",ye,"node",{domIdentity:true,sketch:"shape"}),edge:A("edge",Xr,"edge",{domIdentity:true,relation:true,sketch:"connector"}),"edge-label":A("edge-label",rs,"label"),group:A("group",ye,"group",{domIdentity:true,sketch:"shape"}),"group-header":A("group-header",pe,"group",{sketch:"shape",textHalo:true}),label:A("label",ns,"label",{textHalo:true}),actor:A("actor",ye,"node",{domIdentity:true,sketch:"shape"}),lifeline:A("lifeline",ts,"edge",{sketch:"connector"}),activation:A("activation",ye,"node",{domIdentity:true,sketch:"shape"}),message:A("message",ts,"edge",{domIdentity:true,relation:true,sketch:"connector"}),block:A("block",pe,"group",{domIdentity:true,sketch:"shape"}),note:A("note",ye,"group",{domIdentity:true,sketch:"shape"}),"class-box":A("class-box",ye,"node",{domIdentity:true,sketch:"shape"}),member:A("member",ns,"label",{domIdentity:true,textHalo:true}),entity:A("entity",ye,"node",{domIdentity:true,sketch:"shape"}),attribute:A("attribute",rs,"label",{domIdentity:true,textHalo:true}),relationship:A("relationship",Xr,"edge",{domIdentity:true,relation:true,sketch:"connector"}),cardinality:A("cardinality",_d,"label",{domIdentity:true,textHalo:true}),"pie-slice":A("pie-slice",En,"node",{domIdentity:true,sketch:"shape"}),legend:A("legend",Ad,"group",{textHalo:true}),bar:A("bar",En,"node",{domIdentity:true,sketch:"shape"}),series:A("series",Xr,"edge",{domIdentity:true,sketch:"connector"}),point:A("point",En,"node",{domIdentity:true}),axis:A("axis",pe,"label",{textHalo:true}),grid:A("grid",pe,"edge"),plate:A("plate",En,"node",{domIdentity:true,sketch:"shape"}),section:A("section",pe,"group",{domIdentity:true,sketch:"shape",textHalo:true}),task:A("task",pe,"node",{domIdentity:true,sketch:"shape"}),milestone:A("milestone",En,"node",{domIdentity:true,sketch:"shape"}),"marker-line":A("marker-line",pe,"edge"),rail:A("rail",pe,"edge",{sketch:"connector"}),period:A("period",ye,"group",{domIdentity:true,sketch:"shape"}),event:A("event",ye,"group",{domIdentity:true,sketch:"shape"}),score:A("score",pe,"node"),"actor-pill":A("actor-pill",En,"node",{sketch:"shape"}),service:A("service",ye,"node",{domIdentity:true,sketch:"shape"}),junction:A("junction",ye,"node",{domIdentity:true}),icon:A("icon",["shape","text","group","document"],"node",{textHalo:true}),title:A("title",pe,"label",{domIdentity:true,textHalo:true}),defs:A("defs",Md,"label"),prelude:A("prelude",Id,"label"),chrome:A("chrome",pe,"label")});var Pd=Object.freeze({applicableKinds:pe,styleFallback:"label",styleConsumption:"fallback-only",styleExtras:Object.freeze([]),styleBindingFamilies:Object.freeze([]),domIdentity:true,relation:false,sketch:"none",textHalo:false});var Qe=Object.freeze(Object.entries(Cn).map(([e,n])=>Object.freeze({identity:kn({id:`role:${e}`,kind:"role",version:"1.0.0",compatibility:{core:Ve,scene:"^2.0.0"},provenance:{owner:"agentic-mermaid",source:"built-in",reference:"src/scene/roles.ts"}}),role:e,traits:n,style:(()=>{const t=n.styleFallback;return Object.freeze({fallbackRole:t,applicableProperties:n.styleProperties??Object.freeze([])})})()})));function vd(e){const n=Cn[e];if(n)return{traits:n,source:"builtin"};return{traits:Pd,source:"namespaced-safe"}}function wn(e){return vd(e).traits}function Dd(e){return e}function jd(e,n){const t=n[e.channel];return Array.isArray(t)?t.includes(e.value):String(t??"")===e.value}function zd(e,n,t={},r={}){const i=Qe.find(l=>l.role===n);const o=Dd(e?.roles);const s=r.includeFallback===false?void 0:i?o?.[i.style.fallbackRole]:void 0;const a=o?.[n];let c=s||a?{...s,...a}:void 0;const d=new Set(i?.style.applicableProperties??[]);for(const l of e?.bindings??[]){if(l.role!==void 0&&l.role!==n)continue;if(!jd(l,t))continue;const u=e?.semanticSlots?.[l.slot];if(!u)continue;const m=Object.fromEntries(Object.entries(u).filter(([f])=>d.has(f)));c={...c,...m}}return c?Object.freeze(c):void 0}function rm(e,n,t,r,i){if(t!=="start"&&t!=="end")throw new TypeError("Arrow endpoint must be start or end");const{width:o,height:s}=n;const a=t==="start"?0:o;const c=t==="start"?o:0;const d={id:e,shape:"arrow",size:{width:o,height:s},ref:{x:a,y:s/2},...i?{units:i}:{},orient:"auto",geometry:{kind:"polygon",points:[{x:c,y:0},{x:a,y:s/2},{x:c,y:s}]},paint:r};Yt(d);return d}function D(e,n){if(!Number.isFinite(e))throw new Error(`Marker ${n} must be finite`);return e}function Bd(e){if(!e)return"";const n=[];if(e.fill!==void 0)n.push(`fill="${j(e.fill)}"`);if(e.stroke!==void 0)n.push(`stroke="${j(e.stroke)}"`);if(e.strokeWidth!==void 0)n.push(`stroke-width="${j(e.strokeWidth)}"`);if(e.strokeDasharray!==void 0)n.push(`stroke-dasharray="${j(e.strokeDasharray)}"`);if(e.strokeDashoffset!==void 0)n.push(`stroke-dashoffset="${j(e.strokeDashoffset)}"`);if(e.strokeLinecap!==void 0)n.push(`stroke-linecap="${j(e.strokeLinecap)}"`);if(e.strokeLinejoin!==void 0)n.push(`stroke-linejoin="${j(e.strokeLinejoin)}"`);if(e.strokeMiterlimit!==void 0)n.push(`stroke-miterlimit="${j(e.strokeMiterlimit)}"`);if(e.vectorEffect!==void 0)n.push(`vector-effect="${j(e.vectorEffect)}"`);if(e.paintOrder!==void 0)n.push(`paint-order="${j(e.paintOrder)}"`);if(e.opacity!==void 0)n.push(`opacity="${j(e.opacity)}"`);return n.length>0?` ${n.join(" ")}`:""}function is(e){return e.map(n=>`${D(n.x,"point.x")} ${D(n.y,"point.y")}`).join(", ")}function os(e,n,t){const r=Bd(n);switch(e.kind){case"rect":return[`${t}<rect x="${D(e.x,"rect.x")}" y="${D(e.y,"rect.y")}" width="${D(e.width,"rect.width")}" height="${D(e.height,"rect.height")}"${e.rx!==void 0?` rx="${D(e.rx,"rect.rx")}"`:""}${e.ry!==void 0?` ry="${D(e.ry,"rect.ry")}"`:""}${r} />`];case"circle":return[`${t}<circle cx="${D(e.cx,"circle.cx")}" cy="${D(e.cy,"circle.cy")}" r="${D(e.r,"circle.r")}"${r} />`];case"ellipse":return[`${t}<ellipse cx="${D(e.cx,"ellipse.cx")}" cy="${D(e.cy,"ellipse.cy")}" rx="${D(e.rx,"ellipse.rx")}" ry="${D(e.ry,"ellipse.ry")}"${r} />`];case"line":return[`${t}<line x1="${D(e.x1,"line.x1")}" y1="${D(e.y1,"line.y1")}" x2="${D(e.x2,"line.x2")}" y2="${D(e.y2,"line.y2")}"${r} />`];case"polygon":return[`${t}<polygon points="${is(e.points)}"${r} />`];case"polyline":return[`${t}<polyline points="${is(e.points)}"${r} />`];case"path":return[`${t}<path d="${j(e.d)}"${r} />`];case"compound":return e.children.flatMap(i=>os(i,n,t))}}function Yt(e){if(typeof e.id!=="string"||e.id.trim()==="")throw new Error("Marker id must not be empty");if(!["arrow","open-arrow","circle","cross","triangle","diamond","diamond-open"].includes(String(e.shape))){throw new Error(`Marker "${e.id}" has an unknown shape`)}if(!e.geometry)throw new Error(`Marker "${e.id}" must declare geometry`);if(!e.size)throw new Error(`Marker "${e.id}" must declare marker size`);if(!e.ref)throw new Error(`Marker "${e.id}" must declare a reference point`);if(!(e.size.width>0)||!(e.size.height>0))throw new Error(`Marker "${e.id}" size must be positive`);D(e.size.width,"size.width");D(e.size.height,"size.height");D(e.ref.x,"ref.x");D(e.ref.y,"ref.y");if(e.units!==void 0&&e.units!=="strokeWidth"&&e.units!=="userSpaceOnUse"){throw new Error(`Marker "${e.id}" units must be strokeWidth or userSpaceOnUse`)}if(typeof e.orient==="number")D(e.orient,"orient");else if(e.orient!==void 0&&e.orient!=="auto"&&e.orient!=="auto-start-reverse"){throw new Error(`Marker "${e.id}" orient must be auto, auto-start-reverse, or a finite angle`)}if(e.overflow!==void 0&&e.overflow!=="hidden"&&e.overflow!=="visible"){throw new Error(`Marker "${e.id}" overflow must be hidden or visible`)}if(e.viewBox){D(e.viewBox.x,"viewBox.x");D(e.viewBox.y,"viewBox.y");D(e.viewBox.width,"viewBox.width");D(e.viewBox.height,"viewBox.height");if(!(e.viewBox.width>0)||!(e.viewBox.height>0))throw new Error(`Marker "${e.id}" viewBox must be positive`)}}function qr(e,n={}){Yt(e);const t=" ".repeat(n.indent??2);const r=`${t} `;const i=e.units;const o=e.orient??"auto";const s=[`id="${j(e.id)}"`,`markerWidth="${D(e.size.width,"size.width")}"`,`markerHeight="${D(e.size.height,"size.height")}"`,`refX="${D(e.ref.x,"ref.x")}"`,`refY="${D(e.ref.y,"ref.y")}"`,`orient="${j(String(o))}"`,...i?[`markerUnits="${j(i)}"`]:[],...e.viewBox?[`viewBox="${D(e.viewBox.x,"viewBox.x")} ${D(e.viewBox.y,"viewBox.y")} ${D(e.viewBox.width,"viewBox.width")} ${D(e.viewBox.height,"viewBox.height")}"`]:[],...e.overflow?[`overflow="${j(e.overflow)}"`]:[]];return[`${t}<marker ${s.join(" ")}>`,...os(e.geometry,e.paint,r),`${t}</marker>`].join("\n")}function Jr(e,n={}){const t=new Set;for(const r of e){if(t.has(r.id))throw new Error(`Duplicate marker resource "${r.id}"`);t.add(r.id)}return e.map(r=>qr(r,n)).join("\n")}var cs=2;function ei(e){return e.replace(/\/\*[\s\S]*?\*\//g,"").replace(/\\(?:\r\n|[\n\r\f])/g,"").replace(/\\([0-9a-fA-F]{1,6})\s?/g,(n,t)=>{const r=Number.parseInt(t,16);return Number.isFinite(r)?String.fromCodePoint(r):""}).replace(/\\([^\n\r\f])/g,"$1")}var Ld=/\s([^\s=<>]+)\s*=\s*("[^"]*"|'[^']*'|[^\s>]+)/g;var Fd=/<(?:[^\s<>/:]+:)?(?:animate(?:Motion|Transform)?|set)\b/i;var Wd=/^on[a-z]/;var Vd=/[(:@\\&]/;var Ud=/^(?:javascript|vbscript|data|file):/;var ds=/(?:javascript|vbscript|data|file)\s*:/i;var Gd=/(?:expression|behavior)\s*\(/i;var Yd=/(?:expression|behavior)\s*\(|-moz-binding\s*:/i;function Hd(e){const n=[];for(let t=e.indexOf("<");t>=0;t=e.indexOf("<",t+1)){const r=e[t+1];if(!r||r==="/"||r==="!"||r==="?")continue;if(!/[^\s<>]/.test(r))continue;let i;for(let o=t+1;o<e.length;o++){const s=e[o];if(i){if(s===i)i=void 0}else if(s==='"'||s==="'"){i=s}else if(s===">"){n.push(e.slice(t,o+1));t=o;break}}}return n}var Kd=new Set(["amp","lt","gt","quot","apos"]);function ct(e){return e===" "||e===" "||e==="\n"||e==="\r"}function Zr(e,n){const t=e.charCodeAt(n),r=t|32;if(!(r>=97&&r<=122||t===95))return-1;let i=n+1;while(et(e[i]))i++;return i}function Xd(e){const n=e.indexOf(":");if(n<=0||n===e.length-1||e.indexOf(":",n+1)>=0)return void 0;return{prefix:e.slice(0,n),local:e.slice(n+1)}}var Qr="http://www.w3.org/XML/1998/namespace";var qd="http://www.w3.org/2000/xmlns/";var Jd="http://www.w3.org/2000/svg";function ss(e){return e===9||e===10||e===13||e>=32&&e<=55295||e>=57344&&e<=65533||e>=65536&&e<=1114111}function Zd(e){return!/[\0-\x08\x0b\x0c\x0e-\x1f\ud800-\udfff\ufffe\uffff]/u.test(e)}function as(e){for(let n=e.indexOf("&");n>=0;n=e.indexOf("&",n+1)){const t=e.indexOf(";",n+1);if(t<0)return false;const r=e.slice(n+1,t);if(r.startsWith("#x")||r.startsWith("#X")){if(!/^[0-9a-f]+$/i.test(r.slice(2)))return false;if(!ss(Number.parseInt(r.slice(2),16)))return false}else if(r.startsWith("#")){if(!/^[0-9]+$/.test(r.slice(1)))return false;if(!ss(Number.parseInt(r.slice(1),10)))return false}else if(!Kd.has(r)){return false}n=t}return true}function ls(e){return ze("xml-envelope",e,()=>us(e))}function us(e,n){if(!Zd(e))return false;const t=[];let r=false;let i=false;let o=0;while(o<e.length){if(e[o]!=="<"){const h=e.indexOf("<",o);const k=h<0?e.length:h;const x=e.slice(o,k);if(t.length===0&&x.trim()!==""||x.includes("]]>")||!as(x))return false;o=k;continue}if(e.startsWith("<!--",o)){if(t.length===0)return false;const h=e.indexOf("-->",o+4);const k=h<0?"":e.slice(o+4,h);if(h<0||k.includes("--")||k.endsWith("-"))return false;o=h+3;continue}if(e.startsWith("<![CDATA[",o))return false;if(e.startsWith("<!",o)||e.startsWith("<?",o))return false;if(e.startsWith("</",o)){let h=Zr(e,o+2);if(h<0)return false;const k=e.slice(o+2,h);if(k.includes(":"))return false;while(ct(e[h]))h++;if(e[h]!==">"||t.pop()?.name!==k)return false;o=h+1;if(t.length===0){if(k!=="svg"||i)return false;i=true}continue}const s=Zr(e,o+1);if(s<0||i)return false;const a=e.slice(o+1,s);if(a.includes(":"))return false;if(t.length===0){if(r||a!=="svg")return false;r=true}let c=s;const d=new Set;const l=[];let u=false;for(;;){const h=ct(e[c]);while(ct(e[c]))c++;if(e[c]===">"){c++;break}if(e[c]==="/"&&e[c+1]===">"){u=true;c+=2;break}if(!h)return false;const k=Zr(e,c);if(k<0)return false;const x=e.slice(c,k);if(d.has(x))return false;const S=x.includes(":");const y=S?Xd(x):void 0;if(S&&!y)return false;d.add(x);c=k;while(ct(e[c]))c++;if(e[c]!=="=")return false;c++;while(ct(e[c]))c++;const E=e[c];if(E!=='"'&&E!=="'")return false;const R=++c;c=e.indexOf(E,R);if(c<0)return false;const w=e.slice(R,c);if(w.includes("<")||!as(w))return false;if(y||x==="xmlns"){l.push({name:x,...y,value:Tn(w)})}n?.(x,w);c++}const m=t.at(-1)?.namespaces;let f=m??new Map([["xml",Qr]]);let g;for(const h of l){const k=h.name==="xmlns";const x=h.prefix==="xmlns";if(!k&&!x)continue;const S=k?"":h.local;const y=h.value;if(S==="xmlns"||y===qd||S==="xml"&&y!==Qr||S!=="xml"&&y===Qr||S!==""&&y==="")return false;if(!g){g=new Map(f);f=g}g.set(S,y)}if(f.get("")!==Jd)return false;if(t.length>0&&a==="svg"){return false}let b;for(const h of l){if(h.name==="xmlns"||h.prefix==="xmlns")continue;const k=f.get(h.prefix);if(k===void 0)return false;const x=`${k}\0${h.local}`;if(!b)b=new Set;if(b.has(x))return false;b.add(x)}o=c;if(u){if(t.length===0)return false}else{t.push({name:a,namespaces:f})}}return r&&i&&t.length===0}function Tn(e){if(!e.includes("&"))return e;let n=e;for(let t=0;t<3;t++){const r=n.replace(/&#x([0-9a-f]+);?/gi,(i,o)=>{const s=Number.parseInt(o,16);return Number.isFinite(s)&&s<=1114111?String.fromCodePoint(s):""}).replace(/&#([0-9]+);?/g,(i,o)=>{const s=Number.parseInt(o,10);return Number.isFinite(s)&&s<=1114111?String.fromCodePoint(s):""}).replace(/:?/gi,":").replace(//?/gi,"/").replace(/&tab;?/gi," ").replace(/&newline;?/gi,"\n").replace(/"?/gi,'"').replace(/'?/gi,"'").replace(/<?/gi,"<").replace(/>?/gi,">").replace(/&?/gi,"&");if(r===n)break;n=r}return n}function Qd(e){const n=e[0];return(n==='"'||n==="'")&&e[e.length-1]===n?e.slice(1,-1):e}function fs(e){return Tn(e).replace(/[\u0000-\u0020\u007f-\u009f]+/g,"").toLowerCase()}function am(e){const n=Tn(e);if(/[\u0000-\u001f\u007f-\u009f]/.test(n))return false;const t=n.replace(/ +/g,"").toLowerCase().trim();if(/^(?:https?:|mailto:)/.test(t))return true;if(/^[a-z][a-z0-9+.-]*:/.test(t))return false;return t.length>0}function ps(e){const n=ei(Tn(e));const t=[];if(/@import\b/i.test(n))t.push("@import");for(const r of n.matchAll(/url\s*\(\s*(["']?)([\s\S]*?)\1\s*\)/gi)){const i=fs(r[2]);if(i!==""&&!i.startsWith("#"))t.push(`url(${r[2].trim()})`)}for(const r of n.matchAll(/(?:-webkit-)?(?:image-set|cross-fade)\s*\(/gi)){t.push(`${r[0].slice(0,-1).trim()}()`)}return t}function el(e){const n=ei(Tn(e));return ms(n)}function ms(e){if(Yd.test(e))return true;if(ds.test(e))return true;return false}var nl=new Set(["clip-path","cursor","fill","filter","marker-end","marker-mid","marker-start","mask","stroke","style"]);function cm(e,n){if(e===void 0||e==="")return void 0;if(typeof e!=="string")return"Mermaid themeCSS must be a string";return`Raw Mermaid themeCSS is not allowed in ${n} security mode because selectors can escape an imported SVG; use a declarative StyleSpec`}function tl(e){return ze("security",e,()=>rl(e))}function gs(e,n,t,r){const i=e.slice(e.lastIndexOf(":")+1).toLowerCase();if(Wd.test(i)){t.push("inline-event-handler");r.push("inline-event-handler")}if(e.toLowerCase()==="xml:base")t.push(`xml:base=${n}`);if(i==="href"||i==="src"||i==="data"){const o=fs(n);if(o!==""&&!o.startsWith("#"))t.push(o.startsWith("javascript:")?"javascript-url":n);if(Ud.test(o))r.push(`${e}=${n}`)}if(nl.has(i)||i==="values"||i==="from"||i==="to"){if(!Vd.test(n))return;const o=ei(Tn(n));if(ps(o).length>0||ds.test(o)||Gd.test(o))t.push(`${e}=${n}`);if(ms(o))r.push(`${e}=${n}`)}}function rl(e){const n=e.replace(/<!--[\s\S]*?-->/g,"");const t=[];const r=[];for(const i of Hd(n)){for(const o of i.matchAll(new RegExp(Ld.source,"g"))){gs(o[1],Qd(o[2]),t,r)}}return ys(n,t,r)}function ys(e,n,t){for(const r of e.matchAll(/<style\b[^>]*>([\s\S]*?)<\/style>/gi)){if(el(r[1]))t.push("active-css");n.push(...ps(r[1]))}for(const r of["script","foreignObject","image","object","embed","iframe"]){if(new RegExp(`<(?:[^\\s<>/:]+:)?${r}\\b`,"i").test(e)){n.push(`<${r}>`);if(r!=="image")t.push(`<${r}>`)}}if(Fd.test(e)){n.push("<animation>");t.push("<animation>")}return Object.freeze({active:Object.freeze(t),refs:Object.freeze(n)})}function ni(e){const{refs:n}=tl(e);return{ok:n.length===0,refs:[...n]}}function il(e){return ze("final-security",e,()=>{const n=[];const t=[];let r=false;let i;const o=us(e,(s,a)=>{if(r)return;try{gs(s,a,n,t)}catch(c){r=true;i=c}});if(!o)return false;if(r)throw i;return ys(e.replace(/<!--[\s\S]*?-->/g,""),n,t)})}function Ht(e,n="default"){const t=il(e);if(!t){throw new Error("OutputSecurityPolicy rejected an invalid SVG document envelope")}const{active:r,refs:i}=t;if(r.length>0){throw new Error(`OutputSecurityPolicy rejected active content: ${r.join(", ")}`)}if(n==="strict"&&i.length){throw new Error(`OutputSecurityPolicy strict verification failed: ${i.join(", ")}`)}return{svg:e,diagnostics:n==="strict"?[]:i.map(o=>({code:"EXTERNAL_REFERENCE",reference:o}))}}var lm=Object.freeze(["importance","value","category","status","progress","route","emphasis"]);var ti=["document","text","shape","container","connector","marker","data-mark"];var pm=Object.freeze(ti.map(e=>Object.freeze({primitive:e,operation:e==="document"?"serialize":"render"})));function mm(e){return e==="document"?"serialize":"render"}var hs=["measure","layout","bounds","hit-test","render","accessibility","terminal-project","serialize"];var bs=["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"];var xs=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)));var ol=["native","emulated","projected","lossy","unsupported"];function gm(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 Ss(e,n,t="rough"){const r=n==="crisp"?"native":"emulated";const i=n==="crisp"?"native":"projected";const o="src/__tests__/backend-capability-conformance.test.ts";const s=l=>{if(n==="crisp")return{realization:"native"};if(l==="geometry"||l==="topology")return{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."};if(l==="closedness")return{realization:"lossy",diagnostic:"Sketch shafts are rebuilt from routed geometry and do not preserve explicit closed-subpath semantics."};if(l==="bend-radius")return{realization:"lossy",diagnostic:"The authored rounded carrier remains exact, but the visible sketch follows its routed polyline and cannot preserve the continuous bend radius."};if(l==="dash-restart")return{realization:"lossy",diagnostic:"A rough stroke may contain multiple generated stroke subpaths, so SVG dash restart boundaries can differ."};if(l==="path-length")return{realization:"lossy",diagnostic:"One pathLength value spans generated stroke subpaths, so a sketch cannot retain one authored path calibration exactly."};if(t==="hybrid"&&(l==="stroke-cap"||l==="stroke-join"||l==="stroke-miter"||l==="non-scaling-stroke")){return{realization:"lossy",diagnostic:`Freehand ribbon geometry cannot preserve authored ${l} semantics; dashed Hybrid connectors fall back to the faithful rough projection.`}}if(l==="marker-orientation"||l==="marker-overflow")return{realization:"projected",diagnostic:"Marker geometry, orientation, and overflow remain in the typed marker projection instead of being sketched."};return{realization:"emulated"}};const a=["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"];const c=[{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:r,evidence:o},{target:e,primitive:"shape",feature:"paint",operation:"render",realization:r,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",...s("geometry"),evidence:o},{target:e,primitive:"connector",feature:"stroke",operation:"render",realization:r,evidence:o},...a.map(l=>({target:e,primitive:"connector",feature:l,operation:"render",...s(l),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:i,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:i,evidence:o},{target:e,primitive:"marker",feature:"paint",operation:"render",realization:i,evidence:o},{target:e,primitive:"marker",feature:"identity",operation:"serialize",realization:"native",evidence:o},{target:e,primitive:"data-mark",feature:"geometry",operation:"render",realization:r,evidence:o},{target:e,primitive:"data-mark",feature:"paint",operation:"render",realization:r,evidence:o},{target:e,primitive:"data-mark",feature:"identity",operation:"serialize",realization:"native",evidence:o}];const d=Kt(c);if(!d.valid)throw new Error(`Invalid graphical backend capability contract: ${d.diagnostics.join("; ")}`);return Object.freeze(c.map(l=>Object.freeze({...l})))}function ym(e="terminal:projection"){const n="src/__tests__/terminal-projection-security.test.ts";const t=new Set(["geometry","paint","stroke","transform","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"]);const r=["identity","relation","endpoints","direction","labels","markers","geometry","topology","subpaths","closedness","bend-radius","interaction","hit-geometry","stroke","transform","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"];const i=r.map(s=>({target:e,primitive:"connector",feature:s,operation:"terminal-project",realization:t.has(s)?"lossy":"projected",evidence:n,...t.has(s)?{diagnostic:`Terminal cells cannot render continuous connector ${s}; the exact typed value remains in terminal projection evidence.`}:{}}));const o=Kt(i);if(!o.valid)throw new Error(`Invalid terminal connector capability contract: ${o.diagnostics.join("; ")}`);return Object.freeze(i.map(s=>Object.freeze({...s})))}function ri(e){return[e.target,e.primitive,e.feature,e.operation].join("\0")}function Kt(e){const n=[];const t=new Set;for(let r=0;r<e.length;r++){const i=e[r];const o=ri(i);if(t.has(o))n.push(`claim[${r}]: duplicate target/primitive/feature/operation`);t.add(o);if(i.target.trim()==="")n.push(`claim[${r}]: target must not be empty`);if(i.primitive.trim()==="")n.push(`claim[${r}]: primitive must not be empty`);if(i.feature.trim()==="")n.push(`claim[${r}]: feature must not be empty`);if(i.operation.trim()==="")n.push(`claim[${r}]: operation must not be empty`);if(!ol.includes(i.realization))n.push(`claim[${r}]: invalid realization ${String(i.realization)}`);if((i.realization==="lossy"||i.realization==="unsupported")&&!i.diagnostic?.trim()){n.push(`claim[${r}]: ${i.realization} realization requires a diagnostic`)}}return{valid:n.length===0,diagnostics:n}}function te(e,n){if(e.length!==0&&e.length>n)return n+1;if(!/[^\x00-\x7f]/.test(e))return e.length;let t=0;for(let r=0;r<e.length;r++){const i=e.charCodeAt(r);if(i<=127)t+=1;else if(i<=2047)t+=2;else if(i>=55296&&i<=56319&&r+1<e.length){const o=e.charCodeAt(r+1);if(o>=56320&&o<=57343){t+=4;r++}else t+=3}else t+=3;if(t>n)return n+1}return t}function se(e){if(typeof e!=="object"||e===null||Array.isArray(e))return false;const n=Object.getPrototypeOf(e);return n===Object.prototype||n===null}function en(e){if(typeof e!=="object"||e===null||Object.isFrozen(e))return e;for(const n of Object.values(e))en(n);return Object.freeze(e)}var F=Object.freeze({maxDepth:64,maxNodes:1e5,maxItemsPerContainer:4096,maxAggregateTextCharacters:5e6,maxAggregateTextBytes:1e7,maxDiagnostics:64});function sl(e){return e==="__proto__"||e==="prototype"||e==="constructor"}function ks(e){if(typeof e==="number")return"must be a finite number";return`must be a JSON value, not ${typeof e}`}function al(e,n=[],t={}){const r=F;const i=[];const o=new WeakSet;const s=[{kind:"visit",value:e,path:n,depth:0}];let a=0;let c=0;let d=0;let l=false;const u=(f,g,b,h=false)=>{if(l)return;if(i.length>=r.maxDiagnostics-1){i.push({code:"JSON_DIAGNOSTIC_LIMIT",path:n,message:`exceeds the ${r.maxDiagnostics}-diagnostic admission limit`});l=true;return}i.push({code:f,path:g,message:b});if(h)l=true};const m=(f,g)=>{if(l)return;c+=f.length;if(c>r.maxAggregateTextCharacters){u("JSON_TEXT_CHARACTER_LIMIT",g,`exceeds the aggregate ${r.maxAggregateTextCharacters}-character text limit`,true);return}const b=r.maxAggregateTextBytes-d;d+=te(f,Math.max(0,b));if(d>r.maxAggregateTextBytes){u("JSON_TEXT_BYTE_LIMIT",g,`exceeds the aggregate ${r.maxAggregateTextBytes}-byte UTF-8 text limit`,true)}};while(s.length>0&&!l){const f=s.pop();if(f.kind==="exit"){o.delete(f.value);continue}if(f.depth>r.maxDepth){u("JSON_DEPTH_LIMIT",f.path,`exceeds maximum nesting depth ${r.maxDepth}`,true);continue}a++;if(a>r.maxNodes){u("JSON_NODE_LIMIT",f.path,`exceeds the aggregate ${r.maxNodes}-node limit`,true);continue}const g=f.value;if(g===null||typeof g==="boolean")continue;if(typeof g==="string"){m(g,f.path);continue}if(typeof g==="number"){if(!Number.isFinite(g))u("JSON_NON_JSON_VALUE",f.path,ks(g));continue}if(typeof g!=="object"){u("JSON_NON_JSON_VALUE",f.path,ks(g));continue}if(o.has(g)){u("JSON_CYCLE",f.path,"must be acyclic");continue}if(Array.isArray(g)){if(g.length>r.maxItemsPerContainer){u("JSON_ITEM_LIMIT",f.path,`must contain at most ${r.maxItemsPerContainer} items`,true);continue}o.add(g);s.push({kind:"exit",value:g});for(let h=g.length-1;h>=0;h--){if(!Object.prototype.hasOwnProperty.call(g,h)){u("JSON_SPARSE_ARRAY",[...f.path,h],"must not be a sparse array");continue}s.push({kind:"visit",value:g[h],path:[...f.path,h],depth:f.depth+1})}continue}if(!se(g)){u("JSON_NON_PLAIN_OBJECT",f.path,"must be a plain JSON object");continue}const b=Object.entries(g);if(b.length>r.maxItemsPerContainer){u("JSON_ITEM_LIMIT",f.path,`must contain at most ${r.maxItemsPerContainer} properties`,true);continue}o.add(g);s.push({kind:"exit",value:g});for(let h=b.length-1;h>=0;h--){const[k,x]=b[h];const S=[...f.path,k];m(k,S);if(sl(k)){u("JSON_PROTOTYPE_KEY",S,"uses a forbidden prototype key");continue}if(x===void 0&&t.allowUndefinedObjectProperties)continue;s.push({kind:"visit",value:x,path:S,depth:f.depth+1})}}return i}function cl(e){let n="$";for(const t of e){if(typeof t==="number")n+=`[${t}]`;else if(/^[A-Za-z_$][\w$]*$/.test(t))n+=`.${t}`;else n+=`[${JSON.stringify(t)}]`}return n}var Xt=class extends TypeError{constructor(t,r){super(`${t} failed JSON/config admission: ${r.map(i=>`${cl(i.path)} ${i.message}`).join("; ")}`);this.context=t;this.problems=r;this.name="JsonConfigAdmissionError"}context;problems;code="JSON_CONFIG_ADMISSION_FAILED"};function Em(e,n,t={}){const r=al(e,[],t);if(r.length>0)throw new Xt(n,r)}function Cm(e,n,t={}){const r=F;const i=[];if(e.length>r.maxAggregateTextCharacters){i.push({code:"JSON_TEXT_CHARACTER_LIMIT",path:[],message:`exceeds the aggregate ${r.maxAggregateTextCharacters}-character text limit`})}else if(te(e,r.maxAggregateTextBytes)>r.maxAggregateTextBytes){i.push({code:"JSON_TEXT_BYTE_LIMIT",path:[],message:`exceeds the aggregate ${r.maxAggregateTextBytes}-byte UTF-8 text limit`})}if(i.length===0&&t.trackFlowDepth){const o=[];let s;let a=false;let c=false;for(let d=0;d<e.length;d++){const l=e[d];if(c){if(l==="\n"||l==="\r")c=false;continue}if(s){if(s==='"'&&a){a=false;continue}if(s==='"'&&l==="\\"){a=true;continue}if(s==="'"&&l==="'"&&e[d+1]==="'"){d++;continue}if(l===s)s=void 0;continue}if(l==='"'||l==="'"){s=l;continue}if(l==="#"){c=true;continue}if(l==="{"||l==="["){o.push(l);if(o.length>r.maxDepth){i.push({code:"JSON_DEPTH_LIMIT",path:[],message:`exceeds maximum nesting depth ${r.maxDepth}`});break}}else if(l==="}"||l==="]")o.pop()}}if(i.length>0)throw new Xt(n,i)}function Es(e,n){const t=F.maxDiagnostics;if(e.length<=t)return[...e];return[...e.slice(0,t-1),`${n} exceeds the ${t}-diagnostic admission limit`]}var $n=1;var Rn=en({bg:{description:"Diagram page background."},fg:{description:"Primary text and foreground paint."},line:{description:"Connector and secondary line paint."},accent:{description:"Accent paint for emphasis and data series."},muted:{description:"Muted text and secondary data paint."},surface:{description:"Node and group surface fill."},border:{description:"Node and group border paint."}});var Nn=Object.freeze(["category"]);var nn=en({formatVersion:{kind:"const",value:$n,group:"metadata",description:"Persisted wire-format version. Optional on input and normalized to 1 on output."},$schema:{kind:"string",group:"metadata",description:"Optional JSON Schema pointer for file-backed styles; ignored while rendering."},name:{kind:"string",group:"metadata",description:"Canonical look:name or palette:name identity; required only when registering a style."},blurb:{kind:"string",group:"metadata",description:"Short human-readable description used by discovery surfaces."},colors:{kind:"colors",group:"palette",description:"Partial palette of safe, non-fetching CSS color tokens."},font:{kind:"string",runtimeValidator:"safeCssFontFamily",group:"typography",description:"Safe, non-fetching CSS font family or stack; the rendering environment supplies the font face."},roles:{kind:"roles",group:"roles",description:"Partial semantic SceneRole defaults. Family-authored styling remains authoritative."},semanticSlots:{kind:"semanticSlots",group:"policy",description:"Named brand-neutral role-style slots selected by semantic bindings."},bindings:{kind:"bindings",group:"policy",description:"Ordered equality bindings from authored/domain meaning to semantic slots."},constraints:{kind:"constraints",group:"policy",description:"Closed inspect-only brand constraints with warn or error actions."},stroke:{kind:"enum",values:["crisp","jittered","freehand"],group:"stroke",description:"Stroke treatment; crisp is the default renderer."},roughness:{kind:"number",minimum:0,maximum:10,expected:"between 0 and 10",group:"stroke",description:"Rough.js stroke irregularity."},bowing:{kind:"number",minimum:0,maximum:10,expected:"between 0 and 10",group:"stroke",description:"Rough.js line bowing."},passes:{kind:"integer",minimum:1,maximum:8,expected:"an integer from 1 through 8",group:"stroke",description:"Number of sketch strokes; 1 is single-pass and 2 is the usual double stroke."},strokeWidth:{kind:"number",exclusiveMinimum:0,maximum:20,expected:"greater than 0 and at most 20",group:"stroke",description:"Base stroke width in SVG user units."},fill:{kind:"enum",values:["none","hachure","solid","wash"],group:"fill",description:"Fill policy for rough/hybrid rendering; none and solid require a final stack that activates one of those backends."},hachureAngle:{kind:"number",minimum:-360,maximum:360,expected:"between -360 and 360",group:"fill",description:"Hachure line angle in degrees; requires fill hachure in the final stack."},hachureGap:{kind:"number",exclusiveMinimum:0,maximum:100,expected:"greater than 0 and at most 100",group:"fill",description:"Gap between hachure lines; requires fill hachure in the final stack."},fillWeight:{kind:"number",exclusiveMinimum:0,maximum:20,expected:"greater than 0 and at most 20",group:"fill",description:"Hachure line weight; requires fill hachure in the final stack."},washOpacity:{kind:"number",minimum:0,maximum:1,expected:"between 0 and 1",group:"fill",description:"Watercolor glaze opacity; requires fill wash in the final stack."},washEdge:{kind:"number",minimum:0,maximum:1,expected:"between 0 and 1",group:"fill",description:"Watercolor edge-darkening opacity; requires fill wash in the final stack."},backdrop:{kind:"enum",values:["plain","paper-ruled","grid"],group:"page",description:"Flat page furniture drawn behind the diagram."},intent:{kind:"enum",values:["premium","draft","lofi"],group:"advisory",description:"Advisory intent metadata for pickers and quality tooling."},mono:{kind:"boolean",group:"advisory",description:"Advisory monochrome contract: express tone through shading and weight."}});function oi(e,n){if(typeof e!=="number"||!Number.isFinite(e))return false;if(n.kind==="integer"&&!Number.isInteger(e))return false;if(n.minimum!==void 0&&e<n.minimum)return false;if(n.exclusiveMinimum!==void 0&&e<=n.exclusiveMinimum)return false;if(n.maximum!==void 0&&e>n.maximum)return false;return true}var ll=Object.freeze(["--bg","--fg","--_text","--_text-sec","--_text-muted","--_text-faint","--_line","--_arrow","--_node-fill","--_node-stroke","--_group-fill","--_group-hdr","--_inner-stroke","--_key-badge"]);var ul=new Set(ll);function fl(e){if(typeof e!=="string"||ce(e)===void 0)return false;const n=[...e.matchAll(/var\(\s*(--[a-z0-9_-]+)/gi)].map(t=>t[1]);return n.every(t=>ul.has(t))}var si=new Map(Qe.map(e=>[e.role,e]));var dt=at.map(e=>si.get(e));var pl=new Set(Ue);var ml=/^[A-Za-z][A-Za-z0-9._-]{0,63}$/;var ii=new Set(["__proto__","constructor","prototype"]);function $s(e,n,t){if(!se(e))return[`"${n}" must be an object`];const r=[];for(const[i,o]of Object.entries(e)){if(!Object.hasOwn(ke,i)){r.push(`unknown role style field "${n.slice(n.indexOf(".")+1)}.${i}"`);continue}if(t&&!t.has(i)){r.push(`role style field "${n}.${i}" is not applicable`);continue}const s=ke[i];const a=`${n}.${i}`;if(o===void 0)continue;if(s.kind==="number"&&!oi(o,s))r.push(`"${a}" must be ${s.expected}`);else if(s.kind==="font"&&(typeof o!=="string"||Sn(o)===void 0))r.push(`"${a}" must be a safe non-fetching CSS font family or stack`);else if(s.kind==="color"&&!fl(o))r.push(`"${a}" must be a safe non-fetching CSS paint`);else if(s.kind==="enum"&&(typeof o!=="string"||!s.values.includes(o)))r.push(`"${a}" must be one of ${s.values.join(" | ")}`)}return r}function gl(e){if(!se(e))return['"roles" must be an object of SceneRole records'];const n=[];for(const[t,r]of Object.entries(e)){const i=si.get(t);if(!i){n.push(`unknown scene role "${t}"`);continue}if(i.traits.styleConsumption==="fallback-only"){n.push(`scene role "${t}" is fallback-only; set roles.${i.style.fallbackRole} instead`);continue}const o=new Set(i.style.applicableProperties);const s=$s(r,`roles.${t}`,o).map(a=>a===`"roles.${t}" must be an object`?a:a.replace(`role style field "roles.${t}.`,`role style field "${t}.`).replace('" is not applicable',`" is not applicable to ${t} roles`));n.push(...s)}return n}function Os(e){return typeof e==="string"&&ml.test(e)&&!ii.has(e)}function yl(e){if(!se(e))return['"semanticSlots" must be an object of named role-style slots'];if(Object.keys(e).length>F.maxItemsPerContainer)return[`"semanticSlots" must contain at most ${F.maxItemsPerContainer} slots`];const n=[];for(const[t,r]of Object.entries(e)){if(!Os(t)){n.push(`invalid semantic slot name "${t}"`);continue}n.push(...$s(r,`semanticSlots.${t}`))}return n}function hl(e){if(!Array.isArray(e))return['"bindings" must be an array'];if(e.length>F.maxItemsPerContainer)return[`"bindings" must contain at most ${F.maxItemsPerContainer} entries`];const n=[];e.forEach((t,r)=>{const i=`bindings[${r}]`;if(!se(t)){n.push(`"${i}" must be an object`);return}for(const o of Object.keys(t))if(!["channel","value","slot","role"].includes(o))n.push(`unknown binding field "${i}.${o}"`);if(typeof t.channel!=="string"||!Nn.includes(t.channel))n.push(`"${i}.channel" must be one of ${Nn.join(" | ")}`);if(typeof t.value!=="string"||t.value.length===0||t.value.length>256||/[\r\n\0]/.test(t.value))n.push(`"${i}.value" must be a non-empty single-line string of at most 256 characters`);if(!Os(t.slot))n.push(`"${i}.slot" must be a valid semantic slot name`);if(t.role!==void 0&&!pl.has(t.role))n.push(`"${i}.role" must be a SceneRole with an executable category-binding consumer (${Ue.join(" | ")})`)});return n}function bl(e){if(!Array.isArray(e))return['"constraints" must be an array'];if(e.length>F.maxItemsPerContainer)return[`"constraints" must contain at most ${F.maxItemsPerContainer} entries`];const n=[];e.forEach((t,r)=>{const i=`constraints[${r}]`;if(!se(t)){n.push(`"${i}" must be an object`);return}if(typeof t.kind!=="string"||!ve.includes(t.kind)){n.push(`"${i}.kind" must be one of ${ve.join(" | ")}`);return}const o=t.kind;const s=Rt(o);const a=new Set(Zi(o));for(const c of Object.keys(t))if(!a.has(c))n.push(`unknown constraint field "${i}.${c}"`);if(t.action!=="warn"&&t.action!=="error")n.push(`"${i}.action" must be one of warn | error`);for(const[c,d]of Object.entries(s)){const l=t[c];if(l===void 0){if(d.required)n.push(`"${i}.${c}" is required for ${o}`);continue}if(d.kind==="role"&&!si.has(l)){n.push(`"${i}.${c}" must be a registered built-in SceneRole`)}else if(d.kind==="number"&&!oi(l,d)){n.push(`"${i}.${c}" must be between ${d.minimum} and ${d.maximum}`)}}});return n}function qt(e){if(!se(e))return["style spec must be a plain object"];if(Object.keys(e).length>F.maxItemsPerContainer)return[`style spec must contain at most ${F.maxItemsPerContainer} fields`];const n=[];for(const[t,r]of Object.entries(e)){if(!Object.hasOwn(nn,t)){n.push(`unknown field "${t}"`);continue}const i=nn[t];if(r===void 0)continue;switch(i.kind){case"const":if(r!==i.value)n.push(`"${t}" must be ${i.value}`);break;case"string":if(typeof r!=="string")n.push(`"${t}" must be a string`);else if(i.runtimeValidator==="safeCssFontFamily"&&Sn(r)===void 0){n.push(`"${t}" must be a safe non-fetching CSS font family or stack`)}break;case"boolean":if(typeof r!=="boolean")n.push(`"${t}" must be a boolean`);break;case"number":case"integer":if(!oi(r,i))n.push(`"${t}" must be ${i.expected}`);break;case"enum":if(typeof r!=="string"||!i.values.includes(r)){n.push(`"${t}" must be one of ${i.values.join(" | ")}`)}break;case"roles":n.push(...gl(r));break;case"semanticSlots":n.push(...yl(r));break;case"bindings":n.push(...hl(r));break;case"constraints":n.push(...bl(r));break;case"colors":{if(!se(r)){n.push('"colors" must be an object of color tokens');break}for(const[o,s]of Object.entries(r)){if(!Object.hasOwn(Rn,o))n.push(`unknown color token "${o}"`);else if(s!==void 0&&typeof s!=="string")n.push(`color token "${o}" must be a string`);else if(s!==void 0&&Do(s)===void 0)n.push(`color token "${o}" must be a safe non-fetching CSS color`)}break}}}return Es(n,"Style validation")}function xl(){return Object.fromEntries(Object.entries(ke).map(([e,n])=>{if(n.kind==="number"){const t=n;return[e,{type:"number",...t.minimum!==void 0?{minimum:t.minimum}:{},...t.exclusiveMinimum!==void 0?{exclusiveMinimum:t.exclusiveMinimum}:{},...t.maximum!==void 0?{maximum:t.maximum}:{},description:t.description}]}if(n.kind==="enum")return[e,{type:"string",enum:[...n.values],description:n.description}];return[e,{type:"string",description:n.description,"x-agentic-mermaid-runtime-validator":n.kind==="font"?"safeCssFontFamily":"safeStylePaint"}]}))}function Cs(e=Object.keys(ke)){const n=xl();return{type:"object",additionalProperties:false,maxProperties:e.length,properties:Object.fromEntries(e.map(t=>[t,n[t]]))}}function _s(e){return`roleStyle-${e.role}`}var ws="^[A-Za-z][A-Za-z0-9._-]{0,63}$";function Sl(e){switch(e.kind){case"const":return{const:e.value,description:e.description};case"string":return{type:"string",description:e.description,...e.runtimeValidator?{"x-agentic-mermaid-runtime-validator":e.runtimeValidator}:{}};case"boolean":return{type:"boolean",description:e.description};case"enum":return{type:"string",enum:[...e.values],description:e.description};case"number":case"integer":return{type:e.kind,...e.minimum!==void 0?{minimum:e.minimum}:{},...e.exclusiveMinimum!==void 0?{exclusiveMinimum:e.exclusiveMinimum}:{},...e.maximum!==void 0?{maximum:e.maximum}:{},description:e.description};case"roles":return{type:"object",additionalProperties:false,description:e.description,properties:Object.fromEntries(dt.map(n=>[n.role,{$ref:`#/$defs/${_s(n)}`}]))};case"semanticSlots":return{type:"object",description:e.description,maxProperties:F.maxItemsPerContainer,propertyNames:{pattern:ws,not:{enum:[...ii]}},additionalProperties:{$ref:"#/$defs/roleStyle-any"}};case"bindings":return{type:"array",description:e.description,maxItems:F.maxItemsPerContainer,items:{type:"object",additionalProperties:false,maxProperties:4,required:["channel","value","slot"],properties:{channel:{type:"string",enum:[...Nn]},value:{type:"string",minLength:1,maxLength:256,pattern:"^[^\\r\\n\\u0000]+$"},slot:{type:"string",pattern:ws,not:{enum:[...ii]}},role:{type:"string",enum:[...Ue]}}}};case"constraints":{const n={type:"string",enum:["warn","error"]};const t={type:"string",enum:Qe.map(i=>i.role)};const r=ve.map(i=>{const o=Rt(i);const s=Object.fromEntries(Object.entries(o).map(([a,c])=>[a,c.kind==="role"?t:{type:"number",minimum:c.minimum,maximum:c.maximum}]));return{type:"object",additionalProperties:false,required:[...Qi(i)],properties:{kind:{const:i},action:n,...s}}});return{type:"array",description:e.description,maxItems:F.maxItemsPerContainer,items:{oneOf:r}}}case"colors":return{type:"object",additionalProperties:false,maxProperties:Object.keys(Rn).length,description:`${e.description} Runtime validation applies the stricter safe-color policy.`,properties:Object.fromEntries(Object.entries(Rn).map(([n,t])=>[n,{type:"string",description:`${t.description} Must be a safe, non-fetching CSS color.`,"x-agentic-mermaid-runtime-validator":"safeCssColor"}]))}}}function kl(){const e=Object.fromEntries(dt.map(n=>[_s(n),Cs(n.style.applicableProperties)]));return{$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://agentic-mermaid.dev/schemas/style-spec.schema.json",title:"Agentic Mermaid StyleSpec",description:"A partial declarative style record for Agentic Mermaid rendering. All fields, including formatVersion, are optional on input; resolved and registered specs normalize formatVersion to 1.",type:"object",additionalProperties:false,maxProperties:Object.keys(nn).length,properties:Object.fromEntries(Object.entries(nn).map(([n,t])=>[n,Sl(t)])),$defs:{...e,"roleStyle-any":Cs()}}}function Ts(e){const n=ke[e];if(n.kind==="number")return"number";if(n.kind==="enum")return n.values.map(t=>JSON.stringify(t)).join(" | ");return"string"}function Rs(e){if(e.kind==="const")return String(e.value);if(e.kind==="string")return"string";if(e.kind==="boolean")return"boolean";if(e.kind==="number"||e.kind==="integer")return"number";if(e.kind==="enum")return e.values.map(n=>JSON.stringify(n)).join(" | ");if(e.kind==="colors")return"StyleColors";if(e.kind==="roles")return"RoleStyles";if(e.kind==="semanticSlots")return"Readonly<Record<string, Readonly<RoleStyleSpec>>>";if(e.kind==="bindings")return"readonly SemanticBinding[]";return"readonly BrandConstraint[]"}function Ns(e,n){const t=Rt(e);const r=n?";":"; ";const i=Object.entries(t).map(([o,s])=>{const a=s.required?"":"?";const c=s.kind==="role"?"SceneStyleRole":"number";return`${o}${a}:${c}`});return`{kind:${JSON.stringify(e)}${r}action:'warn'|'error'${i.length?r:""}${i.join(r)}}`}function El(e={}){const n=(m,f)=>{const g=`StyleRole_${m.replace(/[^A-Za-z0-9_]/g,"_")}`;const b=f.map(h=>` ${JSON.stringify(h)}?: ${Ts(h)}`).join("\n");return{stem:g,declaration:`interface ${g} {
|
|
17
|
-
${b}
|
|
18
|
-
}`}};const t=n("Any",Object.keys(ke));const r=dt.map(m=>({role:m.role,...n(m.role,m.style.applicableProperties)}));const i=Object.keys(Rn).map(m=>` ${m}?: string`).join("\n");const o=r.map(m=>` ${JSON.stringify(m.role)}?: Readonly<${m.stem}>`).join("\n");const s=Object.entries(nn).map(([m,f])=>` ${JSON.stringify(m)}?: ${Rs(f)}`).join("\n");const a=Qe.map(m=>JSON.stringify(m.role)).join(" | ");const c=dt.map(m=>JSON.stringify(m.role)).join(" | ");const d=Ue.map(m=>JSON.stringify(m)).join(" | ");const l=ve.map(m=>Ns(m,true)).join("|");const u=ve.map(m=>` | ${Ns(m,false)}`).join("\n");if(e.compact){const m=Object.keys(ke).map(k=>`${JSON.stringify(k)}?:${Ts(k)}`).join(";");const f=new Map;for(const k of dt){const x=[...k.style.applicableProperties].sort().join("|");f.set(x,[...f.get(x)??[],k.role])}const g=[...f.entries()].map(([k,x])=>{const S=x.map(E=>JSON.stringify(E)).join(" | ");const y=k.length===0?"never":`Pick<RoleStyleSpec, ${k.split("|").map(E=>JSON.stringify(E)).join(" | ")}>`;return`R extends ${S}?${y}:`}).join("");const b=Object.entries(nn).map(([k,x])=>`${JSON.stringify(k)}?:${Rs(x)}`).join(";");const h=Object.keys(Rn).map(k=>`${k}?:string`).join(";");return`interface StyleColors {${h}}
|
|
19
|
-
type SceneStyleRole=${a}
|
|
20
|
-
type ExactSceneStyleRole=${c}
|
|
21
|
-
type BindableSceneStyleRole=${d}
|
|
22
|
-
type RoleStyleSpec={${m}}
|
|
23
|
-
type RoleStyleFor<R extends ExactSceneStyleRole>=${g}never
|
|
24
|
-
type RoleStyles={[R in ExactSceneStyleRole]?:Readonly<RoleStyleFor<R>>}
|
|
25
|
-
type SemanticBindingChannel=${Nn.map(k=>JSON.stringify(k)).join(" | ")}
|
|
26
|
-
interface SemanticBinding {channel:SemanticBindingChannel;value:string;slot:string;role?:BindableSceneStyleRole}
|
|
27
|
-
type BrandConstraint=${l}
|
|
28
|
-
interface StyleSpec {${b}}
|
|
29
|
-
type StyleInput=string|StyleSpec`}return`interface StyleColors {
|
|
30
|
-
${i}
|
|
31
|
-
}
|
|
32
|
-
type SceneStyleRole = ${a}
|
|
33
|
-
type ExactSceneStyleRole = ${c}
|
|
34
|
-
type BindableSceneStyleRole = ${d}
|
|
35
|
-
${t.declaration}
|
|
36
|
-
type RoleStyleSpec = StyleRole_Any
|
|
37
|
-
${r.map(m=>m.declaration).join("\n")}
|
|
38
|
-
interface RoleStyles {
|
|
39
|
-
${o}
|
|
40
|
-
}
|
|
41
|
-
type SemanticBindingChannel = ${Nn.map(m=>JSON.stringify(m)).join(" | ")}
|
|
42
|
-
interface SemanticBinding { channel: SemanticBindingChannel; value: string; slot: string; role?: BindableSceneStyleRole }
|
|
43
|
-
type BrandConstraint =
|
|
44
|
-
${u}
|
|
45
|
-
interface StyleSpec {
|
|
46
|
-
${s}
|
|
47
|
-
}
|
|
48
|
-
type StyleInput = string | StyleSpec`}var As=Object.freeze([{id:"palette:paper",inputName:"paper",displayLabel:"Paper",colors:{bg:"#F5F0E4",fg:"#221E16",accent:"#9A4A24"}},{id:"palette:dusk",inputName:"dusk",displayLabel:"Dusk",colors:{bg:"#2A2521",fg:"#E9DFCC",accent:"#CC8A57"}},{id:"palette:zinc-light",inputName:"zinc-light",displayLabel:"Zinc Light",colors:{bg:"#FFFFFF",fg:"#27272A"}},{id:"palette:zinc-dark",inputName:"zinc-dark",displayLabel:"Zinc Dark",colors:{bg:"#18181B",fg:"#FAFAFA"}},{id:"palette:tokyo-night",inputName:"tokyo-night",displayLabel:"Tokyo Night",colors:{bg:"#1a1b26",fg:"#a9b1d6",line:"#3d59a1",accent:"#7aa2f7",muted:"#565f89"}},{id:"palette:tokyo-night-storm",inputName:"tokyo-night-storm",displayLabel:"Tokyo Night Storm",colors:{bg:"#24283b",fg:"#a9b1d6",line:"#3d59a1",accent:"#7aa2f7",muted:"#565f89"}},{id:"palette:tokyo-night-light",inputName:"tokyo-night-light",displayLabel:"Tokyo Night Light",colors:{bg:"#d5d6db",fg:"#343b58",line:"#34548a",accent:"#34548a",muted:"#9699a3"}},{id:"palette:catppuccin-mocha",inputName:"catppuccin-mocha",displayLabel:"Catppuccin Mocha",colors:{bg:"#1e1e2e",fg:"#cdd6f4",line:"#585b70",accent:"#cba6f7",muted:"#6c7086"}},{id:"palette:catppuccin-latte",inputName:"catppuccin-latte",displayLabel:"Catppuccin Latte",colors:{bg:"#eff1f5",fg:"#4c4f69",line:"#9ca0b0",accent:"#8839ef",muted:"#9ca0b0"}},{id:"palette:nord",inputName:"nord",displayLabel:"Nord",colors:{bg:"#2e3440",fg:"#d8dee9",line:"#4c566a",accent:"#88c0d0",muted:"#616e88"}},{id:"palette:nord-light",inputName:"nord-light",displayLabel:"Nord Light",colors:{bg:"#eceff4",fg:"#2e3440",line:"#aab1c0",accent:"#5e81ac",muted:"#7b88a1"}},{id:"palette:dracula",inputName:"dracula",displayLabel:"Dracula",colors:{bg:"#282a36",fg:"#f8f8f2",line:"#6272a4",accent:"#bd93f9",muted:"#6272a4"}},{id:"palette:github-light",inputName:"github-light",displayLabel:"GitHub Light",colors:{bg:"#ffffff",fg:"#1f2328",line:"#d1d9e0",accent:"#0969da",muted:"#59636e"}},{id:"palette:github-dark",inputName:"github-dark",displayLabel:"GitHub Dark",colors:{bg:"#0d1117",fg:"#e6edf3",line:"#3d444d",accent:"#4493f8",muted:"#9198a1"}},{id:"palette:solarized-light",inputName:"solarized-light",displayLabel:"Solarized Light",colors:{bg:"#fdf6e3",fg:"#657b83",line:"#93a1a1",accent:"#268bd2",muted:"#93a1a1"}},{id:"palette:solarized-dark",inputName:"solarized-dark",displayLabel:"Solarized Dark",colors:{bg:"#002b36",fg:"#839496",line:"#586e75",accent:"#268bd2",muted:"#586e75"}},{id:"palette:one-dark",inputName:"one-dark",displayLabel:"One Dark",colors:{bg:"#282c34",fg:"#abb2bf",line:"#4b5263",accent:"#c678dd",muted:"#5c6370"}},{id:"palette:salmon",inputName:"salmon",displayLabel:"Salmon",colors:{bg:"#FFFBF5",fg:"#521000",line:"#C9A88A",accent:"#FF4801",muted:"#85532E",surface:"#FFFDFB",border:"#D4B89E"}},{id:"palette:salmon-dark",inputName:"salmon-dark",displayLabel:"Salmon Dark",colors:{bg:"#1F1008",fg:"#F5DCC8",line:"#6B4A2E",accent:"#FF6B35",muted:"#A07858",surface:"#2A1810",border:"#5A3A22"}},{id:"palette:tufte-dark",inputName:"tufte-dark",displayLabel:"Tufte Dark",colors:{bg:"#1C1C1A",fg:"#E8E4DC",line:"#666660",accent:"#C87070",muted:"#908880",surface:"#2A2926",border:"#444440"}}]);var ai=0;function ci(){if(ai>0){throw new Error("Style registry mutation is forbidden while a Style input is undergoing admission")}}function Jt(e){ai++;try{return e()}finally{ai--}}function di(e){const n=new WeakMap;const t=new WeakSet;const r=new Set(["__proto__","prototype","constructor"]);let i=0;let o=0;const s=(a,c)=>{if(c>F.maxDepth){throw new TypeError(`Style input exceeds maximum nesting depth ${F.maxDepth}`)}i++;if(i>F.maxNodes){throw new TypeError(`Style input exceeds the ${F.maxNodes}-node limit`)}if(typeof a==="string"){o+=a.length;if(o>F.maxAggregateTextCharacters){throw new TypeError(`Style input exceeds the ${F.maxAggregateTextCharacters}-character text limit`)}return a}if(typeof a!=="object"||a===null)return a;if(t.has(a))throw new TypeError("Style input must be acyclic");const d=n.get(a);if(d!==void 0)return d;if(Array.isArray(a)){if(a.length>F.maxItemsPerContainer){throw new TypeError(`Style array must contain at most ${F.maxItemsPerContainer} items`)}const m=[];n.set(a,m);t.add(a);for(let f=0;f<a.length;f++){if(!Object.prototype.hasOwnProperty.call(a,f))throw new TypeError("Style arrays must not be sparse");m.push(s(a[f],c+1))}t.delete(a);return Object.freeze(m)}if(!se(a))return a;const l=Object.entries(a);if(l.length>F.maxItemsPerContainer){throw new TypeError(`Style object must contain at most ${F.maxItemsPerContainer} properties`)}const u=Object.create(null);n.set(a,u);t.add(a);for(const[m,f]of l){if(r.has(m))throw new TypeError(`Style input uses forbidden key "${m}"`);o+=m.length;if(o>F.maxAggregateTextCharacters){throw new TypeError(`Style input exceeds the ${F.maxAggregateTextCharacters}-character text limit`)}Object.defineProperty(u,m,{value:s(f,c+1),enumerable:true,writable:false,configurable:false})}t.delete(a);return Object.freeze(u)};return s(e,0)}var Zt=Object.freeze(["fontSize","fontWeight","letterSpacing","textTransform","textColor"]);var Ms=Object.freeze(["paddingX","paddingY","cornerRadius","lineWidth","fillColor","borderColor"]);var qm=Object.freeze({text:Object.freeze({sourceRole:"label",fields:Zt}),node:Object.freeze({sourceRole:"node",fields:Object.freeze([...Zt,...Ms])}),edge:Object.freeze({sourceRole:"edge",fields:Object.freeze([...Zt,"lineWidth","bendRadius","strokeColor"])}),group:Object.freeze({sourceRole:"group",fields:Object.freeze([...Zt,...Ms,"fontFamily","headerFillColor"])})});var Ps="1.0.0";var vs=Object.freeze({core:Ve});var Cl=Object.freeze({owner:"agentic-mermaid",source:"built-in",reference:"src/scene/style-registry.ts"});var wl=Object.freeze({owner:"host",source:"in-process"});var $e=new Map;var On=new Map;var Oe=class extends Error{constructor(n){super(n);this.name="StyleSpecError"}};function Ds(e){const n=di(e);const t=qt(n);if(t.length)throw new Oe(`Invalid style spec: ${t.join("; ")}`);return n}function Tl(e){const n=di(e);if(!se(n)){throw new TypeError("registerStyle options must be a plain object")}return n}function li(e){if(!e)return void 0;return Object.freeze(Object.fromEntries(Object.entries(e).map(([n,t])=>[n,Object.freeze({...t})])))}function ui(e){if(!e)return void 0;return Object.freeze(Object.fromEntries(Object.entries(e).map(([n,t])=>[n,Object.freeze({...t})])))}function _n(e){return e?Object.freeze(e.map(n=>Object.freeze({...n}))):void 0}function ut(e){if(!e)return void 0;const{displayLabel:n,...t}=e;return Object.freeze({...t,formatVersion:$n,...t.colors?{colors:Object.freeze({...t.colors})}:{},...t.roles?{roles:li(t.roles)}:{},...t.semanticSlots?{semanticSlots:ui(t.semanticSlots)}:{},...t.bindings?{bindings:_n(t.bindings)}:{},...t.constraints?{constraints:_n(t.constraints)}:{}})}function Rl(e){return vl(e)}function Nl(e,n,t){return kn({id:e,kind:n,version:t.version??Ps,compatibility:{...vs,...t.compatibility},provenance:t.provenance??wl})}function js(e,n,t,r){const i=e.name;const o=Object.freeze({...e,formatVersion:$n,...e.colors?{colors:Object.freeze({...e.colors})}:{},...e.roles?{roles:li(e.roles)}:{},...e.semanticSlots?{semanticSlots:ui(e.semanticSlots)}:{},...e.bindings?{bindings:_n(e.bindings)}:{},...e.constraints?{constraints:_n(e.constraints)}:{}});const s=Nl(i,n,t);st($e,{identity:s,value:o});if(r!==void 0){const a=On.get(r);const c=$e.has(r)&&r!==i?r:void 0;if(a!==void 0||c!==void 0){$e.delete(i);throw new Error(`Style input name "${r}" already selects "${a??c}"`)}On.set(r,i)}return()=>{ci();const a=$e.get(i);if(a?.identity!==s)return false;const c=$e.delete(i);if(c&&r!==void 0&&On.get(r)===i){On.delete(r)}return c}}function Jm(e,n={}){ci();return Jt(()=>{const t=Ds(e);const r=Tl(n);if(!t.name)throw new Error("registerStyle requires a name (anonymous specs are for inline use)");const i=Je(t.name);if(!i||i.kind!=="look"&&i.kind!=="palette"){throw new Error(`registerStyle name "${t.name}" must use the "look:" or "palette:" namespace`)}const o=Rl(t);if(i.kind!==o){throw new Error(`Style "${t.name}" is a ${o}; its name must use the "${o}:" namespace`)}return js(t,o,r)})}function q(e,n="look",t=e.name??""){if(!e.name)throw new Error("registerBuiltInStyle requires a name");const r=e.name;const i=ot(n,r);const o=qt(ut({...e,name:i}));if(o.length)throw new Error(`Invalid built-in style "${i}": ${o.join("; ")}`);js({...e,name:i},n,{version:Ps,compatibility:vs,provenance:Cl},t)}function zs(e){if($e.has(e))return e;const n=On.get(e);return n}function $l(e){const n=zs(e);if(!n)return void 0;const t=ut($e.get(n)?.value);if(!t)return void 0;return Object.freeze({canonicalId:n,spec:t})}function Zm(e){return $l(e)?.spec}function Ol(){return _l().map(e=>e.inputName)}function _l(){return Object.freeze(Array.from($e.values(),({identity:e,value:n})=>{const t=Array.from(On.entries()).find(([,o])=>o===e.id)?.[0]??e.id;const r=e.id.slice(e.id.indexOf(":")+1);const i=n.displayLabel??r.split("-").filter(Boolean).map(o=>o==="ops"?"OPS":o.charAt(0).toUpperCase()+o.slice(1)).join(" ");return Object.freeze({identity:e,spec:ut(n),inputName:t,displayLabel:i,kind:e.kind,isDefault:e.id==="look:crisp"})}))}function lt(e){if(e.stroke==="freehand"||e.fill==="wash")return"hybrid";if(e.stroke==="jittered"||e.fill==="hachure"||e.backdrop!==void 0&&e.backdrop!=="plain"||e.roughness!==void 0||e.bowing!==void 0||e.passes!==void 0||e.hachureGap!==void 0||e.hachureAngle!==void 0||e.fillWeight!==void 0)return"rough";return"default"}function Al(e,n){if(!e&&!n)return void 0;const t={...e};const r=t;for(const[i,o]of Object.entries(n??{})){if(o!==void 0)r[i]={...r[i],...o}}return t}function Ml(e,n){if(!e&&!n)return void 0;const t={...e};for(const[r,i]of Object.entries(n??{}))t[r]={...t[r],...i};return t}function Is(e,n){if(!e&&!n)return void 0;const t=[];const r=new Set;for(const i of[...e??[],...n??[]]){const o=JSON.stringify(i);if(!r.has(o)){r.add(o);t.push(i)}}return t}function Bs(e){if(e===void 0)return void 0;const n=Array.isArray(e)?e:[e];const t=[];for(const i of n){if(typeof i==="string"){const o=zs(i);if(o==="look:crisp")continue;const s=o?$e.get(o)?.value:void 0;if(!s)throw new Oe(`Unknown style "${i}". Known styles: ${Ol().join(", ")}`);t.push(s)}else{t.push(Ds(i))}}if(t.length===0)return void 0;const r={formatVersion:$n};for(const i of t){for(const[o,s]of Object.entries(i)){if(s===void 0)continue;if(o==="colors"){const a={...r.colors};for(const[c,d]of Object.entries(i.colors??{})){if(d!==void 0)a[c]=d}r.colors=a}else if(o==="roles"){r.roles=Al(r.roles,i.roles)}else if(o==="semanticSlots"){r.semanticSlots=Ml(r.semanticSlots,i.semanticSlots)}else if(o==="bindings"){r.bindings=Is(r.bindings,i.bindings)}else if(o==="constraints"){r.constraints=Is(r.constraints,i.constraints)}else{;r[o]=s}}}return r}function Qm(e){return Jt(()=>{const n=Bs(e);if(n)Ls(n);return ut(n)})}function Il(e){return e?{...e}:void 0}function Pl(e){const n=e.strokeWidth;const t=e.roles?Object.fromEntries(Object.entries(e.roles).map(([s,a])=>[s,Il(a)])):void 0;const r={...n!==void 0&&n>0&<(e)==="default"?{lineWidth:n}:{},...t?.node};const i={...n!==void 0&&n>0&<(e)==="default"?{lineWidth:n}:{},...t?.edge};const o={...n!==void 0&&n>0&<(e)==="default"?{lineWidth:n}:{},...t?.group};if(!t&&!e.semanticSlots&&!e.bindings&&!e.constraints&&Object.keys(r).length===0&&Object.keys(i).length===0&&Object.keys(o).length===0)return void 0;return{...t?{roles:li(t)}:{},...e.semanticSlots?{semanticSlots:ui(e.semanticSlots)}:{},...e.bindings?{bindings:_n(e.bindings)}:{},...e.constraints?{constraints:_n(e.constraints)}:{},...t?.label?{text:{...t.label}}:{},...Object.keys(r).length?{node:r}:{},...Object.keys(i).length?{edge:i}:{},...Object.keys(o).length?{group:o}:{}}}function Ls(e){for(const[o,s]of(e.bindings??[]).entries()){const a=e.semanticSlots?.[s.slot];if(!a)throw new Oe(`Invalid style spec: binding ${o+1} references missing semantic slot "${s.slot}"`);const c=s.role===void 0?new Set(Gt):new Set(Qe.find(d=>d.role===s.role).style.applicableProperties);if(!Object.keys(a).some(d=>c.has(d))){throw new Oe(s.role===void 0?`Invalid style spec: semantic slot "${s.slot}" has no field applicable to any executable category-binding role`:`Invalid style spec: semantic slot "${s.slot}" has no field applicable to role "${s.role}"`)}}const n=["hachureAngle","hachureGap","fillWeight"];const t=n.filter(o=>e[o]!==void 0&&e.fill!=="hachure");if(t.length>0){throw new Oe(`Invalid style spec: ${t.map(o=>`"${o}"`).join(", ")} require fill "hachure" in the final Style stack`)}const r=["washOpacity","washEdge"];const i=r.filter(o=>e[o]!==void 0&&e.fill!=="wash");if(i.length>0){throw new Oe(`Invalid style spec: ${i.map(o=>`"${o}"`).join(", ")} require fill "wash" in the final Style stack`)}if(e.fill!==void 0&<(e)==="default"){throw new Oe('Invalid style spec: "fill" has no crisp/default backend projection; combine it with stroke "jittered"/"freehand" or another rough/hybrid backend field')}}function eg(e){return Jt(()=>{const n=Bs(e);if(n===void 0)return{};Ls(n);const t=ut(n);const r=Pl(n);return{...t?{style:t}:{},...r?{face:r}:{}}})}function vl(e){return Object.keys(e).every(n=>n==="formatVersion"||n==="$schema"||n==="name"||n==="blurb"||n==="colors")?"palette":"look"}function ng(e){return lt(e)!=="default"||e.colors!==void 0||e.font!==void 0||e.strokeWidth!==void 0||e.roles!==void 0||e.semanticSlots!==void 0||e.bindings!==void 0||e.constraints!==void 0}q({name:"crisp",displayLabel:"Crisp",blurb:"The default renderer with precise SVG geometry.",stroke:"crisp"},"look");for(const e of As){const{inputName:n,colors:t}=e;if(ot("palette",n)!==e.id){throw new Error(`Built-in palette identity mismatch: ${e.id}`)}q({name:n,displayLabel:e.displayLabel,blurb:`Palette: ${n}.`,colors:{bg:t.bg,fg:t.fg,line:t.line,accent:t.accent,muted:t.muted,surface:t.surface,border:t.border}},"palette",n)}q({name:"hand-drawn",displayLabel:"Hand-drawn",blurb:"Black ink on ruled paper \u2014 wobbly double strokes, unfilled boxes.",intent:"draft",colors:{bg:"#f7f5ef",fg:"#1a1a1e",line:"#26262b",accent:"#26262b",border:"#26262b"},font:"Caveat",stroke:"jittered",roughness:1,bowing:1,passes:2,strokeWidth:1.8,fill:"none",backdrop:"paper-ruled",mono:true});q({name:"excalidraw",displayLabel:"Excalidraw",blurb:"Virtual whiteboard style \u2014 rough strokes, pastel hachure fills.",intent:"draft",colors:{bg:"#ffffff",fg:"#1e1e1e",line:"#1e1e1e",accent:"#4263eb",surface:"#f1f3f5"},font:"Caveat",stroke:"jittered",roughness:1.1,bowing:1.2,passes:2,strokeWidth:1.6,fill:"hachure",hachureAngle:-41,hachureGap:5.5,fillWeight:.9});q({name:"pen-and-ink",displayLabel:"Pen & ink",blurb:"Fine single-pass linework on warm cream \u2014 no interior hatching.",intent:"premium",colors:{bg:"#faf6ec",fg:"#241f1a",line:"#2b241d",accent:"#2b241d",border:"#2b241d"},font:"EB Garamond",stroke:"jittered",roughness:.5,bowing:.6,passes:1,strokeWidth:1.5,fill:"none",mono:true});q({name:"freehand",displayLabel:"Freehand",blurb:"Pressure-sensitive marker ribbons \u2014 variable-width filled strokes.",intent:"draft",colors:{bg:"#fbfaf7",fg:"#16161a",line:"#1d1d22",accent:"#1d1d22",border:"#1d1d22"},font:"Architects Daughter",stroke:"freehand",roughness:.9,passes:1,strokeWidth:1.6,fill:"none",mono:true});q({name:"watercolor",displayLabel:"Watercolor",blurb:"Rough outlines over translucent glazes with pigment-pooled edges.",intent:"premium",colors:{bg:"#fdfbf6",fg:"#31302c",line:"#4d4a44",accent:"#7a6a52",surface:"#ead9b9",border:"#5a564e"},font:"Caveat",stroke:"jittered",roughness:.9,bowing:.8,passes:1,strokeWidth:1.5,fill:"wash",washOpacity:.3,washEdge:.34});q({name:"blueprint",displayLabel:"Blueprint",blurb:"Cyanotype: white linework on Prussian blue with a drafting grid.",intent:"premium",colors:{bg:"#123a63",fg:"#eaf2fb",line:"#dbe9f7",accent:"#ffffff",muted:"#b8cfe6",surface:"#1c4a78",border:"#dbe9f7"},font:"Share Tech Mono",stroke:"jittered",roughness:.4,bowing:.4,passes:1,strokeWidth:1.4,fill:"none",backdrop:"grid",mono:true});q({name:"tufte",displayLabel:"Tufte",blurb:"Maximal data-ink: crisp hairlines, warm paper, one red accent.",intent:"premium",colors:{bg:"#fffff8",fg:"#111111",line:"#4a4a45",accent:"#a00000",muted:"#6b6b64",border:"#8a8a80"},font:"EB Garamond",roles:{node:{lineWidth:.8,cornerRadius:0},edge:{lineWidth:.8},group:{lineWidth:.8}},mono:true},"look","look:tufte");q({name:"accessible-high-contrast",displayLabel:"Accessible Contrast",blurb:"Accessibility-first: large labels, heavy strokes, white ground, colorblind-safe blue accent.",intent:"premium",colors:{bg:"#ffffff",fg:"#050505",line:"#111111",accent:"#005fcc",muted:"#333333",surface:"#ffffff",border:"#050505"},roles:{node:{fontSize:17,fontWeight:700,textColor:"var(--fg)",paddingX:28,paddingY:16,cornerRadius:8,lineWidth:2.4,borderColor:"var(--fg)"},edge:{fontSize:14,fontWeight:700,textColor:"var(--fg)",lineWidth:2.6,bendRadius:10,strokeColor:"var(--fg)"},group:{fontSize:14,fontWeight:700,textColor:"var(--fg)",paddingX:24,paddingY:22,cornerRadius:8,lineWidth:2.2,borderColor:"var(--fg)"}}});q({name:"patent-drawing",displayLabel:"Patent Hatching",blurb:"Print-safe patent figure: uniform ink, strong outlines, tone via oblique hatching.",intent:"premium",colors:{bg:"#ffffff",fg:"#111111",line:"#111111",accent:"#111111",muted:"#444444",surface:"#ffffff",border:"#111111"},font:"EB Garamond",stroke:"jittered",roughness:.3,bowing:.2,passes:1,strokeWidth:1.35,fill:"hachure",hachureAngle:-50,hachureGap:7,fillWeight:.65,roles:{node:{fontSize:14,fontWeight:600,textColor:"var(--fg)",paddingX:24,paddingY:13,lineWidth:1.35,cornerRadius:0,borderColor:"var(--fg)"},edge:{fontSize:12,textColor:"var(--fg)",lineWidth:1.45,bendRadius:0,strokeColor:"var(--fg)"},group:{fontSize:12,fontWeight:700,textColor:"var(--fg)",paddingX:22,paddingY:18,lineWidth:1.35,cornerRadius:0,borderColor:"var(--fg)"}},mono:true});q({name:"status-dashboard",displayLabel:"Dark Ops Dashboard",blurb:"Operational dashboard: dark surface, rounded modules, bright status-friendly accent.",intent:"premium",colors:{bg:"#08111f",fg:"#e6f4ff",line:"#5a7c99",accent:"#2dd4bf",muted:"#8aa6bf",surface:"#102033",border:"#2e4c63"},roles:{node:{fontSize:14,fontWeight:700,textColor:"var(--fg)",paddingX:24,paddingY:13,cornerRadius:10,lineWidth:1.4,borderColor:"var(--fg)"},edge:{fontSize:12,fontWeight:600,textColor:"var(--fg)",lineWidth:2,bendRadius:14,strokeColor:"var(--fg)"},group:{fontSize:13,fontWeight:700,textColor:"var(--fg)",textTransform:"uppercase",letterSpacing:.06,paddingX:22,paddingY:20,cornerRadius:10,lineWidth:1.3,borderColor:"var(--fg)"}}});q({name:"ops-schematic",displayLabel:"Compact Trace Map",blurb:"Dense operational schematic: compact mono labels, sturdy traces, theme-friendly geometry.",intent:"lofi",colors:{bg:"#f8faf7",fg:"#17211c",line:"#24523b",accent:"#0f766e",muted:"#4f665a",surface:"#f0f5ef",border:"#24523b"},font:"Share Tech Mono",stroke:"jittered",roughness:.18,bowing:.2,passes:1,strokeWidth:1.6,fill:"none",roles:{node:{fontSize:12,fontWeight:700,textTransform:"uppercase",textColor:"var(--fg)",paddingX:16,paddingY:8,cornerRadius:2,lineWidth:1.6,borderColor:"var(--fg)"},edge:{fontSize:10,fontWeight:700,textTransform:"uppercase",textColor:"var(--fg)",lineWidth:1.8,bendRadius:0,strokeColor:"var(--fg)"},group:{fontSize:11,fontWeight:700,textColor:"var(--fg)",textTransform:"uppercase",letterSpacing:.05,paddingX:16,paddingY:16,cornerRadius:2,lineWidth:1.5,borderColor:"var(--fg)"}}});q({name:"chalkboard",displayLabel:"Chalkboard",blurb:"Classroom chalkboard: dusty off-white strokes on green slate.",intent:"draft",colors:{bg:"#17362f",fg:"#f5f1df",line:"#ece6cf",accent:"#ffe08a",muted:"#c7d2c4",surface:"#17362f",border:"#f3ecd5"},font:"Caveat",stroke:"jittered",roughness:1.25,bowing:1,passes:2,strokeWidth:1.9,fill:"none",roles:{node:{fontSize:16,fontWeight:700,textColor:"var(--fg)",paddingX:24,paddingY:12,borderColor:"var(--fg)"},edge:{fontSize:13,textColor:"var(--fg)",lineWidth:1.8,strokeColor:"var(--fg)"},group:{fontSize:14,fontWeight:700,textColor:"var(--fg)",paddingX:20,paddingY:20,lineWidth:1.7,borderColor:"var(--fg)"}},mono:true});q({name:"risograph",displayLabel:"Riso Print",blurb:"Two-ink poster print: warm stock, offset blue linework, coral accent, coarse hachure.",intent:"premium",colors:{bg:"#fff5df",fg:"#2b2725",line:"#1f3d5a",accent:"#ff5a5f",muted:"#876a52",surface:"#ffd166",border:"#1f3d5a"},font:"EB Garamond",stroke:"jittered",roughness:.7,bowing:.55,passes:1,strokeWidth:1.5,fill:"hachure",hachureAngle:18,hachureGap:6.5,fillWeight:.75,roles:{node:{fontSize:14,fontWeight:700,textColor:"var(--fg)",paddingX:24,paddingY:13,cornerRadius:3,borderColor:"var(--fg)"},edge:{fontSize:12,textColor:"var(--fg)",lineWidth:1.5,strokeColor:"var(--fg)"},group:{fontSize:13,fontWeight:700,textColor:"var(--fg)",paddingX:22,paddingY:18,cornerRadius:3,borderColor:"var(--fg)"}}});q({name:"architectural-plan",displayLabel:"Plan Drafting",blurb:"Architectural plan: square technical linework, uppercase mono labels, room-like frames.",intent:"premium",colors:{bg:"#fbf7ea",fg:"#202a2f",line:"#38535e",accent:"#1f6f8b",muted:"#60727a",surface:"#fffaf0",border:"#38535e"},font:"Share Tech Mono",stroke:"jittered",roughness:.18,bowing:.25,passes:1,strokeWidth:1.45,fill:"none",roles:{node:{fontSize:12,fontWeight:700,textTransform:"uppercase",textColor:"var(--fg)",paddingX:20,paddingY:10,cornerRadius:0,lineWidth:1.45,borderColor:"var(--fg)"},edge:{fontSize:10,fontWeight:700,textTransform:"uppercase",textColor:"var(--fg)",lineWidth:1.55,bendRadius:0,strokeColor:"var(--fg)"},group:{fontSize:11,fontWeight:700,textColor:"var(--fg)",textTransform:"uppercase",letterSpacing:.06,paddingX:20,paddingY:20,cornerRadius:0,lineWidth:1.45,borderColor:"var(--fg)"}}});q({name:"publication-figure",displayLabel:"Report Figure",blurb:"Polished publication figure: serif labels, confident rules, rounded boxes, one quiet accent.",intent:"premium",colors:{bg:"#fffdf8",fg:"#171512",line:"#24211d",accent:"#1d4ed8",muted:"#5f5a52",surface:"#faf5ea",border:"#24211d"},font:"EB Garamond",strokeWidth:1.45,roles:{node:{fontSize:15,fontWeight:700,textColor:"var(--fg)",paddingX:26,paddingY:14,cornerRadius:7,lineWidth:1.45,borderColor:"var(--fg)"},edge:{fontSize:12,fontWeight:600,textColor:"var(--fg)",lineWidth:1.45,bendRadius:8,strokeColor:"var(--fg)"},group:{fontSize:12,fontWeight:700,textColor:"var(--fg)",textTransform:"uppercase",letterSpacing:.08,paddingX:24,paddingY:22,cornerRadius:7,lineWidth:1.35,borderColor:"var(--fg)"}}});function re(e,n,t=0){return Math.abs(e.x-n.x)<=t&&Math.abs(e.y-n.y)<=t}function ft(e,n){const t=n.x-e.x;const r=n.y-e.y;const i=Math.hypot(t,r);return Number.isFinite(i)&&i>0?{x:t/i,y:r/i}:void 0}function An(e,n){return{x:(e.x+n.x)/2,y:(e.y+n.y)/2}}function tn(e,n){return Math.hypot(n.x-e.x,n.y-e.y)}function Fs(e,n,t){const r=tn(n,t);if(r===0)return tn(e,n);return Math.abs((t.x-n.x)*(n.y-e.y)-(n.x-e.x)*(t.y-n.y))/r}function Ws(e,n,t,r,i=.5,o=12){if(!Number.isFinite(i)||i<=0){throw new TypeError("Cubic flattening tolerance must be positive and finite")}if(!Number.isSafeInteger(o)||o<0){throw new TypeError("Cubic flattening maxDepth must be a non-negative safe integer")}for(const c of[e,n,t,r]){if(!Number.isFinite(c.x)||!Number.isFinite(c.y)){throw new TypeError("Cubic flattening points must be finite")}}const s=[{...e}];const a=(c,d,l,u,m)=>{const f=tn(c,u);const g=tn(c,d)+tn(d,l)+tn(l,u)-f;const b=Math.max(Fs(d,c,u),Fs(l,c,u))<=i&&g<=i;if(b||m>=o){s.push({...u});return}const h=An(c,d);const k=An(d,l);const x=An(l,u);const S=An(h,k);const y=An(k,x);const E=An(S,y);a(c,h,S,E,m+1);a(E,y,x,u,m+1)};a(e,n,t,r,0);return s}function _e(...e){const n=e[0];if(!n)return void 0;for(let t=1;t<e.length;t++){const r=ft(n,e[t]);if(r)return r}return void 0}function Dl(e,n){if(n.kind==="line")return _e(e,n.end);if(n.kind==="quadratic")return _e(e,n.control,n.end);return _e(e,n.control1,n.control2,n.end)}function jl(e,n){if(n.kind==="line")return _e(e,n.end);if(n.kind==="quadratic")return _e(n.control,n.end)??_e(e,n.end);return _e(n.control2,n.end)??_e(n.control1,n.end)??_e(e,n.end)}function zl(e,n,t){return[{x:e.x+(n.x-e.x)*2/3,y:e.y+(n.y-e.y)*2/3},{x:t.x+(n.x-t.x)*2/3,y:t.y+(n.y-t.y)*2/3}]}function Vs(e,n,t,r=.5){for(const d of[n,...t.flatMap(l=>l.kind==="line"?[l.end]:l.kind==="quadratic"?[l.control,l.end]:[l.control1,l.control2,l.end])]){if(!Number.isFinite(d.x)||!Number.isFinite(d.y)){throw new TypeError("Connector path projection points must be finite")}}const i=[{...n}];const o=[];let s=n;for(const d of t){o.push(s);if(d.kind==="line"){i.push({...d.end})}else if(d.kind==="quadratic"){const[l,u]=zl(s,d.control,d.end);i.push(...Ws(s,l,u,d.end,r).slice(1))}else{i.push(...Ws(s,d.control1,d.control2,d.end,r).slice(1))}s=d.end}let a;for(let d=0;d<t.length&&!a;d++){a=Dl(o[d],t[d])}let c;for(let d=t.length-1;d>=0&&!c;d--){c=jl(o[d],t[d])}return{geometry:{kind:"path",d:e,points:i},contours:[{start:{...n},end:{...s},closed:false,...a?{startTangent:a}:{},...c?{endTangent:c}:{}}]}}function fi(e,n,t){return t==="manhattan"?Math.abs(n.x-e.x)+Math.abs(n.y-e.y):tn(e,n)}function Us(e,n){if(n===void 0)return e;if(!Number.isSafeInteger(n)||n<0){throw new TypeError("Rounded connector precision must be a non-negative safe integer")}const t=10**n;return Math.round(e*t)/t}function Gs(e,n,t,r,i){const o=fi(e,n,r);if(o===0)return{...e};const s=t/o;return{x:Us(e.x+(n.x-e.x)*s,i),y:Us(e.y+(n.y-e.y)*s,i)}}function og(e,n,t={}){if(e.length===0){throw new RangeError("Rounded connector paths require at least one point")}if(!Number.isFinite(n)){throw new TypeError("Rounded connector radius must be finite")}const r=t.metric??"euclidean";const i=e[0];const o=[];if(n<=0||e.length<3){for(let d=1;d<e.length;d++){o.push({kind:"line",end:e[d]})}const c=`M${e.map(d=>`${d.x},${d.y}`).join(" L")}`;return Vs(c,i,o,t.tolerance)}const s=[`M${i.x},${i.y}`];for(let c=1;c<e.length-1;c++){const d=e[c-1];const l=e[c];const u=e[c+1];const m=fi(d,l,r);const f=fi(l,u,r);const g=Math.min(n,m/2,f/2);if(g<=0){s.push(`L${l.x},${l.y}`);o.push({kind:"line",end:l});continue}const b=Gs(l,d,g,r,t.precision);const h=Gs(l,u,g,r,t.precision);s.push(`L${b.x},${b.y}`);s.push(`Q${l.x},${l.y} ${h.x},${h.y}`);o.push({kind:"line",end:b});o.push({kind:"quadratic",control:l,end:h})}const a=e.at(-1);s.push(`L${a.x},${a.y}`);o.push({kind:"line",end:a});return Vs(s.join(" "),i,o,t.tolerance)}function Ae(e,n=false){if(e.kind==="line"){return[{points:[{x:e.x1,y:e.y1},{x:e.x2,y:e.y2}],closed:false}]}if(e.kind==="path"&&e.subpaths!==void 0)return e.subpaths;return[{points:e.points,closed:n}]}function Qt(e){return e.kind==="path"&&/[AaCcQqSsTt]/.test(e.d)}function er(e,n=false){const t=[];for(const r of Ae(e,n)){const i=r.points[0];const o=r.points.at(-1);if(!i||!o)continue;let s;for(let d=1;d<r.points.length&&!s;d++){s=ft(r.points[d-1],r.points[d])}const a=r.closed&&!re(i,o);if(!s&&a)s=ft(o,i);let c=a?ft(o,i):void 0;for(let d=r.points.length-1;d>0&&!c;d--){c=ft(r.points[d-1],r.points[d])}t.push({start:e.kind==="line"?i:{...i},end:e.kind==="line"?o:{...r.closed?i:o},closed:r.closed,...s?{startTangent:s}:{},...c?{endTangent:c}:{}})}return t}function Ys(e,n=false){const t=[];const r=[];Ae(e,n).forEach((i,o)=>{const s=i.points[0];const a=i.closed?s:i.points.at(-1);if(s)t.push({point:{...s},contourIndex:o});if(a)r.push({point:{...a},contourIndex:o})});return{starts:t,ends:r}}function Mn(e,n=false){const t=[];const r=[];for(const i of Ae(e,n)){const o=i.points[0];const s=i.closed?o:i.points.at(-1);if(o)t.push(o);if(s)r.push(s)}return{starts:t,ends:r}}function pi(e,n=false){const t=[];for(const[r,i]of Ae(e,n).entries()){for(let a=1;a<i.points.length;a++){t.push({start:i.points[a-1],end:i.points[a],subpathIndex:r,closing:false})}const o=i.points[0];const s=i.points.at(-1);if(i.closed&&o&&s&&!re(o,s)){t.push({start:s,end:o,subpathIndex:r,closing:true})}}return t}function In(e,n=false){if(e.kind==="line")return[];if(e.kind==="path")return e.markerMidpoints??[];return Ae(e,n).flatMap(t=>{if(t.points.length<2)return[];const r=t.closed&&re(t.points[0],t.points.at(-1))?t.points.slice(0,-1):t.points;return t.closed?r.slice(1):r.slice(1,-1)})}function Hs(e,n=false){if(e.kind==="line")return[];const t=Ae(e,n);if(e.kind==="path"){return(e.markerMidpoints??[]).map(r=>{if(t.length===1)return{point:{...r},contourIndex:0};const i=t.flatMap((o,s)=>o.points.some(a=>re(a,r))?[s]:[]);if(i.length!==1){throw new TypeError("Path marker-mid vertices on multiple subpaths must belong to exactly one typed contour")}return{point:{...r},contourIndex:i[0]}})}return t.flatMap((r,i)=>{if(r.points.length<2)return[];const o=r.closed&&re(r.points[0],r.points.at(-1))?r.points.slice(0,-1):r.points;const s=r.closed?o.slice(1):o.slice(1,-1);return s.map(a=>({point:{...a},contourIndex:i}))})}function nr(e){return e.match(/[Mm](?=\s*[-+.]?\d)/g)?.length??0}var Pn=[1,0,0,1,0,0];function de(e){if(!e)return Pn;if(e.kind==="matrix")return[e.a,e.b,e.c,e.d,e.e,e.f];const n=e.angle*Math.PI/180;const t=Math.cos(n),r=Math.sin(n);return[t,r,-r,t,e.cx-t*e.cx+r*e.cy,e.cy-r*e.cx-t*e.cy]}function rn(e,n){return[e[0]*n[0]+e[2]*n[1],e[1]*n[0]+e[3]*n[1],e[0]*n[2]+e[2]*n[3],e[1]*n[2]+e[3]*n[3],e[0]*n[4]+e[2]*n[5]+e[4],e[1]*n[4]+e[3]*n[5]+e[5]]}function Ee(e,n){return{x:n[0]*e.x+n[2]*e.y+n[4],y:n[1]*e.x+n[3]*e.y+n[5]}}function tr(e){const n=e[0]*e[3]-e[1]*e[2];if(!Number.isFinite(n)||n===0)return void 0;return[e[3]/n,-e[1]/n,-e[2]/n,e[0]/n,(e[2]*e[5]-e[3]*e[4])/n,(e[1]*e[4]-e[0]*e[5])/n]}function Ks(e){let n=Pn;let t=0;const r=/([A-Za-z]+)\s*\(([^()]*)\)/g;for(const i of e.matchAll(r)){if(e.slice(t,i.index).trim())return void 0;t=i.index+i[0].length;const o=i[2].trim();if(!o||/^(?:,)|(?:,)$|,\s*,/.test(o)||!/^[-+\d.eE,\s]+$/.test(o))return void 0;const s=o.split(/[\s,]+/).map(Number);if(!s.every(Number.isFinite))return void 0;let a;if(i[1]==="matrix"&&s.length===6)a=s;else if(i[1]==="translate"&&(s.length===1||s.length===2))a=[1,0,0,1,s[0],s[1]??0];else if(i[1]==="scale"&&(s.length===1||s.length===2))a=[s[0],0,0,s[1]??s[0],0,0];else if(i[1]==="rotate"&&(s.length===1||s.length===3))a=de({kind:"rotate",angle:s[0],cx:s[1]??0,cy:s[2]??0});else return void 0;n=rn(n,a)}return t>0&&!e.slice(t).trim()?n:void 0}function Xs(e){return e.kind==="rotate"?`rotate(${e.angle} ${e.cx} ${e.cy})`:`matrix(${e.a} ${e.b} ${e.c} ${e.d} ${e.e} ${e.f})`}function qs(e,n,t){const r=t.x-n.x;const i=t.y-n.y;const o=r*r+i*i;if(o===0)return Math.hypot(e.x-n.x,e.y-n.y);const s=Math.max(0,Math.min(1,((e.x-n.x)*r+(e.y-n.y)*i)/o));return Math.hypot(e.x-(n.x+s*r),e.y-(n.y+s*i))}function mi(e,n,t){if(e.hit.pointerEvents==="none")return void 0;const r=pi(e.hit.geometry,e.hit.closed);if(r.length===0)return void 0;const i=rn(t,de(e.transform));let o=Number.POSITIVE_INFINITY;for(const s of r){o=Math.min(o,qs(n,Ee(s.start,i),Ee(s.end,i)))}return o}function lg(e,n){return mi(e,n,Pn)}function Js(e,n,t,r){if(e.hit.pointerEvents==="none")return false;const i=rn(r,de(e.transform));const o=tr(i);if(!o)return false;if(e.stroke.nonScaling){const d=mi(e,n,r);return d!==void 0&&d<=e.hit.strokeWidth/2+Math.max(0,t)}const s=Ee(n,o);const a=(Math.hypot(o[0]+o[3],o[1]-o[2])+Math.hypot(o[0]-o[3],o[1]+o[2]))/2;const c=e.hit.strokeWidth/2+(t>0?t*a:0);return pi(e.hit.geometry,e.hit.closed).some(d=>qs(s,d.start,d.end)<=c)}function he(e,n,t=0){return Js(e,n,t,Pn)}function Zs(e,n,t){for(let r=e.length-1;r>=0;r--){const i=e[r];if(i.kind==="connector")t(i,n);else if(i.kind==="group")Zs(i.children.map(o=>o.node),rn(n,de(i.transform)),t)}}function ug(e,n,t=0){const r=[];Zs(e.parts,Pn,(i,o)=>{const s=mi(i,n,o);if(s!==void 0&&Js(i,n,t,o)){r.push(Object.freeze({id:i.id,role:i.role,connector:i,distance:s}))}});return Object.freeze(r.sort((i,o)=>i.distance-o.distance))}var Bl=/^[A-Za-z_][A-Za-z0-9_.:-]*$/;var X=Object.freeze({maxIdLength:256,maxCoordinate:1e6,maxStopsPerGradient:256,maxResources:1e4,maxAggregateStops:2e4,maxSerializationBytes:8e6});function Me(e,n){if(!Number.isFinite(e))throw new Error(`Linear gradient ${n} must be finite`);if(Math.abs(e)>X.maxCoordinate){throw new Error(`Linear gradient ${n} must not exceed ${X.maxCoordinate}`)}return e}function Ll(e){return`${Math.round(e*1e5)/1e3}%`}function gi(e){if(!Bl.test(e.id)){throw new Error(`Linear gradient id ${JSON.stringify(e.id)} must use the safe SVG id grammar`)}if(e.id.length>X.maxIdLength){throw new Error(`Linear gradient id must contain at most ${X.maxIdLength} characters`)}if(e.units!=="userSpaceOnUse"&&e.units!=="objectBoundingBox"){throw new Error(`Linear gradient "${e.id}" units must be userSpaceOnUse or objectBoundingBox`)}Me(e.x1,"x1");Me(e.y1,"y1");Me(e.x2,"x2");Me(e.y2,"y2");if(e.stops.length<2){throw new Error(`Linear gradient "${e.id}" must declare at least two stops`)}if(e.stops.length>X.maxStopsPerGradient){throw new Error(`Linear gradient "${e.id}" must declare at most ${X.maxStopsPerGradient} stops`)}let n=-1;for(const[t,r]of e.stops.entries()){Me(r.offset,`stops[${t}].offset`);if(r.offset<0||r.offset>1){throw new Error(`Linear gradient "${e.id}" stop offsets must be in [0,1]`)}if(r.offset<n){throw new Error(`Linear gradient "${e.id}" stop offsets must be non-decreasing`)}n=r.offset;if(ce(r.color)===void 0||/^url\s*\(/i.test(r.color)){throw new Error(`Linear gradient "${e.id}" stop ${t} must use a safe non-fetching CSS paint`)}if(r.opacity!==void 0&&(!Number.isFinite(r.opacity)||r.opacity<0||r.opacity>1)){throw new Error(`Linear gradient "${e.id}" stop opacity must be in [0,1]`)}}}function yi(e,n={}){gi(e);const t=" ".repeat(n.indent??2);const r=`${t} `;const i=[`id="${j(e.id)}"`,`gradientUnits="${e.units}"`,`x1="${Me(e.x1,"x1")}"`,`y1="${Me(e.y1,"y1")}"`,`x2="${Me(e.x2,"x2")}"`,`y2="${Me(e.y2,"y2")}"`];return[`${t}<linearGradient ${i.join(" ")}>`,...e.stops.map(o=>`${r}<stop offset="${Ll(o.offset)}" stop-color="${j(o.color)}"${o.opacity===void 0?"":` stop-opacity="${o.opacity}"`} />`),`${t}</linearGradient>`].join("\n")}function Qs(e,n={}){if(e.length>X.maxResources){throw new Error(`A definitions mark may declare at most ${X.maxResources} linear gradients`)}const t=new Set;let r=0;let i=0;const o=[];for(const s of e){if(t.has(s.id))throw new Error(`Duplicate linear gradient resource "${s.id}"`);t.add(s.id);r+=s.stops.length;if(r>X.maxAggregateStops){throw new Error(`Linear gradient resources may declare at most ${X.maxAggregateStops} aggregate stops`)}const a=yi(s,n);const c=o.length===0?0:1;const d=X.maxSerializationBytes-i-c;const l=te(a,Math.max(0,d));if(l>d){throw new Error(`Linear gradient serialization exceeds ${X.maxSerializationBytes} bytes`)}i+=l+c;o.push(a)}return o.join("\n")}function ea(e,n){if(e.length!==1||n.monospace||n.letterSpacing||e[0].bold||e[0].italic||e[0].underline||e[0].strikethrough||/[^\x20-\x7e]/u.test(e[0].text))return void 0;const t=e[0];const r=a=>Number.isInteger(a)&&a>=0&&a<=4294967295;if(!t.clusters||t.clusters.length!==t.text.length||!r(t.sourceEnd)||t.clusters.some((a,c)=>a.text!==t.text[c]||!r(a.sourceStart)))return void 0;const i=new Float64Array(t.text.length+1),o=new Uint32Array(t.text.length+1);const s=n.fontWeight>=600?.6:n.fontWeight>=500?.57:.54;for(let a=0;a<t.text.length;a++){let c=mn(t.text[a]);if(n.safeFont&&(t.text[a]==="W"||t.text[a]==="M"))c+=.35;i[a+1]=i[a]+c;o[a]=t.clusters[a].sourceStart}o[t.text.length]=t.sourceEnd;return{offsets:o,width:(a,c)=>(i[c]-i[a])*n.fontSize*s+n.fontSize*.15}}var na=new Le(256,8*1024*1024);var pt=new WeakSet;function rr(e){return pt.has(e)}function ra(e,n){if(pt.has(e))pt.add(n)}function xi(e,n){return e.bold===n.bold&&e.italic===n.italic&&e.underline===n.underline&&e.strikethrough===n.strikethrough}function bi(e){const n=[];let t;for(const r of e.flatMap(i=>i.fragments??i)){if(t&&xi(t,r)){t.text+=r.text;t.sourceEnd=r.sourceEnd}else{t={...r};n.push(t)}}return n}function on(e,n){if(e.length===0)return 0;const t=n.safeFont?_t:Zn;const r=e.length===1&&!e[0].fragments?e:bi(e);const i=r.length===1?r[0].text:r.map(a=>a.text).join("");if((n.letterSpacing??0)!==0&&!/[^\x20-\x7e]/u.test(i))return ta(r,n).width;const o=n.monospace?je()?r.reduce((a,c)=>a+At(c.text,n.fontSize,0,c.bold?Math.max(700,n.fontWeight):n.fontWeight,c.italic?"italic":"normal",n.fontFamily),0):At(i,n.fontSize):r.reduce((a,c)=>a+t(c.text,n.fontSize,c.bold?Math.max(700,n.fontWeight):n.fontWeight,c.italic?"italic":"normal",n.fontFamily),0);if(!je()&&/[^\x20-\x7e]/u.test(i)){const a=r.reduce((d,l)=>d+[...l.text].reduce((u,m)=>u+(mn(m)===0?0:/[^\x20-\x7e]/u.test(m)?n.fontSize*1.2:_t(m,n.fontSize,l.bold?Math.max(700,n.fontWeight):n.fontWeight)),0),0);const c=ne(i).filter(d=>/\p{M}/u.test(d)&&[...d].every(l=>mn(l)===0)).length;return Math.max(o,a+c*n.fontSize*1.2)+Math.max(0,[...i].length-1)*Math.abs(n.letterSpacing??0)}if((n.letterSpacing??0)<0)return ta(r,n).width;const s=n.letterSpacing??0;return Math.max(0,o+(s===0?0:Math.max(0,ne(i).length-1)*s))}function Fl(e,n){const t=e.flatMap((a,c)=>ne(a.text).map(d=>({runIndex:c,text:d})));let r=0,i=0,o=0;const s=t.map((a,c)=>{const d=e[a.runIndex],l=t[c+1];const u=!l||!xi(d,e[l.runIndex]);const m=ia(a.text,d,u,n);const f=Object.freeze({...a,x:r,width:m});i=Math.min(i,r);o=Math.max(o,r+m);r+=m+(n.letterSpacing??0);return f});return{width:o-i,originX:-i,fragments:Object.freeze(s)}}function Wl(e,n){const t=[];for(const[o,s]of e.entries()){const a=t.at(-1);if(a&&xi(e[a.runIndex],s))a.text+=s.text;else t.push({runIndex:o,text:s.text})}let r=0;const i=t.map(({runIndex:o,text:s})=>{const a=on([{...e[o],text:s}],n);const c=Object.freeze({runIndex:o,text:s,x:r,width:a});r+=a;return c});return{width:r,originX:0,fragments:Object.freeze(i)}}function ia(e,n,t,r){const i=n.bold?Math.max(700,r.fontWeight):r.fontWeight;const o=n.italic?"italic":"normal";const s=r.safeFont?_t:Zn;return r.monospace?At(e,r.fontSize,0,i,o,r.fontFamily):s(e,r.fontSize,i,o,r.fontFamily)-(t||je()?0:r.fontSize*.15)}function ta(e,n){let t=0,r=0,i=0;for(const o of e){const s=ne(o.text);for(const[a,c]of s.entries()){const d=ia(c,o,a===s.length-1,n);r=Math.min(r,t);i=Math.max(i,t+d);t+=d+(n.letterSpacing??0)}}return{width:i-r,originX:-r}}function Vl(e){const n=e.flatMap(i=>(i.clusters??ne(i.text).map(o=>({text:o,sourceStart:i.sourceStart,sourceEnd:i.sourceEnd}))).map(o=>({...i,...o,clusters:void 0})));let t=0;let r=0;return ne(n.map(i=>i.text).join("")).map(i=>{let o=i.length;const s=[];while(o>0){const a=n[t];const c=Math.min(o,a.text.length-r);s.push({...a,text:a.text.slice(r,r+c)});o-=c;r+=c;if(r===a.text.length){t++;r=0}}return{...s[0],text:i,sourceEnd:s.at(-1).sourceEnd,...s.length>1?{fragments:s}:{}}})}function hi(e){const{fragments:n,...t}=e.fragments?.at(-1)??e;return{...t,text:"-",clusters:void 0}}function mt(e,n){if(hn("text-spans"))n={display:n.display,transform:n.transform,fontSize:n.fontSize,fontWeight:n.fontWeight,letterSpacing:n.letterSpacing,maxWidth:n.maxWidth,safeFont:n.safeFont,monospace:n.monospace,fontFamily:n.fontFamily};if(!Number.isFinite(n.fontSize)||n.fontSize<=0||!Number.isFinite(n.fontWeight)||!Number.isFinite(n.letterSpacing??0))throw new RangeError("Prepared text requires finite typography and a positive font size");const t=hn("text-spans")&&!je()&&typeof e==="string"&&e.length<=16384?JSON.stringify([e,n]):void 0;if(t!==void 0){const g=na.get(t);if(g)return g}const r=bn(e,n.display,n.transform);const i=n.maxWidth;const o=[];const s=[];for(const[g,b]of r.lines.entries()){if(g>0)s.push({kind:"authored",sourceOffset:r.lineStarts[g]-1});if(b.length===0){o.push([]);continue}if(!i||!Number.isFinite(i)||i<=0||on(b,n)<=i){o.push([...b]);continue}const h=Vl(b);const k=hn("text-spans");const x=k&&!je()?ea(b,n):void 0;const S=k?(E,R)=>{const w=x?.width(E,R);if(w!==void 0&&Math.abs(w-i)>1e-8*Math.max(1,Math.abs(w),Math.abs(i)))return w<i;return on(h.slice(E,R),n)<=i}:void 0;let y=0;while(y<h.length){let E=y;let R=-1;if(S){while(E<h.length&&S(y,E+1)){if(/\s/u.test(h[E].text))R=E+1;E++}}else{while(E<h.length&&on(h.slice(y,E+1),n)<=i){if(/\s/u.test(h[E].text))R=E+1;E++}}if(E===h.length){o.push(bi(h.slice(y)));break}if(E>y&&!/\s/u.test(h[E-1].text)&&/\s/u.test(h[E]?.text??"")){R=E;while(R<h.length&&/\s/u.test(h[R].text))R++}let w=false;let I;let O;if(R>y){if(h.slice(y,R).some(B=>!/\s/u.test(B.text)))while(R<h.length&&/\s/u.test(h[R].text))R++;E=R;I=E;while(I>y&&/\s/u.test(h[I-1].text))I--;if(I===y)I=E;else O=h.slice(I,E).map(B=>B.text).join("")}else{E=Math.max(y+1,E);const B=V=>/[\p{Script=Latin}\p{Script=Greek}\p{Script=Cyrillic}]/u.test(h[V-1]?.text??"")&&/\p{L}/u.test(h[V]?.text??"");if(B(E)){while(E>y+1&&on([...h.slice(y,E),hi(h[E-1])],n)>i)E--;w=on([...h.slice(y,E),hi(h[E-1])],n)<=i}}const Y=bi(h.slice(y,I??E));const le=x?.offsets[E]??h[E]?.sourceStart??r.source.length;if(w)Y.push({...hi(h[E-1]),sourceStart:le,sourceEnd:le});o.push(Y);if(E<h.length)s.push({kind:w?"hyphen":"wrap",sourceOffset:le,...O?{replacedText:O}:{}});y=E}if(h.length===0)o.push([])}const a=r.lines.map(g=>g.map(b=>b.text).join("")).join("\n");const c=/\p{M}/u.test(a.normalize("NFD").replace(/[\uFE0E\uFE0F]/g,""))?ne(a.normalize("NFD")).reduce((g,b)=>Math.max(g,(b.replace(/[\uFE0E\uFE0F]/g,"").match(/\p{M}/gu)??[]).length),0):0;const d=n.fontSize*Math.max(Ne,/[\p{Script=Arabic}\p{Script=Hebrew}]/u.test(a)?2.4:0,c?Ne+c*.6:0);const l=o.map((g,b)=>{const h=g.map(y=>r.display==="literal"?y.text:Ot(y)).join("");g.forEach(Object.freeze);const k=!/[^\x20-\x7e]/u.test(h);const x=g.some(y=>y.bold||y.italic||y.underline||y.strikethrough);const S=k?(n.letterSpacing??0)!==0?Fl(g,n):x?Wl(g,n):void 0:void 0;return Object.freeze({runs:Object.freeze(g),text:h,width:S?.width??on(g,n),baseline:b*d+n.fontSize*.35,originX:S?.originX??0,...S?{fragments:S.fragments}:{}})});const u=l.map(g=>g.text);Object.freeze(u);s.forEach(Object.freeze);const m=l.reduce((g,b)=>Math.max(g,b.width),0);const f=Object.freeze({unit:"px",prepared:r,text:u.join("\n"),lines:u,lineBlocks:Object.freeze(l),breaks:Object.freeze(s),width:m,height:u.length*d,lineHeight:d,fontSize:n.fontSize,fontWeight:n.fontWeight,letterSpacing:n.letterSpacing??0,monospace:n.monospace??false,safeFont:n.safeFont??false,...n.fontFamily?{fontFamily:n.fontFamily}:{}});pt.add(f);if(t!==void 0)na.set(t,f,t.length*2+f.prepared.source.length*128+f.lines.length*256+512);return f}function Ng(e,n){const t=e?.lineBlocks[n];if(!e||!t)return void 0;if(!rr(e))throw new TypeError("Pixel line projection requires retained preparation");const r=[t.text];Object.freeze(r);const i=Object.freeze({...e,text:t.text,lines:r,lineBlocks:Object.freeze([Object.freeze({...t,baseline:e.fontSize*.35})]),breaks:Object.freeze([]),width:t.width,height:e.lineHeight});pt.add(i);return i}import{decodeXML as Ul}from"entities";function vn(e){return!e.includes("->")&&!/[#:"\[\],\u0000-\u001f]/.test(e)}function Mg(e,n,t=""){const r=vn(e)&&vn(n)?`${e}->${n}`:`relation:${JSON.stringify([e,n])}`;return t?`${t}:${r}`:r}function oa(e,...n){const t=n.map(String);return vn(e)&&t.every(vn)?[e,...t].join(":"):`part:${JSON.stringify([e,...t])}`}function Ig(e,n,...t){const r=t.map(String);return vn(n)&&r.every(vn)?[e,n,...r].join(":"):`${e}:${JSON.stringify([n,...r])}`}function sa(e,n){const t=e.match(/^\s*<([A-Za-z][\w:-]*)\b[^>]*>/)?.[0]??"";const r=a=>{const c=t.match(new RegExp(`\\s${a}="([^"]*)"`))?.[1];return c===void 0?void 0:Ul(c)};const i=(r("class")??"").split(/\s+/).filter(Boolean);const o=r("data-from");const s=r("data-to");return{id:r("data-id")??n.id,role:n.role,...o!==void 0?{from:o}:{},...s!==void 0?{to:s}:{},...i.length>0?{classNames:i}:{}}}function sn(e){return wn(e).domIdentity}function aa(e,n){if(!sn(n.role))return e;const t=e.match(/^\s*<([A-Za-z][\w:-]*)\b[^>]*>/)?.[0];if(!t||t.startsWith("<style")||t.startsWith("<defs")||t.startsWith("<svg"))return e;const r=(o,s,a)=>{const c=j(a);const d=new RegExp(`\\s${s}="[^"]*"`);if(d.test(o))return o.replace(d,` ${s}="${c}"`);const l=o.endsWith("/>")?"/>":">";const u=o.slice(0,-l.length).trimEnd();return`${u} ${s}="${c}"${l==="/>"?" /":""}>`};let i=r(r(t,"data-id",n.id),"data-role",n.role);if(n.from!==void 0)i=r(i,"data-from",n.from);if(n.to!==void 0)i=r(i,"data-to",n.to);return i===t?e:e.replace(t,i)}function N(e,n,t){return!t||Object.hasOwn(e,n)?e[n]:void 0}function Si(e,n){return e?{...e,...N(e,"geometry",n)?{geometry:N(e,"geometry",n)}:{},...N(e,"size",n)?{size:{...N(e,"size",n)}}:{},...N(e,"viewBox",n)?{viewBox:{...N(e,"viewBox",n)}}:{},...N(e,"ref",n)?{ref:{...N(e,"ref",n)}}:{},...N(e,"bounds",n)?{bounds:{...N(e,"bounds",n)}}:{},...N(e,"paint",n)?{paint:{...N(e,"paint",n)}}:{}}:void 0}function ca(e,n){const t=N(e,"owner",n);const r=N(e,"point",n);return{...e,...t?{owner:{...t}}:{},...r?{point:{...r}}:{}}}function Gl(e,n,t=false){const r=["continuous-geometry","stroke-width","stroke-cap","stroke-join"];if(e.bendRadius>0)r.push("bend-radius");if(N(n,"opacity",t)!==void 0)r.push("stroke-opacity");if(n.lineJoin==="miter"||n.lineJoin==="miter-clip")r.push("stroke-miter");if(N(n,"dash",t))r.push("dash-pattern");const i=N(n,"dash",t);if(i&&N(i,"offset",t)!==void 0)r.push("dash-offset");if(N(n,"pathLength",t)!==void 0)r.push("path-length");if(N(n,"paintOrder",t)!==void 0)r.push("paint-order");if(/^url\(#[A-Za-z_][A-Za-z0-9_.:-]*\)$/.test(n.color))r.push("gradient-paint");if(N(n,"mixBlendMode",t)!==void 0&&N(n,"mixBlendMode",t)!=="normal")r.push("mix-blend-mode");if(N(n,"nonScaling",t))r.push("non-scaling-stroke");return r}function gt(e,n=false){if(n&&e.geometry.kind==="path")throw new TypeError("Deferred terminal projections require line or polyline geometry");const t=Gl(e.route,e.stroke,n);const r=Ys(e.geometry,e.route.closed);const i=Hs(e.geometry,e.route.closed);const o=N(e.stroke,"dash",n);const s={start:N(e.markers,"start",n)?r.starts.map(a=>({markerId:N(e.markers,"start",n).id,point:{...a.point},contourIndex:a.contourIndex})):[],mid:e.markers.mid.length===0?[]:i.map((a,c)=>({markerId:(e.markers.mid.length===1?e.markers.mid[0]:e.markers.mid[c]).id,point:{...a.point},contourIndex:a.contourIndex})),end:N(e.markers,"end",n)?r.ends.map(a=>({markerId:N(e.markers,"end",n).id,point:{...a.point},contourIndex:a.contourIndex})):[]};return{realization:e.lineStyle==="invisible"?"unsupported":"projected",topology:e.geometry.kind,geometry:e.geometry,direction:e.relationship.direction,relationship:e.relationship.kind,markers:{...N(e.markers,"start",n)?{start:Si(N(e.markers,"start",n),n)}:{},mid:e.markers.mid.map(a=>Si(a,n)),...N(e.markers,"end",n)?{end:Si(N(e.markers,"end",n),n)}:{}},markerPlacements:s,endpoints:{...e.endpoints,...N(e.endpoints,"start",n)?{start:ca(N(e.endpoints,"start",n),n)}:{},...N(e.endpoints,"end",n)?{end:ca(N(e.endpoints,"end",n),n)}:{}},route:{ownership:e.route.ownership,closed:e.route.closed,bendRadius:e.route.bendRadius,contours:e.route.contours.map(a=>({...a,start:{...a.start},end:{...a.end},...N(a,"startTangent",n)?{startTangent:{...N(a,"startTangent",n)}}:{},...N(a,"endTangent",n)?{endTangent:{...N(a,"endTangent",n)}}:{}})),...N(e.route,"startTangent",n)?{startTangent:{...N(e.route,"startTangent",n)}}:{},...N(e.route,"endTangent",n)?{endTangent:{...N(e.route,"endTangent",n)}}:{},labelAnchors:e.route.labelAnchors.map(a=>({...a}))},stroke:{...e.stroke,...o?{dash:{...o,array:Array.isArray(o.array)?[...o.array]:o.array}}:{}},hit:{...e.hit,geometry:e.hit.geometry},...N(e,"transform",n)?{transform:{...N(e,"transform",n)}}:{},labels:e.labels.map(a=>({...a,...N(a,"anchor",n)?{anchor:{...N(a,"anchor",n)}}:{},...N(a,"bounds",n)?{bounds:{...N(a,"bounds",n)}}:{},...N(a,"halo",n)?{halo:{...N(a,"halo",n)}}:{},...N(a,"paint",n)?{paint:{...N(a,"paint",n)}}:{},...N(a,"visual",n)?{visual:{...N(a,"visual",n)}}:{}})),lineStyle:e.lineStyle,strokeLosses:t,diagnostics:[e.lineStyle==="invisible"?"This connector affects layout but is intentionally absent from terminal output.":`The terminal grid preserves connector semantics while projecting continuous stroke fields: ${t.join(", ")}.`,...N(e,"additionalDiagnostics",n)??[]]}}var Dn=new WeakMap;var ki=0;function zg(e){ki++;try{return e()}finally{ki--}}var ir={enumerable:true,configurable:true,get(){const e=Dn.get(this);if(Object.hasOwn(e,"projection"))return e.projection;const n=gt(e,true);Dn.set(this,{projection:n});return n},set(e){if(Object.isFrozen(this))throw new TypeError("Cannot assign to readonly terminalProjection");Object.defineProperty(this,"terminalProjection",{value:e,enumerable:true,configurable:true,writable:true});Dn.delete(this)}};function da(e,n){Dn.set(e,n);Object.defineProperty(e,"terminalProjection",ir)}function la(e,n){if(ki===0||n.geometry.kind==="path"||n.additionalDiagnostics!==void 0&&!n.additionalDiagnostics.every(t=>typeof t==="string")){e.terminalProjection=gt(n);return}if(n.additionalDiagnostics)Object.defineProperty(n,"additionalDiagnostics",{value:Object.freeze([...n.additionalDiagnostics])});da(e,Object.freeze(n))}function yt(e){const n=Dn.get(e);if(!n||Object.hasOwn(n,"projection"))return void 0;const t=Object.getOwnPropertyDescriptor(e,"terminalProjection");return t?.get===ir.get?n:void 0}function ua(e,n,t){const r=Dn.get(e);return n==="terminalProjection"&&r&&t.get===ir.get?ir.get.call(e):void 0}function fa(e,n){const t=yt(e);if(!t)return false;da(n,t);return true}function pa(e,n){const t=[...e].map(o=>o.codePointAt(0));const r=[...n].map(o=>o.codePointAt(0));const i=Math.min(t.length,r.length);for(let o=0;o<i;o++){const s=t[o]-r[o];if(s!==0)return s}return t.length-r.length}function or(e,n,t){const r=t*Math.PI/180;const i=Math.cos(r);const o=Math.sin(r);const s=e.x-n.x;const a=e.y-n.y;return{x:n.x+s*i-a*o,y:n.y+s*o+a*i}}function ma(e,n,t){if(t%360===0)return{...e};const r=[or({x:e.x0,y:e.y0},n,t),or({x:e.x1,y:e.y0},n,t),or({x:e.x0,y:e.y1},n,t),or({x:e.x1,y:e.y1},n,t)];return{x0:Math.min(...r.map(i=>i.x)),y0:Math.min(...r.map(i=>i.y)),x1:Math.max(...r.map(i=>i.x)),y1:Math.max(...r.map(i=>i.y))}}function ar(e){if(e.length===0)return void 0;return{x0:Math.min(...e.map(n=>n.x)),y0:Math.min(...e.map(n=>n.y)),x1:Math.max(...e.map(n=>n.x)),y1:Math.max(...e.map(n=>n.y))}}function J(e,n){if(!e)return n;if(!n)return e;return{x0:Math.min(e.x0,n.x0),y0:Math.min(e.y0,n.y0),x1:Math.max(e.x1,n.x1),y1:Math.max(e.y1,n.y1)}}function Bn(e,n){const t=Number.isFinite(n)?Math.max(0,n):0;return{x0:e.x0-t,y0:e.y0-t,x1:e.x1+t,y1:e.y1+t}}function ba(e,n,t){const r=/[+-]?(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?/y;let i=0,o=0,s=0,a=0,c=0;let d="",l="";let u;let m;let f;let g=false;const b=S=>{if(t){for(let y=0;y<S;y++)if(!t()){g=true;return false}}return true};const h=()=>{while(i<e.length&&/[\s,]/.test(e[i])){if(!b(1))return;i++}};const k=(S=false)=>{h();if(g)return void 0;if(S){const R=e[i];if(R!=="0"&&R!=="1")return void 0;if(!b(1))return void 0;i++;return Number(R)}r.lastIndex=i;const y=r.exec(e);if(!y)return void 0;if(!b(y[0].length))return void 0;i=r.lastIndex;const E=Number(y[0]);return Number.isFinite(E)?E:void 0};const x=(S,y)=>{if(!Number.isFinite(S)||!Number.isFinite(y))return false;m=J(m,{x0:S,y0:y,x1:S,y1:y});if(n)f=J(f,{x0:S,y0:y,x1:S,y1:y});return true};while(true){h();if(g)return void 0;if(i>=e.length)return m;if(/[a-zA-Z]/.test(e[i])){if(!b(1))return void 0;d=e[i++];if(!/[MmLlHhVvCcSsQqTtAaZz]/.test(d)||!m&&d.toUpperCase()!=="M")return void 0;if(d.toUpperCase()==="Z"){if(n&&!n({bounds:{x0:Math.min(o,a),y0:Math.min(s,c),x1:Math.max(o,a),y1:Math.max(s,c)},line:[{x:o,y:s},{x:a,y:c}]}))return void 0;o=a;s=c;l="Z";u=void 0;d="";continue}}if(!d)return void 0;const S=d.toUpperCase(),y=d!==S;if(n)f={x0:o,y0:s,x1:o,y1:s};const E=S==="A"?7:S==="C"?6:S==="S"||S==="Q"?4:S==="H"||S==="V"?1:2;const R=[];for(let B=0;B<E;B++){const V=k(S==="A"&&(B===3||B===4));if(V===void 0)return void 0;R.push(V)}const w=B=>R[B]+(y?o:0);const I=B=>R[B]+(y?s:0);let O,Y,le;if(S==="H"){O=w(0);Y=s}else if(S==="V"){O=o;Y=I(0)}else if(S==="C"||S==="S"||S==="Q"||S==="T"){const B=u&&(S==="S"?l==="C"||l==="S":l==="Q"||l==="T")?{x:2*o-u.x,y:2*s-u.y}:{x:o,y:s};if((S==="S"||S==="T")&&!x(B.x,B.y))return void 0;for(let V=0;V<E-2;V+=2)if(!x(w(V),I(V+1)))return void 0;O=w(E-2);Y=I(E-1);le=S==="T"?B:{x:w(E-4),y:I(E-3)}}else if(S==="A"){O=w(5);Y=I(6);let B=Math.abs(R[0]),V=Math.abs(R[1]);if(B>0&&V>0&&(O!==o||Y!==s)){const T=R[2]%360*Math.PI/180,_=Math.cos(T),P=Math.sin(T);const ue=(o-O)/2,ee=(s-Y)/2;const Pe=_*ue+P*ee,Ke=-P*ue+_*ee;const wr=Math.hypot(Pe/B,Ke/V);if(wr>1){B*=wr;V*=wr}const Vi=(Pe/B)**2+(Ke/V)**2;const Ui=(R[3]===R[4]?-1:1)*Math.sqrt(Math.max(0,(1-Vi)/Vi));const Gi=Ui*B*Ke/V,Yi=-Ui*V*Pe/B;const Hi=_*Gi-P*Yi+(o+O)/2;const Ki=P*Gi+_*Yi+(s+Y)/2;const Xi=Math.hypot(B*_,V*P),qi=Math.hypot(B*P,V*_);if(!x(Hi-Xi,Ki-qi)||!x(Hi+Xi,Ki+qi))return void 0}}else{O=w(0);Y=I(1);if(S==="M"){a=O;c=Y;d=y?"l":"L"}}if(!x(O,Y))return void 0;if(n&&S!=="M"&&!n({bounds:f,...["L","H","V"].includes(S)?{line:[{x:o,y:s},{x:O,y:Y}]}:{}}))return void 0;o=O;s=Y;u=le;l=S}}function Kg(e,n,t){return ba(e,n,t)!==void 0}function an(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 ar(e.points);case"compound":{let n;for(const t of e.children){const r=an(t);if(!r)return void 0;n=J(n,r)}return n}case"path":return ba(e.d)}}function jn(e,n,t,r=false,i){if(!e||!n)return void 0;const o=e.geometry?an(e.geometry):void 0;if(r&&e.geometry&&!o)return void 0;let s=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(!s)return void 0;if(r){s=J(s,o);const b=zn(e.paint??{},true);if(b===void 0)return void 0;s=Bn(s,b)}let a=e.ref?.x??0;let c=e.ref?.y??0;let d=s;if(e.viewBox&&e.size){const b=Math.min(e.size.width/e.viewBox.width,e.size.height/e.viewBox.height);const h=(e.size.width-e.viewBox.width*b)/2;const k=(e.size.height-e.viewBox.height*b)/2;const x=y=>h+(y-e.viewBox.x)*b;const S=y=>k+(y-e.viewBox.y)*b;d={x0:x(s.x0),y0:S(s.y0),x1:x(s.x1),y1:S(s.y1)};a=x(a);c=S(c)}const l=(e.units??"strokeWidth")==="strokeWidth"?t:1;const u=Math.max(r?1:0,e.scale??1)*l;if(i!==void 0){const b=i*Math.PI/180,h=Math.cos(b),k=Math.sin(b);const x=[[d.x0,d.y0],[d.x0,d.y1],[d.x1,d.y0],[d.x1,d.y1]].map(([S,y])=>({x:n.x+((S-a)*h-(y-c)*k)*u,y:n.y+((S-a)*k+(y-c)*h)*u}));return x.every(S=>Number.isFinite(S.x)&&Number.isFinite(S.y))?ar(x):void 0}const m=Math.max(Math.abs(d.x0-a),Math.abs(d.x1-a));const f=Math.max(Math.abs(d.y0-c),Math.abs(d.y1-c));const g=(r?Math.hypot(m,f):Math.max(m,f))*u;return{x0:n.x-g,y0:n.y-g,x1:n.x+g,y1:n.y+g}}function Xg(e,n){const t=e.route.geometry,r=Mn(t,e.route.closed);const i=In(t,e.route.closed);const o=Sa(n,e.transform);const s=[];const a=(c,d,l,u)=>{if(!d||!l)return;const m=typeof d.orient==="number"?d.orient:u?Math.atan2(u.y,u.x)*180/Math.PI+(c==="start"&&d.orient==="auto-start-reverse"?180:0):void 0;const f=sr(e.stroke.width);const g=jn(d,l,f,true,m);const b=de(o);const h=JSON.stringify([{...d,orient:d.orient??"auto"},m??["unknown",t],d.units==="userSpaceOnUse"?1:f,b.slice(0,4)]);let k,x;if(m!==void 0&&d.geometry?.kind==="polygon"&&d.geometry.points.length<=64){const S=d.viewBox&&d.size?Math.min(d.size.width/d.viewBox.width,d.size.height/d.viewBox.height):1;const y=S*Math.max(1,d.scale??1)*(d.units==="userSpaceOnUse"?1:f);const E=m*Math.PI/180,R=Math.cos(E),w=Math.sin(E);k=d.geometry.points.map(T=>{const _=(T.x-(d.ref?.x??0))*y,P=(T.y-(d.ref?.y??0))*y;return Ee({x:l.x+_*R-P*w,y:l.y+_*w+P*R},b)});const[I,O,Y,le]=b;const B=(Math.hypot(I+le,O-Y)+Math.hypot(I-le,O+Y))/2;const V=zn(d.paint??{},true);x=V===void 0?void 0:V*y*B;if(x===void 0||!Number.isFinite(x)||!k.every(T=>Number.isFinite(T.x)&&Number.isFinite(T.y)))k=void 0}s.push({position:c,resource:d.id,anchor:Ee(l,b),repaint:h,...k?{hull:k,padding:x}:{},...g?{bounds:Ge(g,o)}:{}})};r.starts.forEach((c,d)=>a("start",e.markers.start,c,e.route.contours[d]?.startTangent));r.ends.forEach((c,d)=>a("end",e.markers.end,c,e.route.contours[d]?.endTangent));if(e.markers.mid.length===1)for(const c of i)a("mid",e.markers.mid[0],c);else e.markers.mid.forEach((c,d)=>a("mid",c,i[d]));return s}function sr(e){const n=typeof e==="number"?e:parseFloat(e);return Number.isFinite(n)?Math.max(0,n):1}function Yl(e){const n=e.route.geometry;let t=n.kind==="path"?ar(n.points):an(n);if(!t)return void 0;const r=sr(e.stroke.width);const i=r/2;const o=e.stroke.lineJoin==="miter"||e.stroke.lineJoin==="miter-clip"?i*Math.max(1,e.stroke.miterLimit):i;t=Bn(t,o);const s=Mn(n,e.route.closed);for(const c of s.starts)t=J(t,jn(e.markers.start,c,r));for(const c of s.ends)t=J(t,jn(e.markers.end,c,r));const a=In(n,e.route.closed);if(e.markers.mid.length===1){for(const c of a)t=J(t,jn(e.markers.mid[0],c,r))}else{for(let c=0;c<e.markers.mid.length;c++){t=J(t,jn(e.markers.mid[c],a[c],r))}}for(const c of e.labels){if(c.bounds)t=J(t,c.bounds);t=J(t,xa(c))}return t}var ga=new WeakMap;function ht(e){const n=rt(e.text,e.textContent);const t=typeof n==="string"?n:n.source;if(e.block){const d=e.block;if(d.prepared.source!==t||e.fontSize!==void 0&&e.fontSize!==d.fontSize||e.fontWeight!==void 0&&e.fontWeight!==d.fontWeight||e.letterSpacing!==void 0&&e.letterSpacing!==d.letterSpacing||e.display!==void 0&&e.display!==d.prepared.display){throw new TypeError("Connector inline label typography and source must agree with its prepared block")}return d}const r=e.fontSize??12;const i=e.fontWeight??400;const o=e.letterSpacing??0;const s=e.display??"literal";const a=ga.get(e);if(a&&(typeof n==="string"?a.prepared.source===t:a.prepared===n)&&a.fontSize===r&&a.fontWeight===i&&a.letterSpacing===o&&a.prepared.display===s)return a;const c=mt(n,{display:s,fontSize:r,fontWeight:i,letterSpacing:o});ga.set(e,c);return c}function xa(e){if(e.visual?.kind!=="inline"||!e.anchor||e.fontSize===void 0||e.textAnchor===void 0)return void 0;const n=ht(e);const t=n.width;const r=e.textAnchor==="middle"?e.anchor.x-t/2:e.textAnchor==="end"?e.anchor.x-t:e.anchor.x;const i=e.anchor.y-Math.max(0,e.clearance??0);const o=Math.max(0,e.halo?.width??0)/2;return Bn({x0:r,y0:i-n.fontSize*.35-n.height/2,x1:r+t,y1:i-n.fontSize*.35+n.height/2},o)}function Ei(e){let n;if(e.kind==="shape")n=an(e.geometry);else if(e.kind==="connector")n=Yl(e);else if(e.kind==="text"){const t=e.textLayout??mt(e.text,{display:e.display,fontSize:e.fontSize,fontWeight:e.fontWeight??500,letterSpacing:e.letterSpacing});const r=t.width;const i=e.anchor==="middle"?e.x-r/2:e.anchor==="end"?e.x-r:e.x;const o="offsetY"in t?t.offsetY:-e.fontSize*.35;n={x0:i,y0:e.y+o-t.height/2,x1:i+r,y1:e.y+o+t.height/2}}else return void 0;return n?Ge(n,e.transform):void 0}function Ge(e,n){if(![e.x0,e.y0,e.x1,e.y1].every(Number.isFinite))return void 0;if(!n)return e;if(n.kind==="rotate")return ma(e,{x:n.cx,y:n.cy},n.angle);const t=de(n);const r=e.x0,i=e.y0,o=e.x0,s=e.y1,a=e.x1,c=e.y0,d=e.x1,l=e.y1;if(t[0]===1&&t[1]===0&&t[2]===0&&t[3]===1&&r===o&&i===c&&a===d&&s===l&&r!==0&&i!==0&&a!==0&&s!==0&&Number.isFinite(r)&&Number.isFinite(i)&&Number.isFinite(a)&&Number.isFinite(s)){const m=Ee({x:r,y:i},t),f=Ee({x:d,y:l},t);return Number.isFinite(m.x)&&Number.isFinite(m.y)&&Number.isFinite(f.x)&&Number.isFinite(f.y)?{x0:Math.min(m.x,f.x),y0:Math.min(m.y,f.y),x1:Math.max(m.x,f.x),y1:Math.max(m.y,f.y)}:void 0}const u=[[r,i],[o,s],[a,c],[d,l]].map(([m,f])=>Ee({x:m,y:f},t));return u.every(m=>Number.isFinite(m.x)&&Number.isFinite(m.y))?ar(u):void 0}function Sa(e,n){if(!e)return n;if(!n)return e;const[t,r,i,o,s,a]=rn(de(e),de(n));return{kind:"matrix",a:t,b:r,c:i,d:o,e:s,f:a}}function Hl(e){return e.geometry.kind!=="line"&&!(e.geometry.kind==="polyline"&&e.geometry.points.length===2&&!e.closed)}function zn(e,n){if(e.stroke===void 0||e.stroke==="none"||e.stroke==="transparent"||ie(e.stroke)?.[3]===0)return 0;const t=e.strokeWidth??"1";if(!/^\s*(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?(?:px)?\s*$/.test(t))return void 0;const r=Number.parseFloat(t)/2;if(!Number.isFinite(r))return void 0;const i=e.strokeLinejoin??"miter";const o=Number(e.strokeMiterlimit??4);if(!Number.isFinite(o)||o<1)return void 0;const s=n&&(i==="miter"||i==="miter-clip")?r*o:r;const a=Math.max(s,e.strokeLinecap==="square"?r*Math.SQRT2:r);return Number.isFinite(a)?a:void 0}function Ci(e,n,t,r){if(!t)return Ge(Bn(e,n),r);const i=Ge(e,r);return i?Bn(i,n):void 0}function Kl(e,n,t){const r=an(e);const i=Math.hypot(e.x2-e.x1,e.y2-e.y1);if(t!==void 0&&t!=="butt"||i===0)return Bn(r,n);const o=n*Math.abs(e.y2-e.y1)/i,s=n*Math.abs(e.x2-e.x1)/i;return{x0:r.x0-o,y0:r.y0-s,x1:r.x1+o,y1:r.y1+s}}function ya(e,n,t,r,i,o){return e.kind==="line"&&!i?Ge(Kl(e,t,r),o):Ci(n,t,i,o)}function Xl(e,n){if(!/^[\s,0-9eE.+\-MC]+$/.test(e))return void 0;const t=e.match(/[MC]|[+-]?(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?/g);if(!t||t.length!==10||t[0]!=="M"||t[3]!=="C")return void 0;const r=t.filter(k=>k!=="M"&&k!=="C").map(Number);if(!r.every(Number.isFinite))return void 0;const[i,o,s,a,c,d,l,u]=r;if(s!==c||a!==o||d!==u||!((s-i)*(l-s)>0))return void 0;const m=Math.abs(s-i),f=Math.abs(l-s),g=Math.abs(u-o),b=Math.sign(l-i);const h=[i-b*ha(f,m,g,n),l+b*ha(m,f,g,n)];return{x0:Math.min(...h),y0:Math.min(o,u)-n,x1:Math.max(...h),y1:Math.max(o,u)+n}}function ha(e,n,t,r){const i=32;let o=0;for(let s=0;s<i;s++){const a=s/i,c=(s+1)/i;const d=g=>Math.min(c,Math.max(a,g));const l=g=>3*(e*(1-g)**2+n*g*g);const u=g=>e*(1-g)**2+n*(1+g+g*g);const m=6*t*Math.min(a*(1-a),c*(1-c));const f=6*r*t*c/Math.hypot(l(d(e/(e+n))),m)-u(d((2*e-n)/(2*(e+n))));if(f>0)o=Math.max(o,(1-a)*f)}return Math.min(r,o)}function ql(e,n){const t=e.route.geometry;const r=an(t);const i=zn({stroke:e.stroke.color,strokeWidth:String(e.stroke.width),strokeLinecap:e.stroke.lineCap,strokeLinejoin:e.stroke.lineJoin,strokeMiterlimit:String(e.stroke.miterLimit)},Hl(e.route));if(!r||i===void 0)return void 0;const o=t.kind==="path"&&e.stroke.lineCap==="butt"&&!e.stroke.nonScaling?Xl(t.d,sr(e.stroke.width)/2):void 0;let s=o?Ge(o,n):Ci(r,i,e.stroke.nonScaling,n);if(!s)return void 0;const a=sr(e.stroke.width);const c=Mn(t,e.route.closed);const d=In(t,e.route.closed);const l=[...c.starts.flatMap(u=>e.markers.start?[{marker:e.markers.start,anchor:u}]:[]),...c.ends.flatMap(u=>e.markers.end?[{marker:e.markers.end,anchor:u}]:[]),...e.markers.mid.length===1?d.map(u=>({marker:e.markers.mid[0],anchor:u})):e.markers.mid.map((u,m)=>({marker:u,anchor:d[m]}))];for(const{marker:u,anchor:m}of l){const f=jn(u,m,a,true);const g=f&&Ge(f,n);if(!g)return void 0;s=J(s,g)}for(const u of e.labels){const m=J(u.bounds,xa(u));if(u.visual?.kind==="inline"&&!m)return void 0;if(m){const f=Ge(m,n);if(!f)return void 0;s=J(s,f)}}return s}function qg(e,n){return ka(e,n)}function ka(e,n){const t=Sa(n,e.transform);if(t&&!tr(de(t)))return void 0;let r;if(e.kind==="shape"){r=an(e.geometry);if(!r)return void 0;const i=["polygon","polyline","path","compound"].includes(e.geometry.kind);let o;for(const c of[e.paint,...e.childPaints??[]]){const d=zn(c,i);const l=d===void 0?void 0:ya(e.geometry,r,d,c.strokeLinecap,c.vectorEffect==="non-scaling-stroke",t);if(!l)return void 0;o=o?J(o,l):l}if(!e.conditionalPaint)return o;const s=zn(e.conditionalPaint,["polygon","polyline","path","compound"].includes(e.geometry.kind));if(!o||s===void 0)return void 0;const a=ya(e.geometry,r,s,e.conditionalPaint.strokeLinecap,e.conditionalPaint.vectorEffect==="non-scaling-stroke",t);return a?J(o,a):void 0}else if(e.kind==="connector"){return ql(e,t)}else if(e.kind==="text"){r=Ei({...e,transform:void 0});const i=zn(e.paint,false);if(!r||i===void 0)return void 0;return Ci(r,i,e.paint.vectorEffect==="non-scaling-stroke",t)}else if(e.kind==="group"){for(const i of e.children){if(i.node.kind==="document"&&i.node.nonPaint)continue;const o=ka(i.node,t);if(!o)return void 0;r=J(r,o)}}else return void 0;return r}var Ln=class{value="";raw(n){this.value+=n}attribute(n,t){this.value+=` ${n}="${typeof t==="number"?U(t):j(nt(n,t))}"`}};var cr=new Set(["id","role","from","to","relationship","direction","prepared-text","font-metrics","text-fragment","connector-label-for"]);var dr=/^[A-Za-z0-9_-]+(?: [A-Za-z0-9_-]+)*$/;var lr=/^[a-z][a-z0-9-]*$/;function wi(e,n){if(!n)return;if(n.className)e.attribute("class",n.className);if(n.data)for(const t of Object.keys(n.data))e.attribute(`data-${t}`,n.data[t]);if(n.ariaHidden)e.attribute("aria-hidden","true");if(n.tabIndex===0)e.attribute("tabindex",0);if(n.ariaLabel!==void 0)e.attribute("aria-label",n.ariaLabel)}function Ti(e,n){if(n.fill!==void 0)e.attribute("fill",n.fill);if(n.fillOpacity!==void 0)e.attribute("fill-opacity",n.fillOpacity);if(n.stroke!==void 0)e.attribute("stroke",n.stroke);if(n.strokeOpacity!==void 0)e.attribute("stroke-opacity",n.strokeOpacity);if(n.strokeWidth!==void 0)e.attribute("stroke-width",n.strokeWidth);if(n.strokeDasharray!==void 0)e.attribute("stroke-dasharray",n.strokeDasharray);if(n.strokeDashoffset!==void 0)e.attribute("stroke-dashoffset",n.strokeDashoffset);if(n.strokeLinecap!==void 0)e.attribute("stroke-linecap",n.strokeLinecap);if(n.strokeLinejoin!==void 0)e.attribute("stroke-linejoin",n.strokeLinejoin);if(n.strokeMiterlimit!==void 0)e.attribute("stroke-miterlimit",n.strokeMiterlimit);if(n.vectorEffect!==void 0)e.attribute("vector-effect",n.vectorEffect);if(n.paintOrder!==void 0)e.attribute("paint-order",n.paintOrder);if(n.opacity!==void 0)e.attribute("opacity",n.opacity)}function ur(e,n){if(n)e.attribute("transform",Xs(n))}function Ri(e,n,t){if(n&&sn(n.role)){e.attribute("data-id",n.id);e.attribute("data-role",n.role);if(n.from!==void 0)e.attribute("data-from",n.from);if(n.to!==void 0)e.attribute("data-to",n.to)}if(t){e.attribute("role",t.role);e.attribute("aria-roledescription",t.roleDescription);e.attribute("aria-label",t.label)}}function Ea(e,n){switch(n.kind){case"rect":e.attribute("x",n.x);e.attribute("y",n.y);e.attribute("width",n.width);e.attribute("height",n.height);if(n.rx!==void 0)e.attribute("rx",n.rx);if(n.ry!==void 0)e.attribute("ry",n.ry);return;case"circle":e.attribute("cx",n.cx);e.attribute("cy",n.cy);e.attribute("r",n.r);return;case"ellipse":e.attribute("cx",n.cx);e.attribute("cy",n.cy);e.attribute("rx",n.rx);e.attribute("ry",n.ry);return;case"line":e.attribute("x1",n.x1);e.attribute("y1",n.y1);e.attribute("x2",n.x2);e.attribute("y2",n.y2);return;case"polygon":case"polyline":{let t="";for(let r=0;r<n.points.length;r++){const i=n.points[r];t+=`${r?" ":""}${i.x},${i.y}`}e.attribute("points",t);return}case"path":e.attribute("d",n.d)}}function Ca(e){const n=new Ln;const t=e.geometry.kind==="compound";const r=e.geometry.kind==="compound"?e.geometry.children:[e.geometry];for(let i=0;i<r.length;i++){const o=r[i];if(o.kind==="compound")throw new TypeError(`Shape "${e.id}" nests compound geometry`);if(i)n.raw("\n");n.raw(`<${o.kind}`);if(i===0)wi(n,e.attributes);Ea(n,o);Ti(n,t?e.childPaints?.[i]??e.paint:e.paint);ur(n,e.transform);if(i===0)Ri(n,e.identity,e.accessibility);n.raw(" />")}return n.value}function Jl(e,n){e.attribute("text-anchor",n.anchor);if(n.dominantBaseline)e.attribute("dominant-baseline",n.dominantBaseline);if(n.block?.fontFamily)e.attribute("font-family",n.block.fontFamily);e.attribute("font-size",n.fontSize);e.attribute("font-weight",n.fontWeight??n.block?.fontWeight??400);if((n.letterSpacing??0)!==0)e.attribute("letter-spacing",n.letterSpacing);if(n.fontStyle)e.attribute("font-style",n.fontStyle);if(n.textDecoration)e.attribute("text-decoration",n.textDecoration)}function wa(e){const n=new Ln;wi(n,e.attributes);Jl(n,e);Ti(n,e.paint);ur(n,e.transform);Ri(n,e.identity,e.accessibility);const t=n.value.slice(1);const r=e.measurement==="prepared"&&e.block;const i=jr(r?e.block:e.text,e.x,e.y,e.fontSize,t,e.baselineShift??.35,e.display==="literal");if(!e.spans)return i;const o=r?e.block.text:e.text;const s=`>${ae(o)}</text>`;if(!i.endsWith(s))throw new TypeError(`Text "${e.id}" spans require a one-line label`);let a="";for(const c of e.spans)a+=`<tspan fill="${j(c.fill)}">${ae(c.text)}</tspan>`;return`${i.slice(0,-s.length)}>${a}</text>`}function Zl(e,n,t){if(n.visual?.kind!=="inline")return void 0;if(!n.anchor||!n.paint||n.fontSize===void 0||n.textAnchor===void 0){throw new TypeError(`Connector "${e.id}" inline label ${t+1} requires anchor, paint, fontSize, and textAnchor`)}const r=ht(n);const i={...n.paint,...n.halo?{stroke:n.halo.color??"var(--bg)",strokeWidth:String(n.halo.width),paintOrder:"stroke fill"}:{}};const o=new Ln;o.attribute("data-id",n.id??`${e.id}-label-${t+1}`);o.attribute("data-role","label");o.attribute("data-connector-label-for",e.id);o.attribute("font-size",r.fontSize);o.attribute("font-weight",r.fontWeight);if(r.letterSpacing)o.attribute("letter-spacing",r.letterSpacing);o.attribute("text-anchor",n.textAnchor);ur(o,e.transform);Ti(o,i);return jr(r,n.anchor.x,n.anchor.y-Math.max(0,n.clearance??0),r.fontSize,o.value.slice(1),0)}function Ta(e){const n=new Ln;const{stroke:t,markers:r}=e;const i=t.dash;const o=r.mid[0];if(e.lineStyle!=="invisible"){const s=e.route.geometry;n.raw(`<${s.kind}`);wi(n,e.attributes);Ea(n,s);if(s.kind!=="line")n.attribute("fill","none");n.attribute("stroke",t.color);if(t.opacity!==void 0)n.attribute("stroke-opacity",t.opacity);n.attribute("stroke-width",t.width);if(i)n.attribute("stroke-dasharray",typeof i.array==="string"?i.array:i.array.join(" "));if(i?.offset!==void 0)n.attribute("stroke-dashoffset",i.offset);if(t.lineCap!=="butt")n.attribute("stroke-linecap",t.lineCap);if(t.lineJoin!=="miter")n.attribute("stroke-linejoin",t.lineJoin);if(t.miterLimit!==4)n.attribute("stroke-miterlimit",t.miterLimit);if(t.pathLength!==void 0)n.attribute("pathLength",t.pathLength);if(t.paintOrder!==void 0)n.attribute("paint-order",t.paintOrder);if(t.nonScaling)n.attribute("vector-effect","non-scaling-stroke");if(t.mixBlendMode)n.attribute("style",`mix-blend-mode:${t.mixBlendMode}`);if(r.start)n.attribute("marker-start",`url(#${r.start.id})`);if(o)n.attribute("marker-mid",`url(#${o.id})`);if(r.end)n.attribute("marker-end",`url(#${r.end.id})`);if(e.hit.pointerEvents==="none")n.attribute("pointer-events","none");ur(n,e.transform);n.attribute("data-relationship",e.relationship.kind);n.attribute("data-direction",e.relationship.direction);Ri(n,e.identity,e.accessibility);n.raw(" />")}for(let s=0;s<e.labels.length;s++){const a=Zl(e,e.labels[s],s);if(a!==void 0){if(n.value)n.raw("\n");n.raw(a)}}return n.value}function ry(e,n,t,r,i){const o=Ql(i,t/2,r);if(o===0)return`M${e},${n} H${e+t} V${n+r} H${e} Z`;return[`M${e+o},${n}`,`H${e+t-o}`,`A${o},${o} 0 0 1 ${e+t},${n+o}`,`V${n+r}`,`H${e}`,`V${n+o}`,`A${o},${o} 0 0 1 ${e+o},${n}`,"Z"].join(" ")}function Ql(e,n,t){return Math.max(0,Math.min(e,n,t))}var Fn=new WeakMap;var Wn=new WeakSet;var Ra=new WeakMap;var Ni=/<\s*text/i;function eu(e){const n=e.match(/^<([A-Za-z_][A-Za-z0-9_.:-]*)/);if(!n||e.startsWith("</")||e.startsWith("<!")||e.startsWith("<?"))return e;const t=n[1];if(t!=="svg")return e;const r=/\/\s*>$/.test(e);const i=r?e.lastIndexOf("/"):e.length-1;const o=[];let s=n[0].length;while(s<i){while(/\s/.test(e[s]??""))s++;if(s>=i)break;const d=e.slice(s).match(/^([^\s=<>/]+)/);if(!d)return e;const l=d[1];s+=d[0].length;while(/\s/.test(e[s]??""))s++;if(e[s]!=="=")return e;s++;while(/\s/.test(e[s]??""))s++;const u=e[s];if(u!=='"'&&u!=="'")return e;s++;const m=s;while(s<i&&e[s]!==u)s++;if(e[s]!==u)return e;const f=e.slice(m,s);s++;o.push({name:l,value:u==='"'?f:f.replaceAll('"',"""),index:o.length})}const a=new Map([["xmlns",0],["width",1],["height",2],["viewBox",3],["style",4]]);o.sort((d,l)=>{const u=a.get(d.name)??100;const m=a.get(l.name)??100;return u-m||pa(d.name,l.name)||d.index-l.index});const c=o.map(d=>`${d.name}="${d.value}"`).join(" ");return`<${t}${c?` ${c}`:""}${r?" /":""}>`}function Ce(e){if(!e.includes("<svg"))return e;let n="";let t=0;while(t<e.length){const r=e.indexOf("<",t);if(r<0)return n+e.slice(t);n+=e.slice(t,r);if(e.startsWith("<!--",r)){const s=e.indexOf("-->",r+4);if(s<0)return n+e.slice(r);n+=e.slice(r,s+3);t=s+3;continue}let i;let o=r+1;for(;o<e.length;o++){const s=e[o];if(i){if(s===i)i=void 0}else if(s==='"'||s==="'"){i=s}else if(s===">"){break}}if(o>=e.length)return n+e.slice(r);n+=eu(e.slice(r,o+1));t=o+1}return n}function Vn(e,n){if(e.kind!=="document")throw new TypeError(`Scene ${e.kind} "${e.id}" is written from its fields, not stored markup`);Fn.set(e,Ce(n));return e}function bt(e){Wn.add(e);return e}function z(e){const n=Fn.get(e);if(n!==void 0)return n;if(!Wn.has(e))throw new TypeError(`Scene node "${e.id}" has no admitted SVG serialization`);const t=Ra.get(e);if(t!==void 0)return t;const r=nu(e);if(e.kind!=="group"&&Object.isFrozen(e))Ra.set(e,r);return r}function nu(e){switch(e.kind){case"shape":return Ca(e);case"text":return wa(e);case"connector":return Ta(e);case"group":return[e.open,...e.children.map(n=>xt(z(n.node),n.indent)),e.close].join(e.join);case"document":throw new TypeError(`Scene node "${e.id}" has no admitted SVG serialization`)}}function xt(e,n){if(n<=0||e==="")return e;const t=" ".repeat(n);return t+e.replace(/\n/g,`
|
|
49
|
-
${t}`)}function St(e,n){const t=Fn.get(e);if(t!==void 0)Fn.set(n,t);if(Wn.has(e))Wn.add(n)}function Na(e){return Fn.has(e)||Wn.has(e)}function ay(e){const n=t=>{if(t.kind==="document"){const r=Fn.get(t);return r!==void 0&&!Ni.test(r)}if(!Wn.has(t))return false;switch(t.kind){case"text":return t.measurement==="prepared"&&t.block!==void 0;case"shape":return true;case"connector":return true;case"group":return!Ni.test(t.open)&&!Ni.test(t.close)&&t.children.every(r=>n(r.node))}};return e.parts.every(n)}var tu=2;var G=Object.freeze({maxExtent:1e6,maxNodes:1e5,maxDepth:64,maxTextLength:1e6,maxTextBytes:2e6,maxPoints:5e4,maxSerializationBytesPerNode:5e6,maxAggregateSerializationBytes:16e6,maxFinalSvgBytes:8e6});var Z=class extends Error{constructor(t){super(`Scene validation failed: ${t.map(r=>`${r.path}: ${r.message}`).join("; ")}`);this.diagnostics=t;this.name="SceneValidationError"}diagnostics;code="SCENE_VALIDATION_FAILED"};var mr=G.maxExtent;var W=G.maxNodes;var Gn=G.maxDepth;var cn=G.maxTextLength;var fr=G.maxTextBytes;var Yn=G.maxPoints;var gr=G.maxSerializationBytesPerNode;var ru=G.maxAggregateSerializationBytes;var pr=G.maxFinalSvgBytes;var iu=/^[A-Za-z0-9][A-Za-z0-9_.:/-]*$/;var _i=/^[a-z0-9][a-z0-9._/-]*:[a-z0-9][a-z0-9._/-]*$/i;var _a=/^(?:none|[-+]?\d*\.?\d+(?:[eE][-+]?\d+)?(?:[\s,]+[-+]?\d*\.?\d+(?:[eE][-+]?\d+)?)*)$/;var ou=/[\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]/;var su=/^([-+]?\d*\.?\d+(?:[eE][-+]?\d+)?)(?:px)?$/;var au=/^([-+]?\d*\.?\d+(?:[eE][-+]?\d+)?)$/;var cu=/^var\(--[a-z0-9_-]+(?:,\s*[-+]?\d*\.?\d+)?\)$/i;var du="MmLlHhVvCcSsQqTtAaZz";var lu=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});var $i=/[-+]?(?:(?:\d+(?:\.\d*)?)|(?:\.\d+))(?:[eE][-+]?\d+)?/y;var uu=["fill","stroke","strokeWidth","strokeDasharray","strokeDashoffset","strokeLinecap","strokeLinejoin","strokeMiterlimit","vectorEffect","paintOrder","opacity"];function yr(e,n="final SVG"){if(typeof e!=="string")throw new TypeError(`${n} must be a string`);if(e.length*3<=pr)return;if(!ze("final-svg-budget",e,()=>te(e,pr)<=pr)){throw new RangeError(`${n} exceeds the ${pr}-byte final SVG limit`)}}function C(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function p(e,n,t,r){e.push({code:n,path:t,message:r})}function Q(e,n,t,r){const i=new Set(n);for(const o of Object.keys(e)){if(!i.has(o))p(r,"SCENE_DOCUMENT",`${t}.${o}`,"is not part of the external Scene contract")}}function fu(e,n=false){let t=0;let r;let i=false;let o=0;const s=()=>{while(t<e.length&&(e[t]===","||/\s/.test(e[t])))t++};const a=()=>{const d=e[t];return d!==void 0&&du.includes(d)?d:void 0};const c=()=>{s();$i.lastIndex=t;const d=$i.exec(e);if(!d)return"expected a numeric path parameter";t=$i.lastIndex;const l=Number(d[0]);if(!Number.isFinite(l))return`path parameter ${d[0]} is not finite`;if(Math.abs(l)>mr)return`path parameter ${d[0]} exceeds ${mr} user units`;return void 0};while(true){s();if(t>=e.length)break;const d=a();if(d!==void 0){r=d;t++;if(!i&&r!=="M"&&r!=="m"){return"must start with an M or m moveto command"}if(i&&n&&(r==="M"||r==="m")){return"multiple moveto subpaths require typed subpath geometry"}i=true;if(r==="Z"||r==="z"){r=void 0;continue}}else if(r===void 0){return"path parameters must follow a command"}const l=lu[r];if(l===void 0||l===0)return`unknown path command ${String(r)}`;let u=0;while(true){s();if(t>=e.length||a()!==void 0){if(u===0)return`command ${r} requires ${l} parameters`;break}for(let m=0;m<l;m++){s();if(t>=e.length||a()!==void 0){return`command ${r} ended before its ${l}-parameter group was complete`}if((r==="A"||r==="a")&&(m===3||m===4)){const f=e[t];if(f!=="0"&&f!=="1")return`command ${r} arc flags must be 0 or 1`;t++}else{const f=c();if(f)return f}}u++;if(++o>Yn)return`contains more than ${Yn} path parameter groups`}}return i?void 0:"must contain an M or m moveto command"}function $(e,n,t,r={}){if(typeof e!=="number"||!Number.isFinite(e)){p(t,"SCENE_FINITE",n,"must be a finite number");return false}if(r.positive&&e<=0)p(t,"SCENE_BOUNDS",n,"must be positive");if(r.nonNegative&&e<0)p(t,"SCENE_BOUNDS",n,"must be non-negative");if(Math.abs(e)>mr)p(t,"SCENE_BOUNDS",n,`must not exceed ${mr} user units`);return true}function H(e,n,t,r={}){if(typeof e!=="string"){p(t,"SCENE_ID",n,"must be a string");return false}if(!r.empty&&e.length===0)p(t,"SCENE_ID",n,"must not be empty");if(e.length>(r.max??256))p(t,"SCENE_ID",n,"is too long");if(ou.test(e))p(t,"SCENE_ID",n,"contains a control character");if(r.externalId&&!iu.test(e))p(t,"SCENE_ID",n,"must use the safe external id grammar");return true}function me(e,n,t,r={}){if(e===void 0)return;if(typeof e!=="string"&&typeof e!=="number"){p(t,"SCENE_PAINT",n,"must be a finite numeric value");return}const i=typeof e==="string"?e.trim():void 0;const o=i?.match(r.length?su:au);const s=typeof e==="number"?e:o?Number(o[1]):Number.NaN;if(!Number.isFinite(s)){if(typeof e==="string"&&cu.test(e.trim()))return;p(t,"SCENE_PAINT",n,`must be a finite number or safe numeric custom-property reference (received ${JSON.stringify(e)})`)}else if(r.nonNegative&&s<0){p(t,"SCENE_PAINT",n,"must be non-negative")}else if(r.unitInterval&&(s<0||s>1)){p(t,"SCENE_PAINT",n,"must be in [0,1]")}}function Ye(e,n,t,r=false){if(!C(e)){p(t,"SCENE_PAINT",n,"must be a paint object");return}if(r)Q(e,uu,n,t);for(const i of["fill","stroke"]){const o=e[i];const s=hr(o);if(o!==void 0&&ce(o)===void 0&&(r||!s)){p(t,"SCENE_PAINT",`${n}.${i}`,"must be a safe non-fetching CSS paint")}}me(e.strokeWidth,`${n}.strokeWidth`,t,{nonNegative:true,length:true});me(e.strokeDashoffset,`${n}.strokeDashoffset`,t,{length:true});me(e.strokeMiterlimit,`${n}.strokeMiterlimit`,t,{nonNegative:true});me(e.opacity,`${n}.opacity`,t,{unitInterval:true});me(e.fillOpacity,`${n}.fillOpacity`,t,{unitInterval:true});me(e.strokeOpacity,`${n}.strokeOpacity`,t,{unitInterval:true});if(e.strokeDasharray!==void 0&&(typeof e.strokeDasharray!=="string"||!_a.test(e.strokeDasharray.trim()))){p(t,"SCENE_PAINT",`${n}.strokeDasharray`,'must be "none" or a finite numeric dash list')}if(e.strokeLinecap!==void 0&&!["butt","round","square"].includes(String(e.strokeLinecap))){p(t,"SCENE_PAINT",`${n}.strokeLinecap`,"must be butt, round, or square")}if(e.strokeLinejoin!==void 0&&!["arcs","bevel","miter","miter-clip","round"].includes(String(e.strokeLinejoin))){p(t,"SCENE_PAINT",`${n}.strokeLinejoin`,"must be arcs, bevel, miter, miter-clip, or round")}if(e.vectorEffect!==void 0&&!["none","non-scaling-stroke"].includes(String(e.vectorEffect))){p(t,"SCENE_PAINT",`${n}.vectorEffect`,"must be none or non-scaling-stroke")}if(e.paintOrder!==void 0){const i=typeof e.paintOrder==="string"?e.paintOrder.trim().split(/\s+/).filter(Boolean).map(s=>s.toLowerCase()):[];const o=i.length===1&&i[0]==="normal"||i.length>=1&&i.length<=3&&new Set(i).size===i.length&&i.every(s=>["fill","stroke","markers"].includes(s));if(!o)p(t,"SCENE_PAINT",`${n}.paintOrder`,"must be normal or one to three unique fill, stroke, and markers keywords")}}function pu(e,n,t){if(!C(e)){p(t,"SCENE_DOCUMENT",n,"must be an attribute hook object");return}Q(e,["className","data","ariaHidden","tabIndex","ariaLabel"],n,t);if(e.className!==void 0&&(typeof e.className!=="string"||!dr.test(e.className))){p(t,"SCENE_DOCUMENT",`${n}.className`,"must be space-separated CSS class tokens")}if(e.ariaHidden!==void 0&&e.ariaHidden!==true)p(t,"SCENE_DOCUMENT",`${n}.ariaHidden`,"must be true when present");if(e.tabIndex!==void 0&&e.tabIndex!==0)p(t,"SCENE_DOCUMENT",`${n}.tabIndex`,"must be 0 when present");if(e.ariaLabel!==void 0)H(e.ariaLabel,`${n}.ariaLabel`,t,{max:cn});if(e.data===void 0)return;if(!C(e.data)){p(t,"SCENE_DOCUMENT",`${n}.data`,"must be a string record");return}for(const[r,i]of Object.entries(e.data)){if(!lr.test(r)||cr.has(r))p(t,"SCENE_DOCUMENT",`${n}.data.${r}`,"must be a family data-* key the writer does not own");H(i,`${n}.data.${r}`,t,{empty:true,max:cn})}}function hr(e){const n=typeof e==="string"?/^url\(#([A-Za-z_][A-Za-z0-9_.:-]*)\)$/.exec(e.trim()):null;return n?.[1]}function Et(e,n,t,r,i,o,s,a){if(!e||typeof r!=="string"||e[t])return;const c=Math.max(0,s-e[n]);const d=te(r,c);if(d>c){e[n]=s+1;e[t]=true;p(o,"SCENE_BOUNDS",i,`${a} exceed the aggregate ${s}-byte limit`)}else{e[n]+=d}}function mu(e,n,t){if(!e||e.pointsExceeded)return;if(++e.points>Yn){e.pointsExceeded=true;p(t,"SCENE_BOUNDS",n,`Scene points exceed the aggregate ${Yn}-point limit`)}}function be(e,n,t,r,i=false){if(!C(e)){p(t,"SCENE_FINITE",n,"must be a point object");return}if(i)Q(e,["x","y"],n,t);mu(r,n,t);$(e.x,`${n}.x`,t);$(e.y,`${n}.y`,t)}function Oi(e,n,t){if(!C(e)||typeof e.x!=="number"||typeof e.y!=="number")return;const r=Math.hypot(e.x,e.y);if(!Number.isFinite(r)||Math.abs(r-1)>1e-9){p(t,"SCENE_FINITE",n,"must be a finite unit vector")}}function kt(e,n,t,r,i,o=false){if(!Array.isArray(e)){p(t,"SCENE_FINITE",n,"must be an array of points");return}if(e.length<r)p(t,"SCENE_BOUNDS",n,`must contain at least ${r} points`);if(i?.pointCollections.has(e))return;i?.pointCollections.add(e);if(e.length>W)p(t,"SCENE_BOUNDS",n,"contains too many points");const s=Math.min(e.length,W,i?Math.max(0,Yn-i.points+1):W);for(let a=0;a<s;a++)be(e[a],`${n}[${a}]`,t,i,o)}function Un(e,n,t,r=false,i=0,o,s=false){if(i>Gn){p(t,"SCENE_BOUNDS",n,`geometry exceeds maximum nesting depth ${Gn}`);return}if(!C(e)||typeof e.kind!=="string"){p(t,"SCENE_DOCUMENT",n,"must be a typed geometry object");return}if(s){const a={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"]};const c=a[e.kind];if(c)Q(e,c,n,t)}switch(e.kind){case"rect":$(e.x,`${n}.x`,t);$(e.y,`${n}.y`,t);$(e.width,`${n}.width`,t,{nonNegative:true});$(e.height,`${n}.height`,t,{nonNegative:true});if(e.rx!==void 0)$(e.rx,`${n}.rx`,t,{nonNegative:true});if(e.ry!==void 0)$(e.ry,`${n}.ry`,t,{nonNegative:true});return;case"circle":$(e.cx,`${n}.cx`,t);$(e.cy,`${n}.cy`,t);$(e.r,`${n}.r`,t,{nonNegative:true});return;case"ellipse":$(e.cx,`${n}.cx`,t);$(e.cy,`${n}.cy`,t);$(e.rx,`${n}.rx`,t,{nonNegative:true});$(e.ry,`${n}.ry`,t,{nonNegative:true});return;case"line":$(e.x1,`${n}.x1`,t);$(e.y1,`${n}.y1`,t);$(e.x2,`${n}.x2`,t);$(e.y2,`${n}.y2`,t);return;case"polygon":kt(e.points,`${n}.points`,t,3,o,s);return;case"polyline":kt(e.points,`${n}.points`,t,2,o,s);return;case"path":if(typeof e.d!=="string"||e.d.length===0||e.d.length>cn){p(t,"SCENE_SECURITY",`${n}.d`,"must use bounded SVG path data")}else{const a=fu(e.d,s&&!r);if(a)p(t,"SCENE_SECURITY",`${n}.d`,`must use semantic SVG path data: ${a}`)}if(e.points!==void 0)kt(e.points,`${n}.points`,t,2,o,s);if(e.markerMidpoints!==void 0){kt(e.markerMidpoints,`${n}.markerMidpoints`,t,0,o,s)}if(e.subpaths!==void 0){if(!Array.isArray(e.subpaths)||e.subpaths.length===0){p(t,"SCENE_BOUNDS",`${n}.subpaths`,"must be a non-empty array of typed contours")}else{for(let a=0;a<Math.min(e.subpaths.length,W);a++){const c=e.subpaths[a];if(!C(c)){p(t,"SCENE_DOCUMENT",`${n}.subpaths[${a}]`,"must be a typed contour");continue}kt(c.points,`${n}.subpaths[${a}].points`,t,2,o,s);if(typeof c.closed!=="boolean")p(t,"SCENE_DOCUMENT",`${n}.subpaths[${a}].closed`,"must be boolean")}}}return;case"compound":if(!Array.isArray(e.children)){p(t,"SCENE_BOUNDS",`${n}.children`,"must be a geometry array");return}if(e.children.length>W)p(t,"SCENE_BOUNDS",`${n}.children`,"contains too many geometries");for(let a=0;a<Math.min(e.children.length,W);a++){Un(e.children[a],`${n}.children[${a}]`,t,r,i+1,o,s)}return;default:p(t,"SCENE_DOCUMENT",`${n}.kind`,`unknown geometry kind "${e.kind}"`)}}function gu(e,n,t){if(e===void 0)return;if(!C(e)){p(t,"SCENE_DOCUMENT",n,"must be a semantic channel object");return}for(const r of["importance","value","progress"]){if(e[r]!==void 0)$(e[r],`${n}.${r}`,t)}if(typeof e.progress==="number"&&(e.progress<0||e.progress>1)){p(t,"SCENE_BOUNDS",`${n}.progress`,"must be in [0,1]")}for(const r of["category","status","route"]){if(e[r]!==void 0)H(e[r],`${n}.${r}`,t,{max:4096})}if(e.emphasis!==void 0&&typeof e.emphasis!=="boolean"){p(t,"SCENE_DOCUMENT",`${n}.emphasis`,"must be boolean")}}function $a(e,n,t,r,i){if(!C(e)){p(t,"SCENE_MARKER",n,"must be a marker descriptor");return false}if(r){Q(e,["id","shape","geometry","size","viewBox","ref","bounds","units","orient","overflow","paint","scale"],n,t)}H(e.id,`${n}.id`,t,{externalId:r});if(!["arrow","open-arrow","circle","cross","triangle","diamond","diamond-open"].includes(String(e.shape))){p(t,"SCENE_MARKER",`${n}.shape`,"must be a known marker shape")}Un(e.geometry,`${n}.geometry`,t,true,0,i,r);if(r&&C(e.geometry)&&e.geometry.kind==="compound"&&(!Array.isArray(e.geometry.children)||e.geometry.children.length===0)){p(t,"SCENE_BOUNDS",`${n}.geometry.children`,"external marker compounds must contain geometry")}if(C(e.size)){if(r)Q(e.size,["width","height"],`${n}.size`,t);$(e.size.width,`${n}.size.width`,t,{positive:true});$(e.size.height,`${n}.size.height`,t,{positive:true})}if(C(e.ref))be(e.ref,`${n}.ref`,t,i,r);if(e.paint!==void 0)Ye(e.paint,`${n}.paint`,t,r);if(C(e.viewBox)){if(r)Q(e.viewBox,["x","y","width","height"],`${n}.viewBox`,t);$(e.viewBox.x,`${n}.viewBox.x`,t);$(e.viewBox.y,`${n}.viewBox.y`,t);$(e.viewBox.width,`${n}.viewBox.width`,t,{positive:true});$(e.viewBox.height,`${n}.viewBox.height`,t,{positive:true})}if(C(e.bounds)){if(r)Q(e.bounds,["x0","y0","x1","y1"],`${n}.bounds`,t);for(const o of["x0","y0","x1","y1"])$(e.bounds[o],`${n}.bounds.${o}`,t);if(typeof e.bounds.x0==="number"&&typeof e.bounds.x1==="number"&&e.bounds.x0>e.bounds.x1){p(t,"SCENE_BOUNDS",`${n}.bounds`,"x0 must not exceed x1")}if(typeof e.bounds.y0==="number"&&typeof e.bounds.y1==="number"&&e.bounds.y0>e.bounds.y1){p(t,"SCENE_BOUNDS",`${n}.bounds`,"y0 must not exceed y1")}}if(e.scale!==void 0)$(e.scale,`${n}.scale`,t,{nonNegative:true});if(e.units!==void 0&&!["strokeWidth","userSpaceOnUse"].includes(String(e.units))){p(t,"SCENE_MARKER",`${n}.units`,"must be strokeWidth or userSpaceOnUse")}if(typeof e.orient==="number")$(e.orient,`${n}.orient`,t);else if(e.orient!==void 0&&!["auto","auto-start-reverse"].includes(String(e.orient))){p(t,"SCENE_MARKER",`${n}.orient`,"must be auto, auto-start-reverse, or a finite angle")}if(e.overflow!==void 0&&!["hidden","visible"].includes(String(e.overflow))){p(t,"SCENE_MARKER",`${n}.overflow`,"must be hidden or visible")}try{Yt(e)}catch(o){p(t,"SCENE_MARKER",n,o instanceof Error?o.message:String(o))}return typeof e.id==="string"}function yu(e,n,t,r){if(typeof n!=="string"){p(r.diagnostics,"SCENE_ROLE",t,"must be a Scene role string");return false}const i=Object.prototype.hasOwnProperty.call(Cn,n);if(!i&&!_i.test(n)){p(r.diagnostics,"SCENE_ROLE",t,"must be a built-in or namespaced Scene role");return false}if(!wn(n).applicableKinds.includes(e)){p(r.diagnostics,"SCENE_ROLE",t,`role "${n}" is not applicable to ${e} marks`)}return true}function Aa(e,n,t){let r;try{r=z(e);if(te(r,gr)>gr){p(t.diagnostics,"SCENE_DOCUMENT",n,"has an oversized SVG serialization")}}catch(i){p(t.diagnostics,"SCENE_DOCUMENT",n,i instanceof Error?i.message:String(i))}if(t.aggregateBudgets&&r!==void 0){Et(t.budget,"serializationBytes","serializationExceeded",r,n,t.diagnostics,ru,"Scene serializations")}return r}function Ai(e,n,t,r,i){if(r>Gn){p(t.diagnostics,"SCENE_BOUNDS",n,`exceeds maximum nesting depth ${Gn}`);return}if(++t.nodeCount>W){if(t.nodeCount===W+1)p(t.diagnostics,"SCENE_BOUNDS",n,"contains too many Scene nodes");return}if(!C(e)||typeof e.kind!=="string"){p(t.diagnostics,"SCENE_DOCUMENT",n,"must be a typed Scene node");return}const o=e.kind;bu(e,n,t.paintReferences);if(!["shape","connector","text","group","document"].includes(o)){p(t.diagnostics,"SCENE_DOCUMENT",`${n}.kind`,`unknown Scene node kind "${o}"`);return}if(t.external&&r>0&&o==="document"){p(t.diagnostics,"SCENE_DOCUMENT",n,`${o} marks must be top-level document furniture`)}if(t.external){const a=["kind","id","role","identity","accessibility","channels","transform","owner"];const c={shape:[...a,"geometry","paint"],text:[...a,"text","x","y","fontSize","anchor","baselineShift","paint","fontWeight","letterSpacing","display","textLayout","block","measurement","prepared"],group:[...a,"open","close","children","join"],"document":[...a,"element","text","domId","markerResources"],connector:[...a,"lineStyle","endpoints","relationship","route","stroke","markers","labels","hit","terminalProjection"]};Q(e,c[o],n,t.diagnostics)}if(H(e.id,`${n}.id`,t.diagnostics,{externalId:t.external})){const a=t.ids.get(e.id);if(t.external&&a)p(t.diagnostics,"SCENE_ID",`${n}.id`,`duplicates ${a.path}`);else t.ids.set(e.id,{path:`${n}.id`,kind:o})}if(e.domId!==void 0&&H(e.domId,`${n}.domId`,t.diagnostics,{externalId:t.external})){const a=t.domIds.get(e.domId);const c=t.markerIds.get(e.domId);const d=t.gradientIds.get(e.domId);if(t.external&&a)p(t.diagnostics,"SCENE_ID",`${n}.domId`,`duplicates DOM id owned by ${a}`);else if(t.external&&c)p(t.diagnostics,"SCENE_ID",`${n}.domId`,`collides with marker resource "${e.domId}"`);else if(d)p(t.diagnostics,"SCENE_ID",`${n}.domId`,`collides with gradient resource "${e.domId}"`);else t.domIds.set(e.domId,`${n}.domId`)}yu(o,e.role,`${n}.role`,t);if(typeof e.id==="string"&&typeof e.role==="string")t.subjects.add(JSON.stringify([e.id,e.role]));if(C(e.identity)&&typeof e.identity.id==="string"&&typeof e.identity.role==="string")t.subjects.add(JSON.stringify([e.identity.id,e.identity.role]));if(C(e.owner)&&typeof e.owner.id==="string"&&typeof e.owner.role==="string")t.ownerReferences.push({key:JSON.stringify([e.owner.id,e.owner.role]),path:`${n}.owner`});gu(e.channels,`${n}.channels`,t.diagnostics);const s=!t.native||o==="document"?Aa(e,n,t):void 0;if(e.transform!==void 0){if(!C(e.transform)||!["rotate","matrix"].includes(String(e.transform.kind))){p(t.diagnostics,"SCENE_DOCUMENT",`${n}.transform`,"must be a rotate or matrix transform")}else{const a=e.transform.kind==="matrix"?["a","b","c","d","e","f"]:["angle","cx","cy"];for(const c of a)$(e.transform[c],`${n}.transform.${c}`,t.diagnostics)}if(t.external)p(t.diagnostics,"SCENE_DOCUMENT",`${n}.transform`,"external Scene transforms are not exposed by the declarative builder")}if(e.owner!==void 0){if(!C(e.owner))p(t.diagnostics,"SCENE_REFERENCE",`${n}.owner`,"must be a semantic owner");else{H(e.owner.id,`${n}.owner.id`,t.diagnostics);if(typeof e.owner.role!=="string"||!Object.hasOwn(Cn,e.owner.role)&&!_i.test(e.owner.role))p(t.diagnostics,"SCENE_ROLE",`${n}.owner.role`,"must be a Scene role")}}if(e.visibility!==void 0&&e.visibility!=="conditional")p(t.diagnostics,"SCENE_DOCUMENT",`${n}.visibility`,"must be conditional");if(e.attributes!==void 0)pu(e.attributes,`${n}.attributes`,t.diagnostics);if(o==="shape"){if(e.identity===void 0&&typeof e.role==="string"&&sn(e.role)){if(t.native&&typeof e.id==="string"&&C(e.owner)&&typeof e.owner.id==="string"&&e.owner.role===e.role){t.native.artwork.push({id:e.id,owner:{id:e.owner.id,role:e.role},path:`${n}.identity`})}else if(!i||!C(e.owner)||e.role!==i.role||e.owner.id!==i.id||e.owner.role!==i.role){p(t.diagnostics,"SCENE_FIDELITY",`${n}.identity`,"owned artwork without DOM identity must be inside its matching semantic group")}}if(e.surfaceFragment!==void 0&&typeof e.surfaceFragment!=="boolean"){p(t.diagnostics,"SCENE_DOCUMENT",`${n}.surfaceFragment`,"must be boolean")}Un(e.geometry,`${n}.geometry`,t.diagnostics,false,0,t.budget,t.external);if(t.external&&C(e.geometry)&&(e.geometry.kind==="path"||e.geometry.kind==="compound")){p(t.diagnostics,"SCENE_BOUNDS",`${n}.geometry`,"external shapes must use a directly bounded structured geometry")}Ye(e.paint,`${n}.paint`,t.diagnostics,t.external);if(e.childPaints!==void 0){if(!Array.isArray(e.childPaints)||!C(e.geometry)||e.geometry.kind!=="compound"||!Array.isArray(e.geometry.children)||e.childPaints.length!==e.geometry.children.length){p(t.diagnostics,"SCENE_PAINT",`${n}.childPaints`,"must give one paint per compound geometry child")}else e.childPaints.forEach((a,c)=>Ye(a,`${n}.childPaints[${c}]`,t.diagnostics,t.external))}if(e.conditionalPaint!==void 0){if(e.visibility!=="conditional")p(t.diagnostics,"SCENE_DOCUMENT",`${n}.conditionalPaint`,"requires an explicit conditional state");Ye(e.conditionalPaint,`${n}.conditionalPaint`,t.diagnostics,t.external)}return}if(o==="text"){H(e.text,`${n}.text`,t.diagnostics,{empty:true,max:cn});if(t.aggregateBudgets)Et(t.budget,"textBytes","textExceeded",e.text,`${n}.text`,t.diagnostics,fr,"Scene text values");$(e.x,`${n}.x`,t.diagnostics);$(e.y,`${n}.y`,t.diagnostics);$(e.fontSize,`${n}.fontSize`,t.diagnostics,{positive:true});if(e.fontWeight!==void 0)$(e.fontWeight,`${n}.fontWeight`,t.diagnostics,{positive:true});if(e.letterSpacing!==void 0)$(e.letterSpacing,`${n}.letterSpacing`,t.diagnostics);if(e.display!==void 0&&e.display!=="literal"&&e.display!=="formatted")p(t.diagnostics,"SCENE_DOCUMENT",`${n}.display`,"must be literal or formatted");if(e.measurement!==void 0&&!["prepared","fallback"].includes(String(e.measurement)))p(t.diagnostics,"SCENE_DOCUMENT",`${n}.measurement`,"must identify prepared or fallback measurement");if(e.measurement==="prepared"&&(!C(e.block)||e.block.unit!=="px"||!C(e.block.prepared)))p(t.diagnostics,"SCENE_DOCUMENT",`${n}.block`,"prepared text must retain its actual pixel block");if(C(e.block)){if(!rr(e.block))p(t.diagnostics,"SCENE_FIDELITY",`${n}.block`,"must retain the actual immutable pixel text preparation");for(const a of["fontSize","fontWeight","letterSpacing"]){if(e[a]!==void 0&&e[a]!==e.block[a])p(t.diagnostics,"SCENE_FIDELITY",`${n}.block.${a}`,"must equal the retained text typography")}for(const a of["width","height","fontSize","fontWeight","lineHeight"])$(e.block[a],`${n}.block.${a}`,t.diagnostics,{nonNegative:true});if(C(e.textLayout)&&(e.block.width!==e.textLayout.width||e.block.height!==e.textLayout.height||e.block.lineHeight!==e.textLayout.lineHeight))p(t.diagnostics,"SCENE_FIDELITY",`${n}.textLayout`,"retained block differs from occupied text geometry")}if(e.textLayout!==void 0){if(!C(e.textLayout))p(t.diagnostics,"SCENE_DOCUMENT",`${n}.textLayout`,"must be measured text geometry");else{if(t.external)Q(e.textLayout,["width","height","lineHeight","offsetY"],`${n}.textLayout`,t.diagnostics);$(e.textLayout.width,`${n}.textLayout.width`,t.diagnostics,{nonNegative:true});$(e.textLayout.height,`${n}.textLayout.height`,t.diagnostics,{nonNegative:true});$(e.textLayout.lineHeight,`${n}.textLayout.lineHeight`,t.diagnostics,{positive:true});$(e.textLayout.offsetY,`${n}.textLayout.offsetY`,t.diagnostics)}}if(!["start","middle","end"].includes(String(e.anchor)))p(t.diagnostics,"SCENE_DOCUMENT",`${n}.anchor`,"must be start, middle, or end");if(e.baselineShift!==void 0)$(e.baselineShift,`${n}.baselineShift`,t.diagnostics);if(e.dominantBaseline!==void 0&&!["middle","central","hanging"].includes(String(e.dominantBaseline)))p(t.diagnostics,"SCENE_DOCUMENT",`${n}.dominantBaseline`,"must be middle, central, or hanging");if(e.fontStyle!==void 0&&e.fontStyle!=="italic")p(t.diagnostics,"SCENE_DOCUMENT",`${n}.fontStyle`,"must be italic");if(e.textDecoration!==void 0&&!["underline","line-through","underline line-through"].includes(String(e.textDecoration)))p(t.diagnostics,"SCENE_DOCUMENT",`${n}.textDecoration`,"must be underline, line-through, or both");if(e.spans!==void 0){if(!Array.isArray(e.spans)||e.spans.length===0)p(t.diagnostics,"SCENE_DOCUMENT",`${n}.spans`,"must be a non-empty run list");else{if(e.spans.length>W)p(t.diagnostics,"SCENE_BOUNDS",`${n}.spans`,"contains too many text runs");for(let a=0;a<Math.min(e.spans.length,W);a++){const c=e.spans[a];if(!C(c)){p(t.diagnostics,"SCENE_DOCUMENT",`${n}.spans[${a}]`,"must be a painted run");continue}H(c.text,`${n}.spans[${a}].text`,t.diagnostics,{empty:true,max:cn});if(t.aggregateBudgets)Et(t.budget,"textBytes","textExceeded",c.text,`${n}.spans[${a}].text`,t.diagnostics,fr,"Scene text values");Ye({fill:c.fill},`${n}.spans[${a}]`,t.diagnostics,t.external)}}}Ye(e.paint,`${n}.paint`,t.diagnostics,t.external);return}if(o==="group"){if(t.native&&typeof e.role==="string"&&sn(e.role)&&C(e.identity)&&typeof e.identity.id==="string"&&e.identity.role===e.role){t.native.groups.add(JSON.stringify([e.identity.id,e.role]))}if(e.paint!==void 0){Ye(e.paint,`${n}.paint`,t.diagnostics,t.external);if(C(e.paint))Q(e.paint,["opacity","fill"],`${n}.paint`,t.diagnostics)}if(!Array.isArray(e.children)){p(t.diagnostics,"SCENE_DOCUMENT",`${n}.children`,"must be an array");return}if(e.children.length>W)p(t.diagnostics,"SCENE_BOUNDS",`${n}.children`,"contains too many Scene nodes");const a=Math.min(e.children.length,Math.max(0,W-t.nodeCount+1));const c=typeof e.role==="string"&&sn(e.role)?C(e.identity)&&typeof e.identity.id==="string"&&e.identity.role===e.role?{id:e.identity.id,role:e.role}:void 0:i;for(let d=0;d<a;d++){const l=e.children[d];if(!C(l))p(t.diagnostics,"SCENE_DOCUMENT",`${n}.children[${d}]`,"must wrap a Scene node");else{$(l.indent,`${n}.children[${d}].indent`,t.diagnostics,{nonNegative:true});Ai(l.node,`${n}.children[${d}].node`,t,r+1,c)}}if(t.external&&(typeof e.open!=="string"||!/^<g(?:\s|>)/.test(e.open)||e.close!=="</g>")){p(t.diagnostics,"SCENE_SECURITY",n,"external containers must use a generated <g> wrapper")}return}if(o==="document"){if(e.nonPaint!==void 0){const a={accessibility:["title","desc"],stylesheet:["style"],"interaction-metadata":["title","desc"]};const c=a[String(e.nonPaint)];if(e.element!=="content"||!c||s===void 0||Be(s).some(d=>!c.includes(d.name))){p(t.diagnostics,"SCENE_DOCUMENT",`${n}.nonPaint`,"must describe only closed non-painting metadata elements")}}if(!["open","title","description","definitions","content","close"].includes(String(e.element))){p(t.diagnostics,"SCENE_DOCUMENT",`${n}.element`,"has an unknown document element")}if(e.markerResources!==void 0){if(!Array.isArray(e.markerResources))p(t.diagnostics,"SCENE_MARKER",`${n}.markerResources`,"must be an array");else{if(e.markerResources.length>W)p(t.diagnostics,"SCENE_BOUNDS",`${n}.markerResources`,"contains too many marker resources");for(let a=0;a<Math.min(e.markerResources.length,W);a++){if(t.native&&t.markerIds.size>=W){p(t.diagnostics,"SCENE_BOUNDS",`${n}.markerResources`,"contains too many aggregate marker resources");return}const c=e.markerResources[a];const d=`${n}.markerResources[${a}]`;if($a(c,d,t.diagnostics,t.external,t.budget)&&typeof c.id==="string"){const l=t.markerIds.get(c.id);const u=t.domIds.get(c.id);if(l)p(t.diagnostics,"SCENE_MARKER",`${d}.id`,`duplicates marker resource "${c.id}"`);else if(t.external&&u)p(t.diagnostics,"SCENE_ID",`${d}.id`,`collides with DOM id owned by ${u}`);else if(t.gradientIds.has(c.id))p(t.diagnostics,"SCENE_ID",`${d}.id`,`collides with gradient resource "${c.id}"`);else t.markerIds.set(c.id,c)}}if(t.external&&e.element==="definitions"){try{const a=Ce(`<defs>
|
|
50
|
-
${Jr(e.markerResources)}
|
|
51
|
-
</defs>`);if(s!==a)p(t.diagnostics,"SCENE_FIDELITY",n,"definitions must be generated from the typed marker resources")}catch{}}}}if(e.gradientResources!==void 0){if(e.element!=="definitions")p(t.diagnostics,"SCENE_PAINT",`${n}.gradientResources`,"are only valid on a definitions document mark");if(!Array.isArray(e.gradientResources))p(t.diagnostics,"SCENE_PAINT",`${n}.gradientResources`,"must be an array");else{if(e.gradientResources.length>X.maxResources)p(t.diagnostics,"SCENE_BOUNDS",`${n}.gradientResources`,`contains more than ${X.maxResources} gradient resources`);for(let a=0;a<Math.min(e.gradientResources.length,X.maxResources);a++){if(t.native&&t.gradientIds.size>=X.maxResources){p(t.diagnostics,"SCENE_BOUNDS",`${n}.gradientResources`,`contains more than ${X.maxResources} aggregate gradient resources`);return}const c=e.gradientResources[a];const d=`${n}.gradientResources[${a}]`;try{gi(c);const l=c;if(t.gradientIds.has(l.id)||t.markerIds.has(l.id)||t.domIds.has(l.id)){p(t.diagnostics,"SCENE_ID",`${d}.id`,`duplicates SVG resource id "${l.id}"`)}else{t.gradientIds.set(l.id,l)}}catch(l){p(t.diagnostics,"SCENE_PAINT",d,l instanceof Error?l.message:String(l))}}if(e.element==="definitions"){try{const a=[...Array.isArray(e.markerResources)&&e.markerResources.length>0?[Jr(e.markerResources)]:[],...e.gradientResources.length>0?[Qs(e.gradientResources)]:[]].join("\n");const c=Ce(`<defs>
|
|
52
|
-
${a}
|
|
53
|
-
</defs>`);if(s!==c)p(t.diagnostics,"SCENE_FIDELITY",n,"definitions must be generated from typed resources")}catch{}}}}if(t.aggregateBudgets&&(e.element==="title"||e.element==="description")){H(e.text,`${n}.text`,t.diagnostics,{empty:true,max:cn});Et(t.budget,"textBytes","textExceeded",e.text,`${n}.text`,t.diagnostics,fr,"Scene text values")}if(t.external&&e.element==="close"&&s!=="</svg>"){p(t.diagnostics,"SCENE_SECURITY",n,"external document close must be canonical")}return}if(!["solid","dotted","dashed","thick","invisible"].includes(String(e.lineStyle))){p(t.diagnostics,"SCENE_DOCUMENT",`${n}.lineStyle`,"has an unknown line style")}if(C(e.endpoints)){for(const a of["from","to"]){if(t.external&&e.endpoints[a]===void 0){p(t.diagnostics,"SCENE_REFERENCE",`${n}.endpoints.${a}`,"is required for external connectors")}else if(e.endpoints[a]!==void 0&&H(e.endpoints[a],`${n}.endpoints.${a}`,t.diagnostics,{externalId:t.external})){t.endpointReferences.push({id:e.endpoints[a],path:`${n}.endpoints.${a}`})}}for(const a of["start","end"]){const c=e.endpoints[a];if(C(c)){if(c.point!==void 0)be(c.point,`${n}.endpoints.${a}.point`,t.diagnostics,t.budget,t.external);if(c.id!==void 0)H(c.id,`${n}.endpoints.${a}.id`,t.diagnostics,{externalId:t.external});if(c.portId!==void 0)H(c.portId,`${n}.endpoints.${a}.portId`,t.diagnostics,{externalId:t.external});if(c.owner!==void 0){const d=`${n}.endpoints.${a}.owner`;if(!C(c.owner))p(t.diagnostics,"SCENE_REFERENCE",d,"must be a semantic owner");else{H(c.owner.id,`${d}.id`,t.diagnostics);if(typeof c.owner.role!=="string"||!Object.hasOwn(Cn,c.owner.role)&&!_i.test(c.owner.role))p(t.diagnostics,"SCENE_ROLE",`${d}.role`,"must be a Scene role");const l=e.endpoints[a==="start"?"from":"to"];if(l!==void 0&&c.owner.id!==l)p(t.diagnostics,"SCENE_FIDELITY",d,"must retain the authored endpoint identity");t.ownerReferences.push({key:JSON.stringify([c.owner.id,c.owner.role]),path:d})}}}}}else p(t.diagnostics,"SCENE_REFERENCE",`${n}.endpoints`,"must be a typed endpoint object");if(C(e.relationship))H(e.relationship.kind,`${n}.relationship.kind`,t.diagnostics,{max:4096});else p(t.diagnostics,"SCENE_DOCUMENT",`${n}.relationship`,"must be a typed relationship");if(C(e.relationship)&&!["forward","reverse","bidirectional","undirected","self"].includes(String(e.relationship.direction))){p(t.diagnostics,"SCENE_DOCUMENT",`${n}.relationship.direction`,"has an unknown connector direction")}if(C(e.route)){Un(e.route.geometry,`${n}.route.geometry`,t.diagnostics,false,0,t.budget,t.external);if(t.external&&C(e.route.geometry)&&e.route.geometry.kind==="path"&&!Array.isArray(e.route.geometry.points)){p(t.diagnostics,"SCENE_BOUNDS",`${n}.route.geometry.points`,"external connector paths require deterministic routed points")}$(e.route.bendRadius,`${n}.route.bendRadius`,t.diagnostics,{nonNegative:true});if(!["authored","layout","family","projected"].includes(String(e.route.ownership))){p(t.diagnostics,"SCENE_DOCUMENT",`${n}.route.ownership`,"has an unknown route ownership")}if(typeof e.route.closed!=="boolean")p(t.diagnostics,"SCENE_DOCUMENT",`${n}.route.closed`,"must be boolean");if(e.route.closed===true&&C(e.route.geometry)&&e.route.geometry.kind!=="path"){p(t.diagnostics,"SCENE_DOCUMENT",`${n}.route.closed`,"closed connector topology requires path geometry")}if(e.route.startTangent!==void 0){be(e.route.startTangent,`${n}.route.startTangent`,t.diagnostics,t.budget,t.external);Oi(e.route.startTangent,`${n}.route.startTangent`,t.diagnostics)}if(e.route.endTangent!==void 0){be(e.route.endTangent,`${n}.route.endTangent`,t.diagnostics,t.budget,t.external);Oi(e.route.endTangent,`${n}.route.endTangent`,t.diagnostics)}if(Array.isArray(e.route.labelAnchors)){if(e.route.labelAnchors.length>W)p(t.diagnostics,"SCENE_BOUNDS",`${n}.route.labelAnchors`,"contains too many points");const a=Math.min(e.route.labelAnchors.length,W,Math.max(0,Yn-t.budget.points+1));for(let c=0;c<a;c++)be(e.route.labelAnchors[c],`${n}.route.labelAnchors[${c}]`,t.diagnostics,t.budget,t.external)}else p(t.diagnostics,"SCENE_DOCUMENT",`${n}.route.labelAnchors`,"must be an array");if(Array.isArray(e.route.contours)){if(e.route.contours.length===0||e.route.contours.length>W){p(t.diagnostics,"SCENE_BOUNDS",`${n}.route.contours`,"must contain a bounded non-empty contour list")}for(let a=0;a<Math.min(e.route.contours.length,W);a++){const c=e.route.contours[a];if(!C(c)){p(t.diagnostics,"SCENE_DOCUMENT",`${n}.route.contours[${a}]`,"must be typed contour semantics");continue}be(c.start,`${n}.route.contours[${a}].start`,t.diagnostics,t.budget,t.external);be(c.end,`${n}.route.contours[${a}].end`,t.diagnostics,t.budget,t.external);if(typeof c.closed!=="boolean")p(t.diagnostics,"SCENE_DOCUMENT",`${n}.route.contours[${a}].closed`,"must be boolean");for(const[d,l]of[["startTangent",c.startTangent],["endTangent",c.endTangent]]){if(l===void 0)continue;const u=`${n}.route.contours[${a}].${d}`;be(l,u,t.diagnostics,t.budget,t.external);Oi(l,u,t.diagnostics)}}}else p(t.diagnostics,"SCENE_DOCUMENT",`${n}.route.contours`,"must be an array")}else p(t.diagnostics,"SCENE_DOCUMENT",`${n}.route`,"must be a typed connector route");if(C(e.stroke)){if(ce(e.stroke.color)===void 0&&(t.external||!hr(e.stroke.color))){p(t.diagnostics,"SCENE_PAINT",`${n}.stroke.color`,"must be a safe non-fetching CSS paint")}me(e.stroke.width,`${n}.stroke.width`,t.diagnostics,{nonNegative:true,length:true});me(e.stroke.opacity,`${n}.stroke.opacity`,t.diagnostics,{unitInterval:true});me(e.stroke.miterLimit,`${n}.stroke.miterLimit`,t.diagnostics,{nonNegative:true});me(e.stroke.pathLength,`${n}.stroke.pathLength`,t.diagnostics,{nonNegative:true});if(!["butt","round","square"].includes(String(e.stroke.lineCap)))p(t.diagnostics,"SCENE_PAINT",`${n}.stroke.lineCap`,"has an unknown line cap");if(!["arcs","bevel","miter","miter-clip","round"].includes(String(e.stroke.lineJoin)))p(t.diagnostics,"SCENE_PAINT",`${n}.stroke.lineJoin`,"has an unknown line join");if(e.stroke.mixBlendMode!==void 0&&!["normal","multiply"].includes(String(e.stroke.mixBlendMode)))p(t.diagnostics,"SCENE_PAINT",`${n}.stroke.mixBlendMode`,"must be normal or multiply");if(typeof e.stroke.nonScaling!=="boolean")p(t.diagnostics,"SCENE_PAINT",`${n}.stroke.nonScaling`,"must be boolean");if(e.stroke.encodesValue!==void 0&&typeof e.stroke.encodesValue!=="boolean")p(t.diagnostics,"SCENE_PAINT",`${n}.stroke.encodesValue`,"must be boolean");if(e.stroke.dash!==void 0){if(!C(e.stroke.dash))p(t.diagnostics,"SCENE_PAINT",`${n}.stroke.dash`,"must be a dash descriptor");else{const a=e.stroke.dash.array;if(typeof a==="string"){if(!_a.test(a.trim()))p(t.diagnostics,"SCENE_PAINT",`${n}.stroke.dash.array`,"must be a finite numeric dash list")}else if(Array.isArray(a)){a.forEach((c,d)=>me(c,`${n}.stroke.dash.array[${d}]`,t.diagnostics,{nonNegative:true}))}else p(t.diagnostics,"SCENE_PAINT",`${n}.stroke.dash.array`,"must be a string or numeric array");me(e.stroke.dash.offset,`${n}.stroke.dash.offset`,t.diagnostics)}}}else p(t.diagnostics,"SCENE_PAINT",`${n}.stroke`,"must be a typed connector stroke");if(C(e.hit)){Un(e.hit.geometry,`${n}.hit.geometry`,t.diagnostics,false,0,t.budget,t.external);$(e.hit.strokeWidth,`${n}.hit.strokeWidth`,t.diagnostics,{nonNegative:true});if(typeof e.hit.closed!=="boolean")p(t.diagnostics,"SCENE_DOCUMENT",`${n}.hit.closed`,"must be boolean");if(!["stroke","none"].includes(String(e.hit.pointerEvents)))p(t.diagnostics,"SCENE_DOCUMENT",`${n}.hit.pointerEvents`,"has unknown pointer-event semantics");if(C(e.route)&&typeof e.route.closed==="boolean"&&typeof e.hit.closed==="boolean"&&e.hit.closed!==e.route.closed){p(t.diagnostics,"SCENE_DOCUMENT",`${n}.hit.closed`,"must match route.closed topology")}}else p(t.diagnostics,"SCENE_DOCUMENT",`${n}.hit`,"must be typed hit geometry");if(Array.isArray(e.labels)){if(e.labels.length>W)p(t.diagnostics,"SCENE_BOUNDS",`${n}.labels`,"contains too many connector labels");for(let a=0;a<Math.min(e.labels.length,W);a++){const c=e.labels[a];if(!C(c)){p(t.diagnostics,"SCENE_DOCUMENT",`${n}.labels[${a}]`,"must be a label descriptor");continue}if(t.external)Q(c,["id","text","anchor","bounds","halo","clearance","paint","fontSize","textAnchor","visual"],`${n}.labels[${a}]`,t.diagnostics);if(c.id!==void 0)H(c.id,`${n}.labels[${a}].id`,t.diagnostics,{externalId:t.external});H(c.text,`${n}.labels[${a}].text`,t.diagnostics,{empty:true,max:cn});if(t.aggregateBudgets)Et(t.budget,"textBytes","textExceeded",c.text,`${n}.labels[${a}].text`,t.diagnostics,fr,"Scene text values");if(c.anchor!==void 0)be(c.anchor,`${n}.labels[${a}].anchor`,t.diagnostics,t.budget,t.external);if(c.bounds!==void 0){if(!C(c.bounds)){p(t.diagnostics,"SCENE_BOUNDS",`${n}.labels[${a}].bounds`,"must be a finite ordered box")}else{if(t.external)Q(c.bounds,["x0","y0","x1","y1"],`${n}.labels[${a}].bounds`,t.diagnostics);for(const d of["x0","y0","x1","y1"])$(c.bounds[d],`${n}.labels[${a}].bounds.${d}`,t.diagnostics);if(typeof c.bounds.x0==="number"&&typeof c.bounds.x1==="number"&&c.bounds.x0>c.bounds.x1){p(t.diagnostics,"SCENE_BOUNDS",`${n}.labels[${a}].bounds`,"x0 must not exceed x1")}if(typeof c.bounds.y0==="number"&&typeof c.bounds.y1==="number"&&c.bounds.y0>c.bounds.y1){p(t.diagnostics,"SCENE_BOUNDS",`${n}.labels[${a}].bounds`,"y0 must not exceed y1")}}}if(c.clearance!==void 0)$(c.clearance,`${n}.labels[${a}].clearance`,t.diagnostics,{nonNegative:true});if(c.block!==void 0&&(!C(c.block)||!rr(c.block)))p(t.diagnostics,"SCENE_FIDELITY",`${n}.labels[${a}].block`,"must retain the actual immutable pixel text preparation");if(c.fontSize!==void 0)$(c.fontSize,`${n}.labels[${a}].fontSize`,t.diagnostics,{positive:true});if(c.fontWeight!==void 0)$(c.fontWeight,`${n}.labels[${a}].fontWeight`,t.diagnostics,{positive:true});if(c.letterSpacing!==void 0)$(c.letterSpacing,`${n}.labels[${a}].letterSpacing`,t.diagnostics);if(c.display!==void 0&&c.display!=="literal"&&c.display!=="formatted"){p(t.diagnostics,"SCENE_DOCUMENT",`${n}.labels[${a}].display`,"must be literal or formatted")}if(c.textAnchor!==void 0&&!["start","middle","end"].includes(String(c.textAnchor))){p(t.diagnostics,"SCENE_DOCUMENT",`${n}.labels[${a}].textAnchor`,"must be start, middle, or end")}if(c.paint!==void 0)Ye(c.paint,`${n}.labels[${a}].paint`,t.diagnostics,t.external);if(c.halo!==void 0){if(!C(c.halo))p(t.diagnostics,"SCENE_DOCUMENT",`${n}.labels[${a}].halo`,"must be a halo descriptor");else{if(t.external)Q(c.halo,["color","width"],`${n}.labels[${a}].halo`,t.diagnostics);$(c.halo.width,`${n}.labels[${a}].halo.width`,t.diagnostics,{nonNegative:true});if(c.halo.color!==void 0&&ce(c.halo.color)===void 0){p(t.diagnostics,"SCENE_PAINT",`${n}.labels[${a}].halo.color`,"must be a safe non-fetching CSS paint")}}}if(c.visual!==void 0){if(!C(c.visual)||!["inline","companion"].includes(String(c.visual.kind))){p(t.diagnostics,"SCENE_DOCUMENT",`${n}.labels[${a}].visual`,"must be inline or companion label ownership")}else if(c.visual.kind==="companion"){const d=`${n}.labels[${a}].visual.markId`;if(H(c.visual.markId,d,t.diagnostics,{externalId:t.external})){t.companionLabelReferences.push({id:c.visual.markId,path:d})}}else if(c.anchor===void 0||c.paint===void 0||c.fontSize===void 0||c.textAnchor===void 0){p(t.diagnostics,"SCENE_DOCUMENT",`${n}.labels[${a}].visual`,"inline labels require anchor, paint, fontSize, and textAnchor")}}}}if(C(e.markers)){if(!Array.isArray(e.markers.mid))p(t.diagnostics,"SCENE_MARKER",`${n}.markers.mid`,"must be an array");if(Array.isArray(e.markers.mid)&&e.markers.mid.length>W)p(t.diagnostics,"SCENE_BOUNDS",`${n}.markers.mid`,"contains too many mid markers");const a=[[e.markers.start,`${n}.markers.start`],[e.markers.end,`${n}.markers.end`]];if(Array.isArray(e.markers.mid)){for(let c=0;c<Math.min(e.markers.mid.length,W);c++){a.push([e.markers.mid[c],`${n}.markers.mid[${c}]`])}}for(const[c,d]of a){if(c===void 0)continue;if($a(c,d,t.diagnostics,t.external,t.budget)&&C(c)&&typeof c.id==="string"){t.markerReferences.push({id:c.id,path:`${d}.id`,marker:c})}}}else p(t.diagnostics,"SCENE_MARKER",`${n}.markers`,"must be a typed marker set");if(!t.external&&!t.crossChecks&&t.native&&yt(e)!==void 0)return;if(C(e.terminalProjection)){if(!["native","emulated","projected","lossy","unsupported"].includes(String(e.terminalProjection.realization))){p(t.diagnostics,"SCENE_DOCUMENT",`${n}.terminalProjection.realization`,"has an unknown realization")}if(!["line","polyline","path"].includes(String(e.terminalProjection.topology)))p(t.diagnostics,"SCENE_DOCUMENT",`${n}.terminalProjection.topology`,"has an unknown topology");Un(e.terminalProjection.geometry,`${n}.terminalProjection.geometry`,t.diagnostics,false,0,void 0,t.external);if(!["forward","reverse","bidirectional","undirected","self"].includes(String(e.terminalProjection.direction)))p(t.diagnostics,"SCENE_DOCUMENT",`${n}.terminalProjection.direction`,"has an unknown direction");if(!["solid","dotted","dashed","thick","invisible"].includes(String(e.terminalProjection.lineStyle)))p(t.diagnostics,"SCENE_DOCUMENT",`${n}.terminalProjection.lineStyle`,"has an unknown line style");for(const a of["labels","strokeLosses","diagnostics"]){if(!Array.isArray(e.terminalProjection[a]))p(t.diagnostics,"SCENE_DOCUMENT",`${n}.terminalProjection.${a}`,"must be an array")}if(!C(e.terminalProjection.markers)||!Array.isArray(e.terminalProjection.markers.mid)){p(t.diagnostics,"SCENE_DOCUMENT",`${n}.terminalProjection.markers`,"must contain a mid-marker array")}if(!C(e.terminalProjection.markerPlacements)){p(t.diagnostics,"SCENE_DOCUMENT",`${n}.terminalProjection.markerPlacements`,"must contain typed start/mid/end marker placements")}else{for(const a of["start","mid","end"]){const c=e.terminalProjection.markerPlacements[a];if(!Array.isArray(c)){p(t.diagnostics,"SCENE_DOCUMENT",`${n}.terminalProjection.markerPlacements.${a}`,"must be an array");continue}for(let d=0;d<Math.min(c.length,W);d++){const l=c[d];if(!C(l)){p(t.diagnostics,"SCENE_DOCUMENT",`${n}.terminalProjection.markerPlacements.${a}[${d}]`,"must be a marker placement");continue}H(l.markerId,`${n}.terminalProjection.markerPlacements.${a}[${d}].markerId`,t.diagnostics,{externalId:t.external});be(l.point,`${n}.terminalProjection.markerPlacements.${a}[${d}].point`,t.diagnostics,void 0,t.external);$(l.contourIndex,`${n}.terminalProjection.markerPlacements.${a}[${d}].contourIndex`,t.diagnostics,{nonNegative:true})}}}for(const a of["endpoints","route","stroke","hit"]){if(!C(e.terminalProjection[a]))p(t.diagnostics,"SCENE_DOCUMENT",`${n}.terminalProjection.${a}`,"must preserve typed connector semantics")}}else p(t.diagnostics,"SCENE_DOCUMENT",`${n}.terminalProjection`,"must be a terminal projection");if(!t.external&&t.crossChecks)hu(e,n,t)}function we(e,n){if(Object.is(e,n))return true;if(Array.isArray(e)||Array.isArray(n)){return Array.isArray(e)&&Array.isArray(n)&&e.length===n.length&&e.every((i,o)=>we(i,n[o]))}if(!C(e)||!C(n))return false;const t=Object.keys(e).filter(i=>e[i]!==void 0).sort();const r=Object.keys(n).filter(i=>n[i]!==void 0).sort();return t.length===r.length&&t.every((i,o)=>i===r[o]&&we(e[i],n[i]))}function hu(e,n,t){if(!C(e.route)||!C(e.stroke)||!C(e.markers)||!Array.isArray(e.markers.mid)||!Array.isArray(e.labels)||!C(e.hit)||!C(e.endpoints)||!C(e.relationship)||!C(e.terminalProjection)||!Array.isArray(e.terminalProjection.diagnostics))return;const r=e;const i=r.route.geometry;const o=Mn(i,r.route.closed);const s=o.starts[0];const a=o.ends.at(-1);for(const[m,f,g]of[["start",r.endpoints.start?.point,s],["end",r.endpoints.end?.point,a]]){if(f&&g&&!re(f,g)){p(t.diagnostics,"SCENE_FIDELITY",`${n}.endpoints.${m}.point`,"must equal the endpoint derived from connector geometry")}}const c=er(i,r.route.closed);if(r.route.contours.length!==c.length){p(t.diagnostics,"SCENE_FIDELITY",`${n}.route.contours`,"must match the geometry-derived contour count")}const d=!Qt(i);for(let m=0;m<Math.min(r.route.contours.length,c.length);m++){const f=r.route.contours[m];const g=c[m];if(!re(f.start,g.start)||!re(f.end,g.end)||f.closed!==g.closed){p(t.diagnostics,"SCENE_FIDELITY",`${n}.route.contours[${m}]`,"must match geometry-derived endpoint topology")}if(d){for(const b of["startTangent","endTangent"]){const h=f[b];const k=g[b];if(h===void 0!==(k===void 0)||h&&k&&!re(h,k,1e-9)){p(t.diagnostics,"SCENE_FIDELITY",`${n}.route.contours[${m}].${b}`,"must match the tangent derived from linear route geometry")}}}}const l=r.route.contours[0]?.startTangent;const u=r.route.contours.at(-1)?.endTangent;for(const[m,f,g]of[["startTangent",r.route.startTangent,l],["endTangent",r.route.endTangent,u]]){if(f===void 0!==(g===void 0)||f&&g&&!re(f,g,1e-9)){p(t.diagnostics,"SCENE_FIDELITY",`${n}.route.${m}`,"must equal the corresponding contour tangent authority")}}try{const m=gt({geometry:i,lineStyle:r.lineStyle,endpoints:r.endpoints,relationship:r.relationship,route:r.route,stroke:r.stroke,markers:r.markers,labels:r.labels,hit:r.hit,...r.transform?{transform:r.transform}:{},additionalDiagnostics:r.terminalProjection.diagnostics.slice(1)});if(!we(r.terminalProjection,m)){p(t.diagnostics,"SCENE_FIDELITY",`${n}.terminalProjection`,"must equal the canonical projection derived from connector semantics")}}catch(m){p(t.diagnostics,"SCENE_FIDELITY",`${n}.terminalProjection`,m instanceof Error?m.message:String(m))}}function Oa(e,n,t){if(!C(e))return;for(const r of["fill","stroke"]){const i=hr(e[r]);if(i)t.push({id:i,path:`${n}.${r}`})}}function bu(e,n,t){if(!C(e))return;if(e.kind==="connector"){if(C(e.stroke)){const r=hr(e.stroke.color);if(r)t.push({id:r,path:`${n}.stroke.color`})}if(Array.isArray(e.labels)){for(let r=0;r<Math.min(e.labels.length,W);r++){const i=e.labels[r];if(C(i))Oa(i.paint,`${n}.labels[${r}].paint`,t)}}}else{Oa(e.paint,`${n}.paint`,t)}}function Te(e,n={}){if(n.mode==="external"||n.mode==="internal")return n.mode;const t=C(e)&&typeof e.family==="string"?Je(e.family):void 0;return t?.kind==="family"?"external":"internal"}function xu(e,n={}){const t=[];Pa(e,false,t);if(Te(e)==="external")p(t,"SCENE_DOCUMENT","scene.family","native admission requires a built-in family");if(t.length>0)throw new Z(t);const r={artwork:[],groups:new Set,enclosures:new Map};const i={...Ia(t,false,n.crossChecks??false,true),native:r};let o;const s=()=>{if(o)throw new Error("Native Scene validation has already finished");if(t.length>0)throw new Z(t)};const a=c=>{s();if(!Number.isInteger(c)||c<0||c>Gn){p(t,"SCENE_BOUNDS","scene.depth",`must be an integer nesting depth between 0 and ${Gn}`);throw new Z(t)}};return{node(c,d=0){s();a(d);if(c.kind==="group"&&(!Array.isArray(c.children)||c.children.length!==0)){p(t,"SCENE_DOCUMENT","scene.parts","native groups must be shallow headers with separately submitted children");throw new Z(t)}const l=`scene.parts[${i.nodeCount}]`;Ai(c,l,i,d);if(t.length>0)throw new Z(t);const u=c.kind==="document"?z(c):Aa(c,l,i);if(t.length>0)throw new Z(t);return u},depth:a,enclosure(c,d){s();H(c,"scene.enclosure.id",t);H(d.id,"scene.enclosure.owner.id",t);const l=r.enclosures.get(c);if(l&&(l.id!==d.id||l.role!==d.role)){p(t,"SCENE_FIDELITY","scene.enclosure","artwork cannot have conflicting semantic enclosures")}else if(r.enclosures.size>=W){p(t,"SCENE_BOUNDS","scene.enclosure","contains too many semantic enclosure relations")}else r.enclosures.set(c,{id:d.id,role:d.role});if(t.length>0)throw new Z(t)},serialization(c){s();if(te(c,gr)>gr){p(t,"SCENE_DOCUMENT","scene.serialization","has an oversized SVG serialization");throw new Z(t)}},finish(){if(o)return o;Ma(i);for(const c of r.artwork){const d=r.enclosures.get(c.id);if(!d||d.id!==c.owner.id||d.role!==c.owner.role||!r.groups.has(JSON.stringify([d.id,d.role]))){p(t,"SCENE_FIDELITY",c.path,"owned artwork without DOM identity must be inside its matching semantic group")}}o=Object.freeze({valid:t.length===0,diagnostics:Object.freeze(t.map(c=>Object.freeze(c)))});return o}}}function Ma(e){for(const n of e.paintReferences){if(!e.gradientIds.has(n.id))p(e.diagnostics,"SCENE_REFERENCE",n.path,`references undeclared gradient "${n.id}"`)}for(const n of e.ownerReferences)if(!e.subjects.has(n.key))p(e.diagnostics,"SCENE_REFERENCE",n.path,"must reference an actual Scene subject identity and role");for(const n of e.companionLabelReferences){const t=e.ids.get(n.id);if(!t)p(e.diagnostics,"SCENE_REFERENCE",n.path,`references unknown companion Text mark "${n.id}"`);else if(t.kind!=="text")p(e.diagnostics,"SCENE_REFERENCE",n.path,`must reference a Text mark; "${n.id}" is a ${t.kind} mark`)}}function Ia(e,n,t,r=n){return{diagnostics:e,external:n,aggregateBudgets:r,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:false,serializationExceeded:false,pointsExceeded:false,pointCollections:new WeakSet},crossChecks:t,nodeCount:0}}function Pa(e,n,t){H(e.family,"scene.family",t);const r=$(e.width,"scene.width",t,n?{positive:true}:{nonNegative:true});const i=$(e.height,"scene.height",t,n?{positive:true}:{nonNegative:true});if(e.transparent!==void 0&&typeof e.transparent!=="boolean")p(t,"SCENE_DOCUMENT","scene.transparent","must be boolean");if(!C(e.colors))p(t,"SCENE_DOCUMENT","scene.colors","must be a DiagramColors object");else{if(n){Q(e.colors,["bg","fg","line","accent","muted","surface","border","font","shadow","embedFontImport"],"scene.colors",t)}for(const o of["bg","fg","line","accent","muted","surface","border"]){if((o==="bg"||o==="fg"||e.colors[o]!==void 0)&&ce(e.colors[o])===void 0){p(t,"SCENE_PAINT",`scene.colors.${o}`,"must be a safe non-fetching CSS paint")}}if(e.colors.font!==void 0&&Sn(e.colors.font)===void 0){p(t,"SCENE_SECURITY","scene.colors.font","must be a safe non-fetching font family")}if(e.colors.shadow!==void 0&&typeof e.colors.shadow!=="boolean"){p(t,"SCENE_DOCUMENT","scene.colors.shadow","must be boolean")}if(e.colors.embedFontImport!==void 0&&typeof e.colors.embedFontImport!=="boolean"){p(t,"SCENE_DOCUMENT","scene.colors.embedFontImport","must be boolean")}}return{widthOk:r,heightOk:i}}function Mi(e,n,t,r){const i=[];if(!C(e)){return Object.freeze({valid:false,diagnostics:Object.freeze([{code:"SCENE_DOCUMENT",path:"scene",message:"must be a Scene document object"}])})}const o=Te(e,n)==="external";if(o&&!r){p(i,"SCENE_DOCUMENT","scene.family","source-only browser admission requires a built-in family");return Object.freeze({valid:false,diagnostics:Object.freeze(i)})}if(o)Q(e,["family","width","height","colors","transparent","parts"],"scene",i);const{widthOk:s,heightOk:a}=Pa(e,o,i);if(!Array.isArray(e.parts)){p(i,"SCENE_DOCUMENT","scene.parts","must be an array")}else{const c=Ia(i,o,t);if(e.parts.length>W)p(i,"SCENE_BOUNDS","scene.parts","contains too many top-level Scene nodes");for(let l=0;l<Math.min(e.parts.length,W);l++){Ai(e.parts[l],`scene.parts[${l}]`,c,0)}const d=o?r.document(e,c,s,a):void 0;Ma(c);if(i.length===0&&o){r.canonical(e,i)}if(i.length===0&&t){const l=e;try{const u=o?d:l.parts.map(z).join("\n");if(u!==void 0)Ht(u,o?"strict":"default")}catch(u){p(i,"SCENE_SECURITY","scene",u instanceof Error?u.message:String(u))}}}return Object.freeze({valid:i.length===0,diagnostics:Object.freeze(i.map(c=>Object.freeze(c)))})}var La={};pc(La,{connector:()=>He,definitions:()=>Pi,documentClose:()=>vi,documentContent:()=>_u,documentOpen:()=>Di,documentText:()=>xr,drawPathArtwork:()=>Ba,group:()=>Hn,indentLines:()=>xt,pathArtwork:()=>Au,shape:()=>dn,text:()=>Ct});import{decodeXML as va}from"entities";function br(e,n){if(!wn(e.role).relation)return void 0;if(e.from===void 0||e.to===void 0)return void 0;const t={from:e.from,to:e.to,...n?{label:n}:{}};return{label:`${t.from} to ${t.to}${t.label?`: ${t.label}`:""}`,role:"graphics-symbol",roleDescription:"relation",relation:t}}function Ii(e,n){if(!n)return;for(const t of Object.keys(n)){if(t!=="className"&&t!=="data"&&t!=="ariaHidden"&&t!=="tabIndex"&&t!=="ariaLabel")throw new TypeError(`Mark "${e}" has unknown attribute hook "${t}"`)}if(n.className!==void 0&&!dr.test(n.className))throw new TypeError(`Mark "${e}" class must be space-separated CSS tokens`);for(const[t,r]of Object.entries(n.data??{})){if(!lr.test(t))throw new TypeError(`Mark "${e}" has an invalid data attribute key "${t}"`);if(cr.has(t))throw new TypeError(`Mark "${e}" data-${t} belongs to its typed fields`);if(typeof r!=="string")throw new TypeError(`Mark "${e}" data-${t} must be a string`)}if(n.ariaHidden!==void 0&&n.ariaHidden!==true)throw new TypeError(`Mark "${e}" ariaHidden must be true when present`);if(n.tabIndex!==void 0&&n.tabIndex!==0)throw new TypeError(`Mark "${e}" tabIndex must be 0 when present`);if(n.ariaLabel!==void 0&&typeof n.ariaLabel!=="string")throw new TypeError(`Mark "${e}" ariaLabel must be a string`)}var Su=/^(?:class|data-[a-z][a-z0-9-]*|role|aria-[a-z]+|tabindex|pointer-events|transform|style)$/;var ku=/^\s*<g\b[^>]*>(?:<title>[^<]*<\/title>)?$/;var Eu=/^\s*(?:--[A-Za-z0-9_-]+\s*:[^;]*(?:;\s*|$))*$/;function Cu(e,n,t){const r=new Set;let i;const o=ku.test(n)?ho(n,"g",(d,l)=>{if(r.has(d))throw new TypeError(`Group "${e}" open has a duplicate "${d}"`);r.add(d);if(!Su.test(d))throw new TypeError(`Group "${e}" open sets "${d}"; paint and geometry belong to typed marks`);if(d==="style"&&!Eu.test(va(l))){throw new TypeError(`Group "${e}" open style may only set custom properties; paint belongs to typed marks`)}if(d==="transform")i=l}):void 0;if(o!=="g")throw new TypeError(`Group "${e}" open must be one <g> tag with an optional <title>`);const s=i===void 0?void 0:va(i);const a=s===void 0?void 0:Ks(s);const c=t?de(t):void 0;if(s!==void 0&&!a)throw new TypeError(`Group "${e}" open has an unsupported transform`);if(!!a!==!!c||a&&c&&a.some((d,l)=>Math.abs(d-c[l])>1e-9*Math.max(1,Math.abs(d)))){throw new TypeError(`Group "${e}" open transform disagrees with its typed transform`)}}function za(e){if(e.identity)return{...e.identity,role:e.role};const n=e.attributes?.className?.split(" ");return{id:e.id,role:e.role,...n?{classNames:n}:{}}}function dn(e){Ii(e.id,e.attributes);if(e.childPaints&&(e.geometry.kind!=="compound"||e.childPaints.length!==e.geometry.children.length)){throw new TypeError(`Shape "${e.id}" child paints must match its compound geometry`)}if(e.identity===false&&e.owner?.role!==e.role)throw new TypeError(`Shape "${e.id}" without DOM identity requires an explicit owner with the same role`);const n=e.identity===false?void 0:za(e);const t=n?br(n,e.attributes?.data?.label):void 0;if(t&&e.attributes?.ariaLabel!==void 0)throw new TypeError(`Shape "${e.id}" takes its aria-label from typed relation accessibility`);return bt({kind:"shape",id:e.id,role:e.role,...n?{identity:n}:{},...e.owner?{owner:e.owner}:{},...e.visibility?{visibility:e.visibility}:{},...t?{accessibility:t}:{},geometry:e.geometry,paint:e.paint,...e.childPaints?{childPaints:e.childPaints}:{},...e.conditionalPaint?{conditionalPaint:e.conditionalPaint}:{},...e.surfaceFragment!==void 0?{surfaceFragment:e.surfaceFragment}:{},...e.channels?{channels:e.channels}:{},...e.transform?{transform:e.transform}:{},...e.attributes?{attributes:e.attributes}:{}})}var wu={id:true,role:true,geometry:true,lineStyle:true,paint:true,identity:true,owner:true,visibility:true,endpoints:true,relationship:true,route:true,stroke:true,markers:true,labels:true,hit:true,terminalProjection:true,channels:true,transform:true,attributes:true};var Tu={start:true,mid:true,end:true};function Da(e,n,t){if(!e||typeof e!=="object"||Array.isArray(e))throw new TypeError(`${t} fields must be an object`);for(const r of Reflect.ownKeys(e)){if(!Object.hasOwn(n,r))throw new TypeError(`unknown ${t} field "${String(r)}"`)}}function Ru(e,n){if(e.kind==="line"){return{start:{point:{x:e.x1,y:e.y1}},end:{point:{x:e.x2,y:e.y2}}}}const t=Ae(e,n);const r=t[0]?.points[0];const i=t.at(-1);const o=i?.closed?i.points[0]:i?.points.at(-1);return{...r?{start:{point:{...r}}}:{},...o?{end:{point:{...o}}}:{}}}function ja(e,n){return n?{...e,...n,...n.owner?{owner:{...n.owner}}:{},...n.point?{point:{...n.point}}:{}}:e??{}}function Nu(e){const n=typeof e==="number"?e:parseFloat(e);return Number.isFinite(n)?Math.max(0,n):1}function $u(e,n,t){if(e.from!==void 0&&e.from===e.to)return"self";if(n&&t)return"bidirectional";if(n)return"reverse";if(t)return"forward";return"undirected"}function Ou(e,n,t,r){if(r.length===0)return void 0;const i=In(n,t).length;if(i===0){throw new RangeError(`Connector "${e}" has mid markers but no typed interior route points`)}if(r.length!==1&&r.length!==i){throw new RangeError(`Connector "${e}" mid markers must contain one repeated descriptor or one descriptor per interior route point`)}const o=new Set(r.map(s=>s.id));if(o.size!==1){throw new RangeError(`Connector "${e}" uses distinct mid markers that one SVG marker-mid carrier cannot represent`)}return r[0].id}function He(e){Da(e,wu,"connector");if(e.markers!==void 0)Da(e.markers,Tu,"marker");if(e.geometry.kind!=="path"&&e.route?.closed===true){throw new TypeError(`Connector "${e.id}" closed route topology requires path geometry`)}if(e.geometry.kind==="path"){const T=e.geometry;const _=T.subpaths;const P=nr(T.d);if(P>1&&!_){throw new TypeError(`Connector "${e.id}" path has multiple SVG subpaths but no typed subpaths`)}if(_){if(_.length===0||_.some(ee=>ee.points.length<2)){throw new TypeError(`Connector "${e.id}" typed subpaths must each contain at least two points`)}if(P!==_.length){throw new TypeError(`Connector "${e.id}" typed subpath count disagrees with SVG path moves`)}const ue=_.flatMap(ee=>ee.points);if(ue.length!==T.points.length||ue.some((ee,Pe)=>{const Ke=T.points[Pe];return!Ke||Ke.x!==ee.x||Ke.y!==ee.y})){throw new TypeError(`Connector "${e.id}" typed subpaths disagree with the canonical point projection`)}}}const n=Ae(e.geometry,e.route?.closed??false);const t=n.length===1&&n[0].closed;if(e.geometry.kind==="path"&&e.geometry.subpaths&&e.route?.closed!==void 0&&e.route.closed!==t){throw new TypeError(`Connector "${e.id}" route.closed disagrees with typed subpath topology`)}const r=e.geometry.kind==="path"&&e.geometry.subpaths?t:e.route?.closed??false;if(e.geometry.kind==="path"){const T=e.geometry.d.match(/[Zz]/g)?.length??0;const _=e.geometry.subpaths?e.geometry.subpaths.filter(P=>P.closed).length:r?1:0;if(T!==_){throw new TypeError(`Connector "${e.id}" SVG close commands disagree with typed closed-contour semantics`)}}const i=e.markers?.start;const o=e.markers?.end;const s=e.markers?.mid??[];for(const T of[i,...s,o]){if(T?.geometry?.kind==="path"&&!T.bounds&&!T.viewBox&&!T.size){throw new TypeError(`Connector "${e.id}" path marker "${T.id}" requires bounds, viewBox, or size`)}}const a=Ou(e.id,e.geometry,r,s);const c=Ru(e.geometry,r);for(const T of["start","end"]){const _=e.endpoints?.[T]?.point;const P=c[T]?.point;if(_&&P&&!re(_,P)){throw new TypeError(`Connector "${e.id}" endpoints.${T}.point disagrees with typed route geometry`)}}const d={...e.endpoints??{},start:ja(c.start,e.endpoints?.start),end:ja(c.end,e.endpoints?.end)};const l={kind:e.relationship?.kind??e.role,direction:e.relationship?.direction??$u(d,i,o)};const u=(e.labels??[]).map(T=>{const _=rt(T.text,T.textContent);const P=zt(T.text);return{...T,text:P,...typeof _!=="string"?{textContent:{...T.textContent,value:P}}:{}}});const m={id:e.identity?.id??e.id,role:e.role,...e.identity?.classNames?{classNames:e.identity.classNames}:{},...e.identity?.from??d.from?{from:e.identity?.from??d.from}:{},...e.identity?.to??d.to?{to:e.identity?.to??d.to}:{}};const f=u[0];const g=f?.visual?.kind==="inline"?ht(f).lineBlocks.map(T=>T.runs.map(_=>_.text).join("")).join("\n"):f?Dr(rt(f.text,f.textContent),f.display??"literal"):void 0;const b=br(m,g);Ii(e.id,e.attributes);if(b&&e.attributes?.ariaLabel!==void 0)throw new TypeError(`Connector "${e.id}" takes its aria-label from typed relation accessibility`);for(const[T,_]of u.entries()){if(_.visual?.kind==="inline"&&(!_.anchor||!_.paint||_.fontSize===void 0||_.textAnchor===void 0)){throw new TypeError(`Connector "${e.id}" inline label ${T+1} requires anchor, paint, fontSize, and textAnchor`)}}const h=e.stroke?.width??e.paint.strokeWidth??"1";const k=e.stroke?.dash??(e.paint.strokeDasharray?{array:e.paint.strokeDasharray,...e.paint.strokeDashoffset!==void 0?{offset:e.paint.strokeDashoffset}:{}}:void 0);const x=e.stroke?.opacity??e.paint.opacity;const S=e.stroke?.paintOrder??e.paint.paintOrder;const y=e.stroke?.mixBlendMode;const E={color:e.stroke?.color??e.paint.stroke??"var(--_line)",width:h,...x!==void 0?{opacity:x}:{},...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}:{},...S!==void 0?{paintOrder:S}:{},...y!==void 0?{mixBlendMode:y}:{},nonScaling:e.stroke?.nonScaling??e.paint.vectorEffect==="non-scaling-stroke",...e.stroke?.encodesValue?{encodesValue:true}:{}};const R=er(e.geometry,r);const w=e.route?.contours;if(w&&(w.length!==R.length||w.some((T,_)=>{const P=R[_];return!P||T.start.x!==P.start.x||T.start.y!==P.start.y||T.end.x!==P.end.x||T.end.y!==P.end.y||T.closed!==P.closed}))){throw new TypeError(`Connector "${e.id}" route contours disagree with typed subpath endpoint topology`)}const I=!Qt(e.geometry);if(I&&w){for(const[T,_]of w.entries()){const P=R[T];for(const ue of["startTangent","endTangent"]){const ee=_[ue];const Pe=P[ue];if(ee&&(!Pe||!re(ee,Pe,1e-9))){throw new TypeError(`Connector "${e.id}" route.contours[${T}].${ue} disagrees with linear route geometry`)}}}}const O=w?R.map((T,_)=>{const P=w?.[_];const ue=P?.startTangent??T.startTangent;const ee=P?.endTangent??T.endTangent;return{start:{...T.start},end:{...T.end},closed:T.closed,...ue?{startTangent:ue}:{},...ee?{endTangent:ee}:{}}}):R;for(const T of O){for(const _ of[T.startTangent,T.endTangent]){if(!_)continue;const P=Math.hypot(_.x,_.y);if(!Number.isFinite(P)||Math.abs(P-1)>1e-9){throw new TypeError(`Connector "${e.id}" contour tangents must be finite unit vectors`)}}}for(const T of[e.route?.startTangent,e.route?.endTangent]){if(!T)continue;const _=Math.hypot(T.x,T.y);if(!Number.isFinite(_)||Math.abs(_-1)>1e-9){throw new TypeError(`Connector "${e.id}" route tangents must be finite unit vectors`)}}for(const[T,_,P]of[["startTangent",e.route?.startTangent,O[0]?.startTangent],["endTangent",e.route?.endTangent,O.at(-1)?.endTangent]]){if(_&&P&&!re(_,P,1e-9)){throw new TypeError(`Connector "${e.id}" route.${T} disagrees with its contour tangent authority`)}}const Y={geometry:e.geometry,ownership:e.route?.ownership??"family",closed:r,bendRadius:e.route?.bendRadius??0,contours:O,...e.route?.startTangent??O[0]?.startTangent?{startTangent:e.route?.startTangent??O[0]?.startTangent}:{},...e.route?.endTangent??O.at(-1)?.endTangent?{endTangent:e.route?.endTangent??O.at(-1)?.endTangent}:{},labelAnchors:e.route?.labelAnchors??u.flatMap(T=>T.anchor?[T.anchor]:[])};if(e.hit?.closed!==void 0&&e.hit.closed!==r){throw new TypeError(`Connector "${e.id}" hit.closed must match route.closed topology`)}const le={geometry:e.hit?.geometry??e.geometry,closed:e.hit?.closed??r,strokeWidth:e.hit?.strokeWidth??Math.max(6,Nu(h)),pointerEvents:e.hit?.pointerEvents??(e.lineStyle==="invisible"?"none":"stroke")};const B={geometry:e.geometry,lineStyle:e.lineStyle,endpoints:d,relationship:l,route:Y,stroke:E,markers:{...i?{start:i}:{},mid:s,...o?{end:o}:{}},labels:u,hit:le,...e.transform?{transform:e.transform}:{},additionalDiagnostics:e.terminalProjection?.diagnostics};const V={kind:"connector",id:e.id,role:e.role,lineStyle:e.lineStyle,endpoints:d,relationship:l,route:Y,stroke:E,markers:{...i?{start:i}:{},mid:s,...o?{end:o}:{}},labels:u,hit:le,terminalProjection:void 0,identity:m,...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}:{}};la(V,B);return bt(V)}function Ct(e){const{block:n,...t}=e;if(n){for(const b of["fontSize","fontWeight","letterSpacing"]){if(e[b]!==void 0&&e[b]!==n[b])throw new TypeError(`Text "${e.id}" ${b} differs from its retained prepared block`)}}Ii(e.id,e.attributes);const r=e.fontWeight??n?.fontWeight??400;const i=e.letterSpacing??n?.letterSpacing??0;const o=e.display??n?.prepared.display??"formatted";const s=n??mt(e.text,{display:o,fontSize:e.fontSize,fontWeight:r,letterSpacing:i});if(e.spans&&(s.lines.length!==1||e.spans.map(b=>b.text).join("")!==s.text)){throw new TypeError(`Text "${e.id}" spans must spell its one displayed line`)}const a=e.baselineShift??.35;const c=s.lines.length;const d=n?n.lineHeight:e.fontSize*Ne;const l=(c===1?0:-((c-1)/2)*d)+e.fontSize*a;const u=e.dominantBaseline==="hanging"?s.lineHeight/2:e.dominantBaseline==="middle"||e.dominantBaseline==="central"?0:-e.fontSize*.35;const m=l+(c-1)*s.lineHeight/2+u;const f=za(e);const g=br(f,e.attributes?.data?.label);if(g&&e.attributes?.ariaLabel!==void 0)throw new TypeError(`Text "${e.id}" takes its aria-label from typed relation accessibility`);return bt({kind:"text",...t,identity:f,accessibility:g,block:s,measurement:n?"prepared":"fallback",...n?{prepared:true,preparedLines:n.lineBlocks.map(b=>b.runs)}:{},fontWeight:r,letterSpacing:i,display:o,textLayout:{width:s.width,height:s.height,lineHeight:s.lineHeight,offsetY:m}})}function _u(e,n){return Vn({kind:"document",element:"content",...e},n)}function xr(e){const n=e.element==="title"?"title":"desc";const t=e.domId?` id="${j(e.domId)}"`:"";return Vn({kind:"document",role:"chrome",...e},`<${n}${t}>${ae(e.text)}</${n}>`)}function Pi(e,n){return Vn({kind:"document",role:"defs",element:"definitions",...e},n)}function vi(){return Vn({kind:"document",id:"svg-close",role:"chrome",element:"close"},"</svg>")}function Hn(e){Cu(e.id,e.open,e.transform);const n=e.join??"\n";const t=sa(e.open,e);const r=e.paint&&[...e.paint.opacity!==void 0?[`opacity="${j(e.paint.opacity)}"`]:[],...e.paint.fill!==void 0?[`fill="${j(e.paint.fill)}"`]:[]].join(" ");const i=r?e.open.replace(/^<g\b/,`<g ${r}`):e.open;const o=e.owner??{id:t.id,role:t.role};const s=e.children.map(c=>{if(c.node.owner||c.node.kind==="document"||c.node.kind==="group")return c;let d;if(yt(c.node)){const l={};for(const u of Object.keys(c.node))l[u]=u==="terminalProjection"?void 0:c.node[u];l.owner=o;d=l;fa(c.node,d)}else d={...c.node,owner:o};if(Na(c.node))St(c.node,d);return{...c,node:d}});const a=Ce(aa(i,t));return bt({kind:"group",id:e.id,role:e.role,open:a,close:e.close,children:s,join:n,channels:e.channels,identity:t,owner:o,...e.visibility?{visibility:e.visibility}:{},...e.transform?{transform:e.transform}:{},...e.paint?{paint:e.paint}:{}})}function Di(e,n){return Vn({kind:"document",element:"open",id:e.id,role:"prelude"},n)}function Au(e){return Ba({shape:dn,group:Hn},e)}function Ba(e,n){return e.group({id:n.id,role:"icon",open:n.open,close:"</g>",...n.transform?{transform:n.transform}:{},...n.owner?{owner:n.owner}:{},...n.channels?{channels:n.channels}:{},join:n.join??"",children:n.paths.map((t,r)=>({indent:n.indent??0,node:e.shape({id:oa(n.id,"path",r),role:"icon",geometry:{kind:"path",d:t},paint:n.paint,...n.owner?{owner:n.owner}:{}})}))})}function Mu(e,n){if(e.kind!=="path"){if(n)throw new TypeError("External Scene closed topology is only valid for path geometry");return}if(e.subpaths!==void 0){throw new TypeError("External Scene v1 does not expose typed connector subpaths")}if(nr(e.d)!==1){throw new TypeError("External Scene v1 path geometry must contain exactly one SVG subpath")}const t=e.d.match(/[Zz]/g)?.length??0;if(t>1||n!==(t===1)){throw new TypeError("External Scene connector closed must exactly match its single SVG path contour")}Iu(e,n)}function Iu(e,n){const t=e.d.match(/[A-Za-z]|[-+]?(?:\d+\.?\d*|\.\d+)(?:[eE][-+]?\d+)?/g)??[];let r=0;const i=[];const o=()=>{const a=t[r++];const c=Number(a);if(a===void 0||!Number.isFinite(c)){throw new TypeError("External Scene v1 path must use finite canonical M/L vertices")}return c};if(t[r++]!=="M"){throw new TypeError("External Scene v1 path must use one absolute M followed by absolute L vertices")}i.push({x:o(),y:o()});let s=false;while(r<t.length){const a=t[r++];if(a==="Z"){s=true;if(r!==t.length)throw new TypeError("External Scene v1 path Z must terminate the contour");break}if(a!=="L"){throw new TypeError("External Scene v1 path supports only absolute M/L/Z so route, bounds, hit geometry, and SVG cannot diverge")}i.push({x:o(),y:o()})}if(s!==n){throw new TypeError("External Scene connector closed must exactly match its single SVG path contour")}if(i.length!==e.points.length||i.some((a,c)=>{const d=e.points[c];return!d||d.x!==a.x||d.y!==a.y})){throw new TypeError("External Scene v1 path vertices must exactly match typed connector points")}}function Fa(e){switch(e.kind){case"shape":return dn({id:e.id,role:e.role,geometry:e.geometry,paint:e.paint,...e.channels?{channels:e.channels}:{}});case"text":return Ct({id:e.id,role:e.role,text:e.text,x:e.x,y:e.y,fontSize:e.fontSize,fontWeight:400,display:"literal",anchor:e.anchor,baselineShift:0,paint:e.paint,...e.channels?{channels:e.channels}:{}});case"group":return Hn({id:e.id,role:e.role,open:"<g>",close:"</g>",children:e.children.map(n=>({node:n.node,indent:2})),...e.channels?{channels:e.channels}:{}});case"connector":{const n=e.markers.start;const t=e.markers.mid.length===1?e.markers.mid[0]:void 0;const r=e.markers.end;const i=e.route.geometry;const o={fill:"none",stroke:e.stroke.color,strokeWidth:String(e.stroke.width),...e.stroke.opacity===void 0?{}:{opacity:String(e.stroke.opacity)},...e.stroke.dash===void 0?{}:{strokeDasharray:typeof e.stroke.dash.array==="string"?e.stroke.dash.array:e.stroke.dash.array.join(" "),...e.stroke.dash.offset===void 0?{}:{strokeDashoffset:String(e.stroke.dash.offset)}},strokeLinecap:e.stroke.lineCap,strokeLinejoin:e.stroke.lineJoin,strokeMiterlimit:String(e.stroke.miterLimit),...e.stroke.paintOrder===void 0?{}:{paintOrder:e.stroke.paintOrder},...e.stroke.nonScaling?{vectorEffect:"non-scaling-stroke"}:{}};Mu(i,e.route.closed);return He({id:e.id,role:e.role,geometry:i,lineStyle:e.lineStyle,paint:o,endpoints:{...e.endpoints.from===void 0?{}:{from:e.endpoints.from},...e.endpoints.to===void 0?{}:{to:e.endpoints.to},...e.endpoints.start?.owner?{start:{owner:{...e.endpoints.start.owner}}}:{},...e.endpoints.end?.owner?{end:{owner:{...e.endpoints.end.owner}}}:{}},relationship:e.relationship,route:{closed:e.route.closed},markers:{...n?{start:n}:{},mid:t?[t]:[],...r?{end:r}:{}},labels:e.labels,...e.channels?{channels:e.channels}:{}})}}}var Sr=G.maxNodes;var kr=G.maxFinalSvgBytes;function Wa(e,n,t,r){if(e.kind==="document")return;let i;try{i=Fa(e)}catch(s){p(t,"SCENE_FIDELITY",n,s instanceof Error?s.message:String(s));return}const o=e.kind==="group"?i.owner:r;if(!we(e.owner,o))p(t,"SCENE_FIDELITY",`${n}.owner`,"must equal ownership derived from the external container tree");if(z(e)!==z(i)){p(t,"SCENE_FIDELITY",n,"must equal the canonical serialization generated from the external Scene fields")}if(!we(e.identity,i.identity)||!we(e.accessibility,i.accessibility)){p(t,"SCENE_FIDELITY",n,"typed identity and accessibility must equal the canonical generated projection")}if(e.kind==="group"&&i.kind==="group"){if(e.open!==i.open||e.close!==i.close||e.join!==i.join){p(t,"SCENE_FIDELITY",n,"external containers must use the canonical generated wrapper and join")}e.children.forEach((s,a)=>{if(s.indent!==2)p(t,"SCENE_FIDELITY",`${n}.children[${a}].indent`,"external container children must use the canonical two-space indent");Wa(s.node,`${n}.children[${a}].node`,t,{id:e.identity?.id??e.id,role:e.role})})}if(e.kind==="text"&&i.kind==="text"){for(const s of["fontWeight","letterSpacing","display","textLayout","block","measurement","prepared"]){if(!we(e[s],i[s]))p(t,"SCENE_FIDELITY",`${n}.${s}`,"must equal text geometry derived by the external Scene builder")}}if(e.kind==="connector"&&i.kind==="connector"){const s=["endpoints","route","stroke","hit","terminalProjection"];for(const a of s){if(!we(e[a],i[a])){p(t,"SCENE_FIDELITY",`${n}.${a}`,"must equal semantics derived by the external Scene builder")}}if(!we(e.markers,i.markers)){p(t,"SCENE_FIDELITY",`${n}.markers`,"must equal the canonical external start/mid/end marker projection")}}}function Pu(e,n){e.parts.forEach((t,r)=>Wa(t,`scene.parts[${r}]`,n))}function vu(e,n){const t=[];let r=Math.max(0,e.length-1);if(r>kr){p(n,"SCENE_BOUNDS","scene.parts",`serialized SVG exceeds the aggregate ${kr}-byte limit`);return void 0}for(let i=0;i<e.length;i++){const o=e[i];if(!C(o))return void 0;let s;try{s=z(o)}catch{return void 0}const a=Math.max(0,kr-r);const c=te(s,a);if(c>a){p(n,"SCENE_BOUNDS","scene.parts",`serialized SVG exceeds the aggregate ${kr}-byte limit`);return void 0}r+=c;t.push(s)}return t.join("\n")}function Du(e,n,t,r){const i=n.diagnostics;const o=e.parts.length<=Sr?vu(e.parts,i):void 0;const s=[];for(let y=0;y<Math.min(e.parts.length,Sr);y++){const E=e.parts[y];if(C(E))s.push({part:E,index:y})}const a=s.filter(y=>y.part.kind==="document");const c=a.filter(y=>y.part.element==="open");const d=a.filter(y=>y.part.element==="title");const l=a.filter(y=>y.part.element==="description");const u=a.filter(y=>y.part.element==="definitions");const m=a.filter(y=>y.part.element==="close");if(c.length!==1||c[0]?.index!==0)p(i,"SCENE_DOCUMENT","scene.parts","external Scene documents require exactly one leading open mark");if(d.length!==1||d[0]?.index!==1)p(i,"SCENE_DOCUMENT","scene.parts","external Scene documents require exactly one title after the open mark");if(l.length>1)p(i,"SCENE_DOCUMENT","scene.parts","external Scene documents allow at most one description");if(u.length>1)p(i,"SCENE_DOCUMENT","scene.parts","external Scene documents allow at most one definitions mark");if(m.length!==1||m[0]?.index!==e.parts.length-1)p(i,"SCENE_DOCUMENT","scene.parts","external Scene documents require exactly one trailing close");const f=1+d.length+l.length+u.length;const g=[...d,...l,...u].map(y=>y.index);if(g.some((y,E)=>y!==E+1)||a.some(y=>!["open","close"].includes(String(y.part.element))&&y.index>f)){p(i,"SCENE_DOCUMENT","scene.parts","title, description, and typed definitions must be contiguous leading furniture")}const b=d[0]?.part;if(b&&(b.id!=="external-scene-title"||b.domId!=="external-scene-title")){p(i,"SCENE_DOCUMENT",`scene.parts[${d[0].index}]`,"external title must use the canonical generated identity")}if(b&&typeof b.text==="string"){const y=Ce(`<title id="external-scene-title">${ae(b.text)}</title>`);if(z(b)!==y)p(i,"SCENE_FIDELITY",`scene.parts[${d[0].index}]`,"external title must use the canonical generated serialization")}const h=l[0]?.part;if(h&&(h.id!=="external-scene-description"||h.domId!=="external-scene-description")){p(i,"SCENE_DOCUMENT",`scene.parts[${l[0].index}]`,"external description must use the canonical generated identity")}if(h&&typeof h.text==="string"){const y=Ce(`<desc id="${j("external-scene-description")}">${ae(h.text)}</desc>`);if(z(h)!==y)p(i,"SCENE_FIDELITY",`scene.parts[${l[0].index}]`,"external description must use the canonical generated serialization")}const k=u[0]?.part;if(k&&(k.id!=="external-scene-definitions"||!Array.isArray(k.markerResources)||k.markerResources.length===0)){p(i,"SCENE_DOCUMENT",`scene.parts[${u[0].index}]`,"external definitions must be the canonical non-empty typed marker resource mark")}const x=m[0]?.part;if(x&&x.id!=="svg-close")p(i,"SCENE_DOCUMENT",`scene.parts[${m[0].index}]`,"external close must use the canonical generated identity");const S=c[0]?.part;if(S){if(S.id!=="external-scene-prelude")p(i,"SCENE_DOCUMENT","scene.parts[0].id","external open mark must use the canonical generated identity");try{const y=e.colors;const E=["external-scene-title",...l.length?["external-scene-description"]:[]].join(" ");const R=Ce([Vo(e.width,e.height,y,Boolean(e.transparent),{attrs:{role:"img","aria-labelledby":E}}),Wo(y.font??"Inter",false,y.shadow,false)].join("\n"));if(z(S)!==R)p(i,"SCENE_SECURITY","scene.parts[0]","must be the canonical CSS-free external document serialization")}catch(y){p(i,"SCENE_SECURITY","scene.parts[0]",y instanceof Error?y.message:String(y))}}for(const y of n.markerReferences){const E=n.markerIds.get(y.id);if(!E)p(i,"SCENE_REFERENCE",y.path,`references undeclared marker "${y.id}"`);else if(E!==y.marker)p(i,"SCENE_REFERENCE",y.path,`must reference the exact typed marker resource "${y.id}"`)}for(const y of n.endpointReferences){if(!n.ids.has(y.id))p(i,"SCENE_REFERENCE",y.path,`references unknown Scene id "${y.id}"`)}if(t&&r&&i.length===0){const y=e.width;const E=e.height;const R=(w,I)=>{if(!C(w))return;if(["shape","connector","text"].includes(String(w.kind))){try{const O=Ei(w);if(O&&(O.x0<-1||O.y0<-1||O.x1>y+1||O.y1>E+1)){p(i,"SCENE_BOUNDS",I,`visual bounds [${O.x0}, ${O.y0}, ${O.x1}, ${O.y1}] escape the ${y}x${E} document`)}}catch(O){p(i,"SCENE_BOUNDS",I,O instanceof Error?O.message:String(O))}}if(w.kind==="group"&&Array.isArray(w.children)){for(let O=0;O<Math.min(w.children.length,Sr);O++){const Y=w.children[O];if(C(Y))R(Y.node,`${I}.children[${O}].node`)}}};for(let w=0;w<Math.min(e.parts.length,Sr);w++){R(e.parts[w],`scene.parts[${w}]`)}}return o}var Va={document:(e,n,t,r)=>Du(e,n,t,r),canonical:Pu};function ju(e,n={}){return Mi(e,n,true,Va)}function Ua(e,n,t){const r=Mi(e,{mode:n},t||Te(e,{mode:n})==="external",Va);if(!r.valid)throw new Z(r.diagnostics)}function eh(e,n={}){const t=ju(e,n);if(!t.valid)throw new Z(t.diagnostics)}var zu=globalThis.process?.env;var Bu=zu?.AGENTIC_MERMAID_SCENE_ASSERTIONS==="1";var Ga=new WeakSet;function rh(e){Ga.add(e)}function Ya(e){return Bu||e!==void 0&&(Ga.has(e)||e.renderOptions.layoutSafety==="strict")}var Lu=64;var Fu=256;var Wu=G.maxNodes*16;var Vu=G.maxNodes*16;var Uu=G.maxTextBytes*8;var Ka=Object.freeze({maxObjects:G.maxNodes*4,maxTextBytes:G.maxTextBytes,maxArrayEntries:G.maxNodes,maxAggregateArrayEntries:Vu,maxDepth:G.maxDepth*4,maxPropertiesPerObject:Lu,maxAggregateProperties:Wu,maxPropertyKeyBytes:Fu,maxAggregatePropertyKeyBytes:Uu});var Xa=Object.freeze({...Ka,maxObjects:G.maxNodes*8,maxTextBytes:G.maxTextBytes+G.maxAggregateSerializationBytes+G.maxFinalSvgBytes});function qa(e,n,t="input"){const r=new WeakSet;const i=new WeakMap;let o=0;let s=0;let a=0;let c=0;let d=0;const l=(u,m,f)=>{if(typeof u==="string"){const b=Math.max(0,n.maxTextBytes-s);const h=te(u,b);if(h>b){throw new Error(`External Scene text values exceed the aggregate ${n.maxTextBytes}-byte limit`)}s+=h;return u}if(u===null||typeof u!=="object"){if(typeof u==="function"||typeof u==="symbol"||typeof u==="bigint"){throw new TypeError(`External Scene ${f} must be declarative data`)}return u}if(m>n.maxDepth){throw new Error("External Scene input object graph is too deeply nested")}if(++o>n.maxObjects){throw new Error("External Scene input object graph is too large")}if(r.has(u))throw new Error("External Scene input must be acyclic");const g=i.get(u);if(g!==void 0)return g;r.add(u);try{if(Array.isArray(u)){if(Object.getPrototypeOf(u)!==Array.prototype){throw new TypeError(`External Scene ${f} must be a plain array`)}const x=Reflect.getOwnPropertyDescriptor(u,"length");if(!x||!("value"in x)||typeof x.value!=="number"||!Number.isSafeInteger(x.value)||x.value<0){throw new TypeError(`External Scene ${f}.length must be a non-negative integer data property`)}const S=x.value;if(S>n.maxArrayEntries){throw new Error(`External Scene ${f} contains too many entries`)}a+=S;if(a>n.maxAggregateArrayEntries){throw new Error(`External Scene input exceeds the aggregate ${n.maxAggregateArrayEntries}-array-entry limit`)}const y=Reflect.ownKeys(u);if(y.length>S+1||!y.includes("length")){throw new TypeError(`External Scene ${f} must not define custom array properties or iterators`)}const E=new Map;E.set("length",x);for(const w of y){if(w==="length")continue;const I=Reflect.getOwnPropertyDescriptor(u,w);if(!I)throw new TypeError(`External Scene ${f} has an unstable property descriptor`);E.set(w,I)}for(const w of y){if(w==="length")continue;if(typeof w!=="string"||!/^(?:0|[1-9]\d*)$/.test(w)||Number(w)>=S){throw new TypeError(`External Scene ${f} must not define custom array properties or iterators`)}}const R=new Array(S);i.set(u,R);St(u,R);for(let w=0;w<S;w++){const I=E.get(String(w));if(!I)throw new TypeError(`External Scene ${f} must not be sparse`);if(!("value"in I)||!I.enumerable){throw new TypeError(`External Scene ${f}[${w}] must be an enumerable data property`)}R[w]=l(I.value,m+1,`${f}[${w}]`)}return Object.freeze(R)}const b=Object.getPrototypeOf(u);if(b!==Object.prototype&&b!==null){throw new TypeError(`External Scene ${f} must be a plain object`)}const h=Reflect.ownKeys(u);if(h.length>n.maxPropertiesPerObject){throw new Error(`External Scene ${f} contains too many properties`)}c+=h.length;if(c>n.maxAggregateProperties){throw new Error(`External Scene input exceeds the aggregate ${n.maxAggregateProperties}-property limit`)}for(const x of h){if(typeof x!=="string")continue;const S=Math.max(0,n.maxAggregatePropertyKeyBytes-d);const y=te(x,Math.min(n.maxPropertyKeyBytes,S));if(y>n.maxPropertyKeyBytes){throw new Error(`External Scene ${f} contains a property key longer than ${n.maxPropertyKeyBytes} bytes`)}if(y>S){throw new Error(`External Scene property keys exceed the aggregate ${n.maxAggregatePropertyKeyBytes}-byte limit`)}d+=y}const k=Object.create(null);i.set(u,k);St(u,k);for(const x of h){if(typeof x!=="string")throw new TypeError(`External Scene ${f} must not contain symbol keys`);const S=Reflect.getOwnPropertyDescriptor(u,x);if(!S||!S.enumerable){throw new TypeError(`External Scene ${f}.${x} must be an enumerable data property`)}let y;if("value"in S)y=S.value;else{y=ua(u,x,S);if(y===void 0)throw new TypeError(`External Scene ${f}.${x} must be an enumerable data property`)}Object.defineProperty(k,x,{value:l(y,m+1,`${f}.${x}`),enumerable:true,configurable:false,writable:false})}ra(u,k);return Object.freeze(k)}finally{r.delete(u)}};return l(e,0,t)}var Ja=new WeakMap;function ji(e,n,t=true){Ja.set(e,{mode:n,crossChecks:t})}function Ha(){throw new Z([{code:"SCENE_DOCUMENT",path:"scene.family",message:"source-only browser admission requires a built-in family"}])}function Za(e,n,t,r,i=false){const o=typeof e==="object"&&e!==null?Ja.get(e):void 0;if(i&&(n==="external"||o!==void 0&&(o.mode==="external"||Te(e)==="external")))Ha();const s=n!=="internal"||t;if(o!==void 0&&o.mode===(n??Te(e))){if((o.mode==="external"||t)&&!o.crossChecks){r(e,o.mode,true);ji(e,o.mode,true)}return e}const a=qa(e,Xa,"scene");if(i&&Te(a)==="external")Ha();r(a,n,n!=="internal"||t);ji(a,n??Te(a),s);return a}function wt(e){return Gu(e)}function Gu(e,n,t=Ya()){return Za(e,n,t,Ua)}var Yu=4;var nc="backend-claim-matrix@4";var $h=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"]);function Hu(){const e={bg:"#ffffff",fg:"#172033",line:"#334155",accent:"#a33b20"};const n={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"}};const t={id:"backend-conformance-gradient",units:"userSpaceOnUse",x1:0,y1:0,x2:120,y2:0,stops:[{offset:0,color:"#a33b20"},{offset:1,color:"#334155"}]};const r=Di({id:"backend-conformance-prelude",width:120,height:80,colors:e,transparent:true,font:"Inter",hasMonoFont:false},'<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">');const i=xr({id:"backend-conformance-title",element:"title",text:"Backend conformance fixture",domId:"backend-conformance-title"});const o=xr({id:"backend-conformance-description",element:"description",text:"A representative Scene document",domId:"backend-conformance-description"});const s=Pi({id:"backend-conformance-definitions",markerResources:[n],gradientResources:[t]},`<defs>
|
|
54
|
-
${qr(n)}
|
|
55
|
-
${yi(t)}
|
|
56
|
-
</defs>`);const a=dn({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"}});const c=Hn({id:"backend-conformance-container",role:"group",open:"<g>",paint:{opacity:"0.8",fill:"#f4efe6"},close:"</g>",children:[{node:a,indent:2}]});const d=dn({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"}});const l=He({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:false,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:true},markers:{start:n,mid:[n],end:n},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"}}]});const u=He({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:true},transform:{kind:"rotate",angle:90,cx:42,cy:58}});const m=He({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:true}});const f=He({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:false},{points:[{x:52,y:72},{x:72,y:72}],closed:false}]},lineStyle:"solid",paint:{fill:"none",stroke:"#334155",strokeWidth:"2"},markers:{start:n,mid:[],end:n}});const g=Ct({id:"backend-conformance-text",role:"member",text:"Fixture label",x:25,y:31,fontSize:12,anchor:"middle",paint:{fill:"#172033"},baselineShift:0});const b={family:"backend-conformance",width:120,height:80,colors:e,transparent:false,parts:[r,i,o,s,c,d,l,g,vi()]};const h=[{primitive:"document",node:r,requiredFragments:["<svg","backend-conformance-title"]},{primitive:"marker",node:s,requiredFragments:['id="backend-conformance-arrow"']},{primitive:"container",node:c,requiredFragments:['data-id="backend-conformance-container"','data-id="backend-conformance-node"']},{primitive:"shape",node:a,requiredFragments:['data-id="backend-conformance-node"','data-role="node"']},{primitive:"data-mark",node:d,requiredFragments:['data-id="backend-conformance-data-mark"','data-role="bar"']},{primitive:"connector",node:l,requiredFragments:['data-id="backend-conformance-relation"','data-role="edge"']},{primitive:"text",node:g,requiredFragments:['data-id="backend-conformance-text"',"Fixture label"]}];const k={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"}};return en({doc:b,context:k,probes:h,nodes:{root:r,marker:s,shape:a,container:c,dataMark:d,richConnector:l,freehandConnector:u,closedConnector:m,multiSubpathConnector:f,label:g}})}var M;function tc(e){const{id:n,capabilities:t,drawNode:r,render:i}=e;let o;return{id:n,capabilities:t,drawNode(s,a){return r.call(e,s,a)},render(s,a){const c=s===M?.doc?o??=wt(s):s;return i.call(e,c,a)}}}function Qa(e){return e.length===0?void 0:`missing ${e.join(", ")}`}function v(e,n,t){return e?{passed:e,observation:n}:{passed:e,observation:n,diagnostic:t}}function ln(e,n){return e.split(n).length-1}function L(e,n){const t=e.drawNode(n,M.context);yr(t,"backend conformance drawNode output");return t}function fn(e){const n=e.render(M.doc,M.context);yr(n,"backend conformance render output");return n}function Re(e,n){const t=e.match(/^\s*<(?:line|polyline|path)\b[^>]*>/)?.[0]??"";if(!/\sstroke-opacity="0"/.test(t))return e;return e.split("\n").slice(n.split("\n").length).join("\n")}function un(e,n,t,r=()=>true){const i=L(e,t);const o=Re(i,z(t));const s=t.kind==="text"?i.includes(t.text)&&i.includes(`x="${t.x}"`)&&i.includes(`y="${t.y}"`):t.kind==="shape"&&t.geometry.kind==="rect"?i.includes(`x="${t.geometry.x}"`)&&i.includes(`y="${t.geometry.y}"`)&&i.includes(`width="${t.geometry.width}"`)&&i.includes(`height="${t.geometry.height}"`):t.kind==="connector"&&t.route.geometry.kind==="line"?i.includes(`x1="${t.route.geometry.x1}"`)&&i.includes(`y1="${t.route.geometry.y1}"`)&&i.includes(`x2="${t.route.geometry.x2}"`)&&i.includes(`y2="${t.route.geometry.y2}"`):t.kind==="connector"&&t.route.geometry.kind==="path"?i.includes(`d="${t.route.geometry.d}"`):i===z(t);const a=n.realization==="native"?s:n.realization==="emulated"&&i!==z(t)&&o.includes("<path");const c=n.target==="backend:hybrid"&&t.kind==="shape"?i.includes("fill-opacity=")&&i.includes('stroke="none"'):true;return v(a&&c&&r(i,o),n.realization==="native"?"authored serialization preserved":"typed mark re-realized by backend geometry",`backend output did not demonstrate ${n.realization} ${n.primitive}/${n.feature}`)}function Ie(e,n,t,r){const i=n.realization==="lossy"?M.nodes.freehandConnector:M.nodes.richConnector;const o=L(e,i);const s=Re(o,z(i));if(n.realization==="lossy"){return v(o!==z(i)&&s.includes('stroke="none"')&&!s.includes(`${t}="`),`visible freehand ribbon intentionally omits ${t}; typed semantic projection remains non-visual`,`lossy ${t} projection was not observable on the visible freehand ribbon`)}const a=n.realization==="native"?o.includes('data-id="backend-conformance-relation"'):o!==z(i);return v(a&&s.includes(`${t}="${r}"`),`${t}=${r} present on the ${n.realization==="native"?"authored":"visible generated"} stroke`,`${t}=${r} was not preserved by the ${n.realization} realization`)}function ec(e){return[e.primitive,e.feature,e.operation].join("/")}var Ku=Object.freeze({"document/identity/serialize":e=>{const n=fn(e);return v(ln(n,"<svg")===1&&n.includes('viewBox="0 0 120 80"')&&n.trimEnd().endsWith("</svg>"),"one bounded SVG document serialized","document envelope or bounds were not preserved")},"document/resources/serialize":e=>{const n=fn(e);return v(n.includes("<defs>")&&n.includes('id="backend-conformance-arrow"')&&n.includes('<linearGradient id="backend-conformance-gradient"')&&ni(n).ok,"typed marker and linear-gradient resources serialized without external references","document resources were missing or unsafe")},"document/interaction/accessibility":e=>{const n=fn(e);return v(n.includes('role="img"')&&n.includes('aria-labelledby="backend-conformance-title backend-conformance-description"')&&n.includes('<title id="backend-conformance-title">Backend conformance fixture</title>')&&n.includes('<desc id="backend-conformance-description">A representative Scene document</desc>'),"root role, title, and description preserved","document accessibility projection was incomplete")},"text/geometry/render":(e,n)=>un(e,n,M.nodes.label,t=>t.includes('x="25"')&&t.includes('y="31"')&&t.includes('font-size="12"')),"text/paint/render":(e,n)=>un(e,n,M.nodes.label,t=>t.includes('fill="#172033"')),"text/labels/accessibility":e=>{const n=L(e,M.nodes.label);return v(n.includes("Fixture label"),"readable label text preserved","text label was not serialized")},"text/identity/serialize":e=>{const n=L(e,M.nodes.label);return v(n.includes('data-id="backend-conformance-text"')&&n.includes('data-role="member"'),"text DOM identity preserved","text DOM identity was lost")},"shape/geometry/render":(e,n)=>un(e,n,M.nodes.shape),"shape/paint/render":(e,n)=>un(e,n,M.nodes.shape,t=>t.includes("#334155")&&t.includes("#f4efe6")),"shape/identity/serialize":e=>{const n=L(e,M.nodes.shape);return v(n.includes('data-id="backend-conformance-node"')&&n.includes('data-role="node"'),"shape DOM identity preserved on backend output","shape DOM identity was lost")},"container/geometry/render":(e,n)=>{const t=L(e,M.nodes.container);return v(n.realization==="native"&&t.startsWith("<g ")&&t.trimEnd().endsWith("</g>")&&t.includes('data-id="backend-conformance-node"'),"container boundary and child composition preserved natively while children may be re-realized","container boundary/child geometry was not preserved as a native wrapper")},"container/paint/render":(e,n)=>{const t=L(e,M.nodes.container);return v(n.realization==="native"&&t.includes('opacity="0.8"')&&t.includes('fill="#f4efe6"'),"container opacity and fill cascade preserved natively","container paint cascade was not preserved as a native wrapper")},"container/identity/serialize":e=>{const n=L(e,M.nodes.container);return v(n.includes('data-id="backend-conformance-container"')&&n.includes('data-role="group"'),"container DOM identity preserved","container DOM identity was lost")},"connector/geometry/render":(e,n)=>{const t=M.nodes.richConnector;const r=L(e,t);const i=Re(r,z(t));return v(n.realization==="native"?t.route.geometry.kind==="path"&&r.includes(`d="${t.route.geometry.d}"`):n.realization==="lossy"&&r!==z(t)&&r.includes("Q 66 12 70 14")&&!i.includes("Q 66 12 70 14"),n.realization==="lossy"?"exact curve retained on the semantic carrier while visible geometry uses typed routed contours":"authored connector geometry retained","connector geometry realization did not match its claim")},"connector/stroke/render":(e,n)=>un(e,n,M.nodes.freehandConnector,t=>t.includes("#334155")),"connector/transform/render":(e,n)=>{const t=M.nodes.freehandConnector;const r=L(e,t);const i=Re(r,z(t));const o=r.includes('transform="rotate(90 42 58)"')&&he(t,{x:42,y:82})&&!he(t,{x:66,y:58});return v(o&&(n.realization==="native"?!/\sstroke-opacity="0"/.test(r.match(/^\s*<(?:line|polyline|path)\b[^>]*>/)?.[0]??""):n.realization==="emulated"&&i.startsWith('<g transform="rotate(90 42 58)">')),"the same typed rotation governs SVG projection and world-space hit testing","connector transform was not preserved by both rendering and interaction")},"connector/topology/render":(e,n)=>{const t=M.nodes.richConnector;const r=L(e,t);const i=Re(r,z(t));return v(n.realization==="native"?t.route.geometry.kind==="path"&&r.includes(`d="${t.route.geometry.d}"`):n.realization==="lossy"&&r!==z(t)&&r.includes("Q 66 12 70 14")&&!i.includes("Q 66 12 70 14"),n.realization==="lossy"?"path topology remains on the carrier while the visible sketch is a flattened contour projection":"authored path topology retained","connector topology realization did not match its claim")},"connector/subpaths/render":(e,n)=>{const t=M.nodes.multiSubpathConnector;const r=L(e,t);const i=Re(r,z(t));const o=he(t,{x:18,y:72})&&he(t,{x:62,y:72})&&!he(t,{x:40,y:72})&&t.route.contours.length===2&&t.route.contours.every(a=>a.startTangent?.x===1&&a.endTangent?.x===1);const s=n.realization==="native"?ln(r.match(/^\s*<path\b[^>]*>/)?.[0]??"","M ")===2:n.realization==="emulated"&&r!==z(t)&&ln(i,"<path")>=2;return v(o&&s,"two typed contours render and hit-test without a synthetic bridge","connector subpath boundaries were not preserved")},"connector/closedness/render":(e,n)=>{const t=M.nodes.closedConnector;const r=L(e,t);const i=Re(r,z(t));const o=he(t,{x:25,y:65});const s=o&&(n.realization==="native"?/\sZ(?:\s|"|")/.test(r.match(/^\s*<path\b[^>]*>/)?.[0]??""):n.realization==="lossy"&&r!==z(t)&&/\sZ(?:\s|"|")/.test(r.slice(0,r.indexOf("\n")))&&!i.includes("M 10 65 L 25 50 L 40 65 Z"));return v(s,n.realization==="lossy"?"authored closed carrier retained while visible ribbon is rebuilt from the routed points":"authored closed subpath retained","output did not demonstrate the declared closedness realization")},"connector/bend-radius/render":(e,n)=>{const t=M.nodes.richConnector;const r=L(e,t);const i=Re(r,z(t));const o=r.includes("Q 66 12 70 14")&&t.route.bendRadius===4;return v(o&&(n.realization==="native"?!/\sstroke-opacity="0"/.test(r.match(/^\s*<path\b[^>]*>/)?.[0]??""):n.realization==="lossy"&&r!==z(t)&&!i.includes("Q 66 12 70 14")),n.realization==="lossy"?"exact rounded carrier retained while the visible sketch uses the declared routed projection":"authored rounded connector geometry retained","bend-radius realization did not match the declared capability")},"connector/stroke-opacity/render":(e,n)=>Ie(e,n,"stroke-opacity","0.65"),"connector/stroke-cap/render":(e,n)=>Ie(e,n,"stroke-linecap","square"),"connector/stroke-join/render":(e,n)=>Ie(e,n,"stroke-linejoin","bevel"),"connector/stroke-miter/render":(e,n)=>Ie(e,n,"stroke-miterlimit","7"),"connector/dash-array/render":(e,n)=>Ie(e,n,"stroke-dasharray","6 3"),"connector/dash-offset/render":(e,n)=>Ie(e,n,"stroke-dashoffset","2"),"connector/dash-restart/render":(e,n)=>{const t=M.nodes.richConnector;const r=L(e,t);const i=Re(r,z(t));const o=ln(i,'stroke-dasharray="6 3"');const s=ln(i,"M");return v(n.realization==="native"?o===1:n.realization==="lossy"&&o>=1&&s>1,n.realization==="lossy"?`${s} generated stroke subpaths restart independently`:"one authored dashed path retains one dash phase","dash restart boundaries did not match the declared realization")},"connector/path-length/render":(e,n)=>{const t=M.nodes.richConnector;const r=L(e,t);const i=Re(r,z(t));const o=ln(i,'pathLength="77"');const s=ln(i,"M");return v(n.realization==="native"?o===1:n.realization==="lossy"&&o>=1&&s>1,n.realization==="lossy"?`one pathLength value spans ${s} generated stroke subpaths`:"one authored pathLength calibration retained","pathLength behavior did not match the declared realization")},"connector/paint-order/render":(e,n)=>Ie(e,n,"paint-order","stroke fill"),"connector/compositing/render":(e,n)=>Ie(e,n,"style","mix-blend-mode:multiply"),"connector/non-scaling-stroke/render":(e,n)=>Ie(e,n,"vector-effect","non-scaling-stroke"),"connector/marker-orientation/render":(e,n)=>{const t=fn(e);if(n.realization==="unsupported"){return v(t.includes('orient="auto"')&&!t.includes('marker-start="url(#backend-conformance-arrow)"')&&!t.includes('marker-mid="url(#backend-conformance-arrow)"')&&!t.includes('marker-end="url(#backend-conformance-arrow)"'),"marker resource remains serializable but the unsupported connector attachment is omitted","backend declared connector marker orientation unsupported but attached the marker")}const r=t.includes('orient="auto"')&&t.includes('marker-start="url(#backend-conformance-arrow)"')&&t.includes('marker-mid="url(#backend-conformance-arrow)"')&&t.includes('marker-end="url(#backend-conformance-arrow)"');const i=n.realization!=="projected"||t.includes('markerUnits="userSpaceOnUse"');return v((n.realization==="native"||n.realization==="projected")&&r&&i,n.realization==="projected"?"typed marker kept in the marker projection with projected units/orientation":"native marker orientation retained","marker orientation/carrier projection did not match the declaration")},"connector/marker-overflow/render":(e,n)=>{const t=fn(e);const r=t.includes('marker-start="url(#backend-conformance-arrow)"')&&t.includes('marker-end="url(#backend-conformance-arrow)"');if(n.realization==="unsupported"){return v(t.includes('overflow="visible"')&&!r&&!t.includes('marker-mid="url(#backend-conformance-arrow)"'),"marker resource remains serializable but its unsupported connector attachment is omitted","backend declared connector marker overflow unsupported but attached the marker")}return v((n.realization==="native"||n.realization==="projected")&&t.includes('overflow="visible"')&&r,n.realization==="projected"?"visible overflow remains in the typed marker resource projection":"native marker overflow retained","marker overflow or its connector attachment was not preserved")},"connector/endpoints/serialize":e=>{const n=L(e,M.nodes.richConnector);return v(n.includes('data-from="backend-conformance-node"')&&n.includes('data-to="backend-conformance-data-mark"'),"typed endpoint identities serialized on the semantic carrier","connector endpoint identities were not serialized")},"connector/direction/serialize":e=>{const n=L(e,M.nodes.richConnector);return v(n.includes('data-relationship="dependency"')&&n.includes('data-direction="forward"'),"typed relationship kind and direction serialized on the semantic carrier","connector relationship direction was not serialized")},"connector/labels/accessibility":e=>{const n=L(e,M.nodes.richConnector);return v(n.includes('aria-label="backend-conformance-node to backend-conformance-data-mark: depends on"'),"typed connector label participates in the accessible relation name","connector label was absent from accessibility output")},"connector/labels/render":(e,n)=>{const t=L(e,M.nodes.richConnector);return v(n.realization==="native"&&t.includes('data-id="backend-conformance-relation-label"')&&t.includes('data-connector-label-for="backend-conformance-relation"')&&t.includes('x="66" y="6"')&&t.includes('font-size="11"')&&t.includes('fill="#172033"')&&t.includes('stroke="#ffffff"')&&t.includes('stroke-width="3"')&&t.includes('paint-order="stroke fill"')&&t.includes(">depends on</text>"),"typed label anchor, clearance, paint, typography, and halo render on the connector carrier","connector label visual semantics were not preserved")},"connector/relation/accessibility":e=>{const n=L(e,M.nodes.richConnector);return v(n.includes('data-from="backend-conformance-node"')&&n.includes('data-to="backend-conformance-data-mark"')&&n.includes('role="graphics-symbol"')&&n.includes('aria-roledescription="relation"')&&n.includes('aria-label="backend-conformance-node to backend-conformance-data-mark: depends on"'),"typed relation and accessible label preserved on the carrier","connector relation accessibility semantics were lost")},"connector/markers/render":(e,n)=>{const t=L(e,M.nodes.richConnector);if(n.realization==="unsupported"){return v(!t.includes('marker-start="url(#backend-conformance-arrow)"')&&!t.includes('marker-mid="url(#backend-conformance-arrow)"')&&!t.includes('marker-end="url(#backend-conformance-arrow)"'),"backend omits the explicitly unsupported connector marker","backend declared connector markers unsupported but still serialized one")}return v((n.realization==="native"||n.realization==="projected")&&t.includes('marker-start="url(#backend-conformance-arrow)"')&&t.includes('marker-mid="url(#backend-conformance-arrow)"')&&t.includes('marker-end="url(#backend-conformance-arrow)"'),n.realization==="projected"?"marker retained in the typed marker projection":"native connector marker retained","connector marker projection did not match the declaration")},"connector/interaction/hit-test":e=>{const n=M.nodes.freehandConnector;const t=L(e,n);return v(t.includes('data-id="backend-conformance-freehand-relation"')&&he(n,{x:42,y:82})&&!he(n,{x:66,y:58}),"typed hit geometry remains aligned with the backend-preserved connector carrier","connector carrier or typed hit geometry was not preserved")},"connector/hit-geometry/hit-test":e=>{const n=M.nodes.multiSubpathConnector;const t=L(e,n);return v(t.includes('data-id="backend-conformance-multi-relation"')&&he(n,{x:18,y:72})&&!he(n,{x:40,y:72}),"typed hit geometry preserves contour gaps independently of backend artwork","connector hit geometry did not preserve typed contour boundaries")},"connector/identity/serialize":e=>{const n=L(e,M.nodes.richConnector);return v(n.includes('data-id="backend-conformance-relation"')&&n.includes('data-role="edge"'),"connector DOM identity preserved on carrier","connector DOM identity was lost")},"marker/geometry/render":(e,n)=>{const t=L(e,M.nodes.marker);return v((n.realization==="native"||n.realization==="projected")&&t.includes("M 0 0 L 8 4 L 0 8 Z")&&t.includes('viewBox="0 0 8 8"'),n.realization==="projected"?"typed marker geometry reserialized in the marker resource projection":"native marker geometry retained","marker geometry was not present in backend output")},"marker/paint/render":(e,n)=>{const t=L(e,M.nodes.marker);return v((n.realization==="native"||n.realization==="projected")&&t.includes('fill="#a33b20"')&&t.includes('stroke="#334155"'),n.realization==="projected"?"typed marker paint retained in the marker resource projection":"native marker paint retained","marker paint was not present in backend output")},"marker/identity/serialize":e=>{const n=L(e,M.nodes.marker);return v(n.includes('id="backend-conformance-arrow"'),"marker resource identity retained","marker resource identity was lost")},"data-mark/geometry/render":(e,n)=>un(e,n,M.nodes.dataMark),"data-mark/paint/render":(e,n)=>un(e,n,M.nodes.dataMark,t=>t.includes("#a33b20")&&t.includes("#334155")),"data-mark/identity/serialize":e=>{const n=L(e,M.nodes.dataMark);return v(n.includes('data-id="backend-conformance-data-mark"')&&n.includes('data-role="bar"'),"quantitative mark DOM identity retained","quantitative mark DOM identity was lost")}});function Xu(e){return ti.includes(e.primitive)&&bs.includes(e.feature)&&hs.includes(e.operation)}function qu(e){return e.capabilities.map(n=>{const t=ri(n);const r=Ku[ec(n)];const i={claimKey:t,target:n.target,primitive:n.primitive,feature:n.feature,operation:n.operation,realization:n.realization,...n.diagnostic?{limitation:n.diagnostic}:{}};if(!r){return Xu(n)?{...i,status:"failed",diagnostic:"No executable witness is registered for this core claim."}:{...i,status:"unverified-extension",diagnostic:"Namespaced extension claim is outside the built-in witness vocabulary."}}const o=`${nc}/${ec(n)}`;try{const s=r(e,n);return{...i,witnessId:o,status:s.passed?"passed":"failed",observation:s.observation,...s.diagnostic?{diagnostic:s.diagnostic}:{}}}catch(s){return{...i,witnessId:o,status:"failed",diagnostic:`Witness threw ${s instanceof Error?s.message:String(s)}`}}})}function zi(e,n=e.id){M??=$r(void 0,Hu);const t=[];const r=(x,S,y)=>{t.push(Object.freeze({id:x,passed:S,...y?{diagnostic:y}:{}}))};const i=[];const o=[];for(const x of M.probes){try{const S=L(e,x.node);const y=L(e,x.node);if(typeof S!=="string"||typeof y!=="string"){i.push(`${x.primitive} returned a non-string`);o.push(`${x.primitive} returned a non-string`);continue}if(S!==y)i.push(`${x.primitive} changed between identical calls`);const E=x.requiredFragments.filter(R=>!S.includes(R));if(E.length>0)o.push(`${x.primitive} ${Qa(E)}`)}catch(S){const y=`${x.primitive} threw ${S instanceof Error?S.message:String(S)}`;i.push(y);o.push(y)}}r("draw-node-determinism",i.length===0,i.join("; ")||void 0);r("draw-node-semantics",o.length===0,o.join("; ")||void 0);let s="";let a="";let c;try{s=fn(e);a=fn(e);if(typeof s!=="string"||typeof a!=="string"){c="render must return a string";s=typeof s==="string"?s:"";a=typeof a==="string"?a:""}else if(s!==a){c="render changed between identical calls"}}catch(x){c=`render threw ${x instanceof Error?x.message:String(x)}`}r("document-determinism",c===void 0,c);const d=ls(s);r("single-svg-document",d,d?void 0:"render must return one well-formed namespaced SVG document");const l=s.match(/\b(?:NaN|Infinity|undefined)\b/)?.[0];r("finite-serialization",!l,l?`serialized ${l}`:void 0);const u=ni(s);let m;try{Ht(s,"default")}catch(x){m=x instanceof Error?x.message:String(x)}const f=u.ok&&m===void 0;r("output-security",f,f?void 0:[m,u.ok?void 0:`unsafe SVG constructs: ${u.refs.join(", ")}`].filter(Boolean).join("; "));const g=[["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"']]];for(const[x,S]of g){const y=S.filter(E=>!s.includes(E));r(x,y.length===0,Qa(y))}const b=qu(e);const h=b.filter(x=>x.status==="failed");r("capability-claims",h.length===0,h.map(x=>`${x.primitive}/${x.feature}/${x.operation}: ${x.diagnostic??"failed"}`).join("; ")||void 0);const k={version:Yu,fixtureId:nc,backendId:n,contracts:{scene:Vt,outputSecurity:cs},directOutputs:["svg"],passed:t.every(x=>x.passed),checks:t,claims:b};return en(k)}var rc=Symbol();function Ah(){const e={begin(n,t){e.scene=t;const r=new Map(t.parts.map((i,o)=>[i,o]));n[rc]=(i,o)=>{if(i.kind==="document")return o;const s=r.get(i);if(s===void 0)throw new Error("Resolved Scene part is not in the rendered document");return`<!--am-part-start:${s}-->${o}<!--am-part-end:${s}-->`}},finish(n){return Ju(n,e)}};return e}function ic(e,n,t){return e[rc]?.(n,t)??t}function Ju(e,n){const t=[];const r=e.replace(/<!--am-part-(start|end):(\d+)-->/g,(a,c,d,l)=>{t.push({start:l,end:l+a.length,owner:c==="start"?Number(d):-1});return""});const i=new Set(t.filter(a=>a.owner>=0).map(a=>a.owner));n.scene?.parts.forEach((a,c)=>{if(a.kind!=="document"&&!i.has(c))throw new Error(`Resolved Scene part "${a.id}": backend did not report ownership`)});let o=0,s=-1;n.owners=Be(e).map(a=>{while(o<t.length&&t[o].end<=a.start)s=t[o++].owner;return s});return r}function Vh(e){if(e===void 0)return void 0;if(typeof e!=="object"&&typeof e!=="function"||e===null){throw new TypeError("backendPolicy must be an object with a selectBackend function")}const n=e.selectBackend;if(typeof n!=="function"){throw new TypeError("backendPolicy.selectBackend must be a function")}let t;t=Object.freeze({selectBackend(r){return Reflect.apply(n,t,[r])}});return t}function Uh(e,n,t,r){return[e,...r.map(i=>xt(i.serialized,i.indent)),n].join(t)}function Zu(e,n){if(!n.style||e.transparent)return"";return`<rect width="${U(e.width)}" height="${U(e.height)}" fill="var(--bg)" data-backdrop="page" />`}var pn={id:"default",capabilities:Ss("backend:default","crisp"),drawNode(e){return z(e)},render(e,n){const t=wt(e);const r=Zu(t,n);return t.parts.map((i,o)=>{const s=ic(n,i,z(i));return r&&o===0?`${s}
|
|
57
|
-
${r}`:s}).join("\n")}};var Bi=new WeakSet([pn.render]);var Qu=Object.getOwnPropertyDescriptors(pn);var Li;function ef(e){if(e!==pn)return false;for(const n of["id","capabilities","drawNode","render"]){const t=Object.getOwnPropertyDescriptor(e,n);if(!t||!("value"in t)||t.value!==Qu[n].value)return false}return true}function Gh(e){return e===pn&&Bi.has(e.render)}function Yh(e){return Li!==void 0&&e===Li}var ac="1.0.0";var nf=Object.freeze({core:Ve,scene:"^2.0.0"});var tf=Object.freeze({owner:"agentic-mermaid",source:"built-in",reference:"src/scene/backend.ts"});var rf=Object.freeze({owner:"host",source:"in-process"});var Kn=new Map;var Fi=new Map;var Cr=new Map;var Tt;var xe=null;function of(e,n,t){let r;let i=false;return{running:()=>i,report:()=>{if(r)return r;const o=xe;xe=n;i=true;try{r=zi(t?tc(e):e,n)}finally{i=false;xe=o}return r}}}function sf(e,n){if(e.passed)return;const t=e.checks.filter(r=>!r.passed).map(r=>`${r.id}${r.diagnostic?`: ${r.diagnostic}`:""}`);throw new Error(`Built-in backend "${n}" failed SVG conformance: ${t.join("; ")}`)}function af(e,n,t){const r=e;const{drawNode:i,render:o}=e;let s=false;const a=()=>{if(s||t.running())return;const c=t.report();sf(c,n);s=true};r.drawNode=(c,d)=>{a();return i.call(e,c,d)};r.render=(c,d)=>{a();return o.call(e,c,d)};if(e===pn&&Bi.has(o))Bi.add(r.render);return e}function Wi(){if(xe!==null){throw new Error(`Backend registry mutation is forbidden while candidate "${xe}" is undergoing conformance`)}}function cc(e,n){return kn({id:e,kind:"backend",version:n.version??ac,compatibility:n.compatibility,provenance:n.provenance??rf})}function dc(e,n){if(!Array.isArray(e.capabilities)){throw new Error(`Backend "${e.id}" must declare capability claims`)}const t=Kt(e.capabilities);if(!t.valid)throw new Error(`Backend "${e.id}" has invalid capabilities: ${t.diagnostics.join("; ")}`);if(e.capabilities.length===0)throw new Error(`Backend "${e.id}" must declare capability claims`);const r=e.capabilities.find(o=>o.target!==n);if(r)throw new Error(`Backend "${e.id}" capability target must be "${n}"`);const i=e.capabilities.find(o=>!o.evidence?.trim());if(i){throw new Error(`Backend "${e.id}" capability ${i.primitive}/${i.feature}/${i.operation} must declare evidence`)}for(const{primitive:o,feature:s,operation:a}of xs){if(!e.capabilities.some(c=>c.primitive===o&&c.feature===s&&c.operation===a)){throw new Error(`Backend "${e.id}" must declare an evidenced essential ${o}/${s}/${a} capability`)}}}function lc(e){const n=["target","primitive","feature","operation","realization","evidence","diagnostic"];return Object.freeze(e.map(t=>{const r=(typeof t==="object"||typeof t==="function")&&t!==null;const i=r?t:void 0;const o=i?{...i}:{};if(i){for(const s of n){if(!Object.prototype.hasOwnProperty.call(o,s)){o[s]=Reflect.get(i,s)}}}return Object.freeze(o)}))}function Er(e,n,t){return Object.prototype.hasOwnProperty.call(e,t)?e[t]:Reflect.get(n,t)}function cf(e){if(typeof e!=="object"&&typeof e!=="function"||e===null){throw new TypeError("registerBackend requires a backend object")}const n=e;const t={...n};const r=Er(t,n,"id");if(typeof r!=="string")throw new TypeError("registerBackend id must be a string");const i=Er(t,n,"capabilities");if(!Array.isArray(i)){throw new Error(`Backend "${r}" must declare capability claims`)}const o=Er(t,n,"drawNode");const s=Er(t,n,"render");const a={...t,id:r,capabilities:lc(i),drawNode(c,d){return o.call(a,c,d)},render(c,d){return s.call(a,wt(c),d)}};return Object.freeze(a)}function df(e){const n=e;n.capabilities=lc(e.capabilities);return Object.freeze(e)}function Hh(e,n){Wi();xe="<unread>";try{if(!n||typeof n!=="object"){throw new TypeError("registerBackend options with explicit core and Scene compatibility ranges are required")}const t=cf(e);const r=t.id;xe=r;const i=Je(r);if(!i||i.kind!=="backend"){throw new Error(`registerBackend id "${r}" must use the "backend:" namespace`)}const o=cc(r,n);Yr(o,"core");Yr(o,"scene");dc(t,r);const s=zi(t,r);if(!s.passed){const c=s.checks.filter(d=>!d.passed).map(d=>`${d.id}${d.diagnostic?`: ${d.diagnostic}`:""}`);throw new Error(`Backend "${r}" failed registration SVG conformance: ${c.join("; ")}`)}st(Kn,{identity:o,value:t});Cr.set(r,()=>s);Tt=void 0;const a=Kn.get(r);return()=>{Wi();if(Kn.get(r)!==a)return;Kn.delete(r);Cr.delete(r);Tt=void 0}}finally{xe=null}}function uc(e){Wi();xe="<built-in>";try{const n=e.id;const t=ot("backend",n);xe=t;const r=Fi.get(n);if(r!==void 0)throw new Error(`Backend input name "${n}" already selects "${r}"`);const i=ef(e);dc(e,t);const o=of(e,t,i);const s=df(af(e,n,o));st(Kn,{identity:cc(t,{version:ac,compatibility:nf,provenance:tf}),value:s});Cr.set(t,o.report);Fi.set(n,t);if(i)Li=s;Tt=void 0}finally{xe=null}}function oc(){return Object.freeze(Array.from(Kn.values(),({identity:e,value:n})=>{const t=Cr.get(e.id);return Object.freeze({identity:e,backend:n,inputName:Array.from(Fi.entries()).find(([,r])=>r===e.id)?.[0]??e.id,get conformance(){return t()}})}))}function sc(e,n){return e.find(t=>t.identity.id===n||t.inputName===n)}function lf(e,n){Xe("backend-registry",n?"bypass":Tt?"hit":"miss");const t=n?oc():Tt??=oc();const r=sc(t,e);if(!n)return r;const i=n.selectBackend(Object.freeze({requestedId:e,...r?{canonicalId:r.identity.id}:{},registered:t}));if(i===null)return void 0;if(typeof i==="string")return sc(t,i);return r}function Kh(e,n){return lf(e,n)?.backend}uc(pn);function fc(e){let n=2166136261;for(let t=0;t<e.length;t++){n^=e.charCodeAt(t);n=Math.imul(n,16777619)}return n>>>0}function Jh(...e){return fc(e.join("|")).toString(36)}function Zh(e){let n=e>>>0;return()=>{n|=0;n=n+1831565813|0;let t=Math.imul(n^n>>>15,1|n);t=t+Math.imul(t^t>>>7,61|t)^t;return((t^t>>>14)>>>0)/4294967296}}function Qh(e,n,t){return fc(`${e>>>0}|${n}|${t}`)}export{zr as a,We as b,id as c,Se as d,fe as e,Br as f,Fr as g,Wr as h,Lr as i,Fe as j,xn as k,Lt as l,gp as m,it as n,yp as o,ge as p,hp as q,Io as r,ie as s,_o as t,sd as u,bp as v,ma as w,Vs as x,og as y,Ae as z,er as A,ro as B,io as C,bf as D,oo as E,so as F,xf as G,_r as H,ne as I,mc as J,De as K,Nr as L,xc as M,Sc as N,ff as O,pf as P,kc as Q,Ec as R,yf as S,$r as T,je as U,Dc as V,po as W,Zn as X,At as Y,zc as Z,Ne as _,Nf as $,Yc as aa,hn as ba,Le as ca,jt as da,zt as ea,rt as fa,ep as ga,np as ha,tp as ia,rp as ja,bn as ka,ra as la,mt as ma,Ng as na,Pn as oa,de as pa,rn as qa,Ee as ra,tr as sa,Ks as ta,Xs as ua,J as va,Bn as wa,Kg as xa,an as ya,Xg as za,xa as Aa,Ge as Ba,Hl as Ca,zn as Da,ha as Ea,qg as Fa,Pr as Ga,U as Ha,nt as Ia,So as Ja,lp as Ka,qc as La,Jc as Ma,Qc as Na,Dr as Oa,ae as Pa,j as Qa,up as Ra,Xe as Sa,Of as Ta,Mf as Ua,Be as Va,zf as Wa,Fc as Xa,bo as Ya,Bf as Za,Lf as _a,Ff as $a,Pt as ab,Wf as bb,Sn as cb,Ep as db,Do as eb,Cp as fb,wp as gb,ce as hb,vp as ib,K as jb,Dp as kb,jp as lb,zp as mb,Wo as nb,Vo as ob,Uo as pb,Yo as qb,Bp as rb,Lp as sb,Fp as tb,Wp as ub,pa as vb,Ve as wb,Vt as xb,Xp as yb,xd as zb,Yr as Ab,Sd as Bb,ot as Cb,Je as Db,kn as Eb,Gr as Fb,st as Gb,ke as Hb,Ze as Ib,at as Jb,Ue as Kb,Gt as Lb,Cn as Mb,Qe as Nb,vd as Ob,wn as Pb,zd as Qb,Mg as Rb,oa as Sb,Ig as Tb,aa as Ub,ry as Vb,z as Wb,xt as Xb,St as Yb,ay as Zb,rm as _b,Yt as $b,qr as ac,Jr as bc,zg as cc,yt as dc,fa as ec,te as fc,se as gc,en as hc,F as ic,sl as jc,al as kc,Xt as lc,Em as mc,Cm as nc,Es as oc,cs as pc,ls as qc,am as rc,cm as sc,ni as tc,Ht as uc,lm as vc,ti as wc,pm as xc,mm as yc,hs as zc,bs as Ac,xs as Bc,ol as Cc,gm as Dc,Ss as Ec,ym as Fc,Kt as Gc,dn as Hc,He as Ic,Ct as Jc,_u as Kc,xr as Lc,Pi as Mc,vi as Nc,Hn as Oc,Di as Pc,Ba as Qc,La as Rc,$n as Sc,Rn as Tc,Nn as Uc,nn as Vc,qt as Wc,kl as Xc,El as Yc,Oe as Zc,Jm as _c,$l as $c,Zm as ad,Ol as bd,_l as cd,lt as dd,Qm as ed,eg as fd,ng as gd,Jh as hd,Zh as id,Qh as jd,lg as kd,he as ld,ug as md,gi as nd,yi as od,Qs as pd,tu as qd,G as rd,Z as sd,yr as td,xu as ud,Mu as vd,ju as wd,eh as xd,rh as yd,Ya as zd,Ka as Ad,qa as Bd,wt as Cd,Gu as Dd,Yu as Ed,nc as Fd,$h as Gd,zi as Hd,Ah as Id,ic as Jd,Vh as Kd,Uh as Ld,Zu as Md,pn as Nd,Gh as Od,Yh as Pd,sf as Qd,Hh as Rd,uc as Sd,oc as Td,lf as Ud,Kh as Vd};
|
|
58
|
-
//# sourceMappingURL=chunk-PNL435CH.js.map
|