/**
 * Bundled by jsDelivr using Rollup v2.79.2 and Terser v5.39.0.
 * Original file: /npm/wesl@0.6.9/dist/index.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
var t,e,n,r,s,o,i,a,c,u=Object.defineProperty,l=t=>{throw TypeError(t)},d=(t,e,n)=>((t,e,n)=>e in t?u(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n)(t,"symbol"!=typeof e?e+"":e,n),p=(t,e,n)=>e.has(t)||l("Cannot "+n),f=(t,e,n)=>(p(t,e,"read from private field"),n?n.call(t):e.get(t)),m=(t,e,n)=>e.has(t)?l("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,n),h=(t,e,n,r)=>(p(t,e,"write to private field"),r?r.call(t,n):e.set(t,n),n);function g(t){throw new x("Unreachable value",{data:t})}let x=class extends Error{constructor(t,e){super(t,e),d(this,"data"),this.data=null==e?void 0:e.data}},v=console.log;function b(t,e,...n){!function(t,e,n,...r){if("string"==typeof e)return void y(t,e,n,...r);const{src:s,positions:o}=function(t,e){var n,r,s,o;const i=t.mapPositions(...[e].flat()),{src:a}=i[0];let c;c=(null==(r=null==(n=i[1])?void 0:n.src)?void 0:r.path)===a.path&&(null==(o=null==(s=i[1])?void 0:s.src)?void 0:o.text)===a.text?i.map((t=>t.position)):i[0].position;return{src:a,positions:c}}(e,n);y(t,s.text,o,...r)}(v,t,e,...n)}function k(t){return t?`'${t.replace(/\n/g,"\\n")}'`:""}function y(t,e,n,...r){t(...r);const{line:s,lineNum:o,linePos:i,linePos2:a}=function(t,e){let n,r;"number"==typeof e?n=e:[n,r]=e;const s=function(t){const e=_.get(t);if(e)return e;const n=[...t.matchAll(/\n/g)].map((t=>t.index+1));return n.unshift(0),_.set(t,n),n}(t);let o,i=0,a=s.length-1;n>=s[a]&&(i=a);for(;i+1<a;){const t=i+a>>1;n>=s[t]?i=t:a=t}void 0!==r&&r>=s[i]&&r<s[a]&&(o=r-s[i]);const c=t.slice(s[i],s[i+1]||t.length),u="\n"===c.slice(-1)?c.slice(0,-1):c;return{line:u,linePos:n-s[i],linePos2:o,lineNum:i+1}}(e,n);t(s,`  Ln ${o}`);const c=function(t,e){const n=" ".repeat(t),r=e?e-t:1,s="^".repeat(r);return n+s}(i,a);t(c)}const _=new Map;function w(t,e){return et(`token '${t}' ${k(e)}`,(function(n){n.stream.checkpoint();const r=n.stream.nextToken();return null===r||r.kind!==t||r.text!==e?null:{value:r}}))}function E(t,e){return et(`tokenOf '${t}'`,(function(n){n.stream.checkpoint();const r=n.stream.nextToken();return null===r?null:r.kind===t&&e.includes(r.text)?{value:r}:null}))}function S(t){return et(`tokenKind '${t}'`,(function(e){e.stream.checkpoint();const n=e.stream.nextToken();return null===n||n.kind!==t?null:{value:n}}))}function N(t){return et(`kind '${t}'`,(function(e){e.stream.checkpoint();const n=e.stream.nextToken();return null===n||n.kind!==t?null:{value:n.text}}))}function $(t){return et(`${k(t)}`,(function(e){e.stream.checkpoint();const n=e.stream.nextToken();return null===n||n.text!==t?null:{value:n.text}}))}function M(...t){const e=t.map(q);return tt("seq",(function(t){const n=[];for(const r of e){const e=r._run(t);if(null===e)return null;n.push(e.value)}return{value:n}}))}function P(t,e){const n=q(t),r=q(e);return tt("preceded",(function(t){if(null===n._run(t))return null;return r._run(t)}))}function T(t,e){const n=q(t),r=q(e);return tt("terminated",(function(t){const e=n._run(t);if(null===e)return null;return null===r._run(t)?null:e}))}function j(t,e,n){const r=q(t),s=q(e),o=q(n);return tt("delimited",(function(t){if(null===r._run(t))return null;const e=s._run(t);if(null===e)return null;return null===o._run(t)?null:e}))}function B(...t){const e=t.map(q);return tt("or",(function(t){const n=t.stream.checkpoint();for(const r of e){const e=r._run(t);if(null!==e)return e;t.stream.reset(n)}return null}))}function A(t){const e=q(t);return tt("opt",(function(t){const n=t.stream.checkpoint(),r=e._run(t);return null===r?(t.stream.reset(n),{value:null}):r}))}function C(t){return tt("repeat",function(t,e=()=>!0){return function(n){const r=[];for(;;){const s=n.stream.checkpoint(),o=t._run(n);if(null===o)return n.stream.reset(s),{value:r};if(!e(o))return{value:r};r.push(o.value)}}}(q(t)))}function O(t){const e=q(t);return M(e,C(e)).map((t=>[t[0],...t[1]])).setTraceName("repeatPlus")}function I(t){const e=q(t);return tt("span",(function(t){var n,r;const s=(null==(r=null==(n=function(t){const e=t.checkpoint(),n=t.nextToken();return t.reset(e),n}(t.stream))?void 0:n.span)?void 0:r[0])??null,o=e._run(t);if(null===o)return null;const i=t.stream.checkpoint();return{value:{value:o.value,span:[s??i,i]}}}))}function R(t,e){const n=q(t);return tt("req",(function(t){const r=t.stream.checkpoint(),s=n._run(t);if(null===s)throw new H(e,[r,t.stream.checkpoint()]);return s}))}function F(){return et("yes",(function(){return{value:null}}))}function L(t,e,n={}){const{trailing:r=!0,requireOne:s=!1}=n,o=q(e),i=q(t);return tt("withSep",(function(t){const e=[],n=t.stream.checkpoint(),a=o._run(t);if(null===a)return t.stream.reset(n),s?null:{value:e};for(e.push(a.value);;){const n=t.stream.checkpoint();if(null===i._run(t)){t.stream.reset(n);break}const s=t.stream.checkpoint(),a=o._run(t);if(null===a){r?t.stream.reset(s):t.stream.reset(n);break}e.push(a.value)}return{value:e}}))}function U(t,e){return L(t,e,{requireOne:!0}).setTraceName("withSepPlus")}function D(t){return et("withStreamAction",(function(e){const n=t(e.stream);return null===n?null:{value:n}}))}function q(t){return"string"==typeof t?$(t):t instanceof Q?t:W(t)}function W(t){const e=new Q({fn:function(n){const r=t();if(!t){const t=n.stream.checkpoint();throw new H("fn parser called before definition",[t,t])}return e.fn=r.fn,e._run(n)},traceName:"fn()",terminal:!1});return e}function G(t){const e=q(t);return tt("tagScope",(function(t){const n=t.stream.checkpoint();let r;return z(t,n,(t=>{r=function(t){const e=Object.entries(t).map((([t,e])=>[t,[...e]]));return Object.fromEntries(e)}(t.tags),t.tags={}}),`scope.before ${e.debugName}`),X(e,t,(t=>{t.tags=r}),"tagScope")}))}function X(t,e,n,r=""){const s=e.stream.checkpoint(),o=t._run(e);return o&&z(e,s,n,r),o}function z(t,e,n,r){const s=function(t,e){const n=t.checkpoint();t.reset(e);const r=function(t){const e=t.nextToken();return null===e||t.reset(e.span[0]),t.checkpoint()}(t);return t.reset(n),{start:r,end:n}}(t.stream,e);t._collect.push({srcPosition:s,collectFn:n,debugName:r})}function J(t){t._values.push({value:null,openArray:[]})}function V(t){const e=K(t._values);void 0===e.openArray&&console.log("---closeArray: no open array"),t._values.pop(),Z(t,e.openArray)}function Y(t,e,n){void 0===t[e]&&(t[e]=[]),t[e].push(n)}function Z(t,e){if(void 0!==e){const n=K(t._values);n||console.log("----saveCollectValue: no valueEntry"),n&&(n.value=e),void 0!==(null==n?void 0:n.openArray)&&n.openArray.push(e)}}function K(t){return t[t.length-1]}class H extends Error{constructor(t,e){super(t),d(this,"span"),this.span=e}}class Q{constructor(t){d(this,"_traceInfo"),d(this,"fn"),this.fn=t.fn}_run(t){{const e=t.app.context,n=t._collect.length,r=this.fn(t);return null===r&&(t.app.context=e,t._collect.length=n),r}}ptag(t){return function(t,e){return tt("ptag",(function(n){const r=n.stream.checkpoint(),s=t._run(n);return s&&z(n,r,(t=>Y(t.tags,e,s.value)),`ptag ${e}`),s}))}(this,t)}ctag(t){return function(t,e){return tt("ctag",(function(n){return X(t,n,(t=>{const n=K(t._values);Y(t.tags,e,n.value)}),`ctag ${e}`)}))}(this,t)}setTraceName(t){return this}setTrace(t={}){return this}map(t){return function(t,e){return tt("map",(function(n){const r=t._run(n);return null===r?null:{value:e(r.value)}}))}(this,t)}collect(t,e){return function(t,e,n){const r=(null==e?void 0:e.after)??e,s=null==e?void 0:e.before;let o=r;n&&(o=t=>{const e=r(t);return null!=e&&Y(t.tags,n,e),e});const i=n?`${t.debugName}-${n}`:`${t.debugName}`;return tt("collect",(function(e){const n=e.stream.checkpoint();return s&&z(e,n,s,`${i}.before`),X(t,e,o,i)}))}(this,t,e)}toParser(t){return e=this,n=t,tt("toParser",(function(t){const r=e._run(t);if(null===r)return null;const s=n(r);return null===s?r:s._run(t)}));var e,n}parse(t){const{stream:e,appState:n={context:{},stable:[]}}=t,r=[],s=this._run({stream:e,app:n,_collect:r});return s&&function(t,e,n){const{src:r}=n,s={tags:{},src:r,start:-1,end:-1,app:e,_values:[{value:null,openArray:void 0}]};t.forEach((t=>{const{collectFn:e,srcPosition:n}=t;s.start=n.start,s.end=n.end;const r=e(s);Z(s,r)}))}(r,n,e),s}get debugName(){return"parser"}}function tt(t,e,n){return new Q({fn:e,traceName:t,terminal:n})}function et(t,e){return tt(t,e,!0)}class nt{constructor(t,e=[]){d(this,"entries"),d(this,"dest"),this.dest=t,this.entries=e}addEntries(t){this.entries.push(...t)}mapPositions(...t){return t.map((t=>this.destToSrc(t)))}compact(){if(!this.entries.length)return;let t=this.entries[0];const e=[t];for(let n=1;n<this.entries.length;n++){const r=this.entries[n];r.src.path===t.src.path&&r.src.text===t.src.text&&t.destEnd===r.destStart&&t.srcEnd===r.srcStart?(t.destEnd=r.destEnd,t.srcEnd=r.srcEnd):(e.push(r),t=r)}this.entries=e}sort(){this.entries.sort(((t,e)=>t.destStart-e.destStart))}merge(t){if(t===this)return this;const e=t.entries.filter((t=>t.src.path===this.dest.path&&t.src.text===this.dest.text));if(0===e.length)return console.log("other source map does not link to this one"),t;e.sort(((t,e)=>t.srcStart-e.srcStart));const n=e.map((t=>{const{src:e,position:n}=this.destToSrc(t.srcStart),{src:r,position:s}=this.destToSrc(t.srcEnd);if(r!==e)throw new Error("NYI, need to split");return{src:e,srcStart:n,srcEnd:s,destStart:t.destStart,destEnd:t.destEnd}})),r=t.entries.filter((t=>t.src.path!==this.dest.path||t.src.text!==this.dest.text)),s=new nt(t.dest,[...r,...n]);return s.sort(),s}destToSrc(t){const e=this.entries.find((e=>e.destStart<=t&&e.destEnd>=t));return e?{src:e.src,position:e.srcStart+t-e.destStart}:{src:this.dest,position:t}}}class rt{constructor(r){m(this,t,[]),m(this,e,0),m(this,n,[]),this.source=r}add(r,s,o){const i=f(this,e);h(this,e,f(this,e)+r.length);const a=f(this,e);f(this,t).push(r),f(this,n).push({src:this.source,srcStart:s,srcEnd:o,destStart:i,destEnd:a})}appendNext(t){var e;const r=(null==(e=f(this,n).at(-1))?void 0:e.destEnd)??0;this.add(t,r,r+t.length)}addSynthetic(r,s,o,i){const a=f(this,e);h(this,e,f(this,e)+r.length);const c=f(this,e);f(this,t).push(r),f(this,n).push({src:{text:s},srcStart:o,srcEnd:i,destStart:a,destEnd:c})}addNl(){const t=f(this,n).at(-1)??{srcStart:0,srcEnd:0},{srcStart:e,srcEnd:r}=t;this.add("\n",e,r)}addCopy(t,e){const n=this.source.text.slice(t,e);this.add(n,t,e)}static build(e){const r=new nt({text:e.map((e=>f(e,t).join(""))).join("")},e.flatMap((t=>f(t,n))));return r.compact(),r}}t=new WeakMap,e=new WeakMap,n=new WeakMap;class st{constructor(t){d(this,"cache",new ot(5)),this.inner=t}checkpoint(){return this.inner.checkpoint()}reset(t){this.inner.reset(t)}nextToken(){const t=this.checkpoint(),e=this.cache.get(t);if(void 0!==e)return this.reset(e.checkpoint),e.token;{const e=this.inner.nextToken(),n=this.checkpoint();return this.cache.set(t,{token:e,checkpoint:n}),e}}get src(){return this.inner.src}}class ot extends Map{constructor(t){super(),this.max=t}set(t,e){if(this.size>this.max){const t=this.keys().next().value;t&&this.delete(t)}return super.set(t,e)}}function it(t){const[e,n]=t;if("string"==typeof n){const t=`(${ut(n)})`;return at(e,new RegExp(t)),t}return at(e,n),`(${n.source})`}function at(t,e){if(new RegExp("|"+e.source).exec("").length>1)throw new Error(`match expression groups must be non-capturing: ${t}: /${e.source}/. Use (?:...) instead.`)}const ct=/[$+*.?|(){}[\]\\/^]/g;function ut(t){return t.replace(ct,"\\$&")}function lt(t){const e=t.split(/\s+/).sort(((t,e)=>e.length-t.length)).filter((t=>t)).map(ut);return new RegExp(e.join("|"))}class dt{constructor(t,e){d(this,"position",0),this.text=t,this.matchers=e}checkpoint(){return this.position}reset(t){this.position=t}nextToken(){const t=this.matchers.execAt(this.text,this.position);return null===t?null:(this.position=t.span[1],t)}get src(){return this.text}}function pt(t){throw new ft("Unreachable value",{data:t})}class ft extends Error{constructor(t,e){super(t,e),d(this,"data"),this.data=null==e?void 0:e.data}}function mt(t,e,n,r){const s=t.get(e)||new Map;t.set(e,s),s.set(n,r)}const ht=/\b(\w+)\b/gi;function gt(t,e){return t.replaceAll(ht,(t=>t in e?e[t]:t))}function xt(t,e,n=e){const r=[];for(let s=0;s<t.length;s+=n)r.push(t.slice(s,s+e));return r}function vt(t,e){const n=new Map;for(const r of t){const t=e(r),s=n.get(t)||[];s.push(r),n.set(t,s)}return n}function bt(t,e){const n=[],r=[];for(const s of t)e(s)?n.push(s):r.push(s);return[n,r]}function kt(t,e,n){const r=[n];let s=n;for(let n=0;n<t.length;n++)s=e(t[n],s),r.push(s);return r}function yt(t,e){const n=Object.entries(t).map((([t,n])=>[t,n in e?e[n]:n]));return Object.fromEntries(n)}function _t(t){return t[t.length-1]}function wt(t,e){let n=Math.min(t.length,e.length);for(;n>0;){if(Et(t.slice(-n),e.slice(0,n)))break;n--}if(n)return e.slice(n)}function Et(t,e){return t.length===e.length&&t.every(((t,n)=>t===e[n]))}function St(t,e){const n=[];for(const r of t){const t=e(r);t&&n.push(t)}return n}function Nt(t,e){for(const n of t){const t=e(n);if(t)return t}}function $t(t,e){return Object.fromEntries(Object.entries(t).map((([t,n])=>[t,e(n)])))}function Mt(t,e){const n=Math.min(e.length,Math.max(0,t));let r=0,s=1;for(;;){const t=e.indexOf("\n",r);if(-1===t||n<=t){return[s,n-r+1]}r=t+1,s+=1}}function Pt(t,e){let n=t.lastIndexOf("\n",e[0]);-1===n&&(n=0);let r=t.indexOf("\n",e[0]);-1===r&&(r=t.length);const s=e[1]-e[0],o=Math.max(1,s),i=e[0]-n;return[t.slice(n,r)," ".repeat(i)+"^".repeat(o)]}
/*!
Copyright (c) 2017-2021 [these people](https://github.com/Rich-Harris/vlq/graphs/contributors)

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/const Tt={};function jt(t){if("number"==typeof t)return Bt(t);let e="";for(let n=0;n<t.length;n+=1)e+=Bt(t[n]);return e}function Bt(t){let e,n="";e=t<0?-t<<1|1:t<<1;do{let t=31&e;e>>>=5,e>0&&(t|=32),n+=Tt[t]}while(e>0);return n}function At(t){const{url:e,text:n,lineNumber:r,lineColumn:s,length:o,error:i}=t,a={version:3,file:null,sources:[e],sourcesContent:[n??null],names:[],mappings:jt([0,0,Math.max(0,r-1),Math.max(0,s-1)])+","+jt([18,0,Math.max(0,r-1),Math.max(0,s-1)+o])};let c=`throw new Error(${JSON.stringify(i.message+"")})`;c+="\n//# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(a)))),c+="\n//# sourceURL="+a.sources[0];let u=0;"stackTraceLimit"in Error&&(u=Error.stackTraceLimit,Error.stackTraceLimit=1);try{(0,eval)(c)}catch(t){throw"stackTraceLimit"in Error&&(Error.stackTraceLimit=u),i.message="",t}}function Ct(t,e){const{refIdentElem:n,originalName:r}=t,s=e??`'${r}'`;if(!n)throw new Error(s);Ot(n,s)}function Ot(t,e=""){const{srcModule:n,start:r,end:s}=t,{debugFilePath:o,src:i}=n,a=`${e} in file: ${o}`;b(i,[r,s],a);const[c,u]=Mt(r,i);At({url:o,text:i,lineNumber:c,lineColumn:u,length:s-r,error:new Error(a)})}function It(t,e){const n=t.attributes;if(!n)return!0;const r=Nt(n,Ft);return!r||Lt(r,e)}function Rt(t,e){const{ifAttribute:n}=t;if(!n)return!0;return Lt(n,e)}function Ft(t){const{attribute:e}=t;return"@if"===e.kind?e:void 0}function Lt(t,e){return Ut(t.param.expression,e)}function Ut(t,e){const{kind:n}=t;if("unary-expression"===n)return t.operator.value,!Ut(t.expression,e);if("binary-expression"!==n){if("literal"===n){const{value:e}=t;return"true"===e}if("parenthesized-expression"===n)return Ut(t.expression,e);if("translate-time-feature"===n)return e[t.name];throw new Error(`unexpected @if expression ${JSON.stringify(t)}`)}{const n=t.operator.value,r=Ut(t.left,e);if("||"===n)return r||Ut(t.right,e);if("&&"===n)return r&&Ut(t.right,e);pt(n)}}function Dt(t,e){e&&(t.kind,e.kind,t.parent,e.parent,e.ifAttribute,t.contents=t.contents.concat(e.contents))}function qt(){Wt=0,Gt=0}"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".split("").forEach(((t,e)=>{Tt[e]=t}));let Wt=0,Gt=0;function Xt(){return Gt++}function zt(t,e="scope"){return{id:Wt++,kind:e,parent:t,contents:[]}}function Jt(t,e){if(e===t)return!0;for(const n of t.contents)if(Vt(n)&&Jt(n,e))return!0;return!1}function Vt(t){const{kind:e}=t;return"partial"===e||"scope"===e}function Yt(t){return!Vt(t)}function Zt(t,e,n){for(const r of t.contents){if("decl"===r.kind&&r.originalName===e)return r;if("partial"===r.kind&&Rt(r,n)){const t=Zt(r,e,n);if(t)return t}}}class Kt{constructor(t=0,e=60,n=2){m(this,r,[]),m(this,s,0),m(this,o),m(this,i,!0),m(this,a,!1),m(this,c),this.indent=t,this.maxWidth=e,this.hangingIndent=n,h(this,o," ".repeat(t)),h(this,c," ".repeat(n))}nl(){f(this,r).push("\n"),h(this,s,0),h(this,i,!1),h(this,a,!1)}add(t){f(this,s)+function(t){const e=t.indexOf("\n");return-1===e?t.length:e}(t)>this.maxWidth&&this.hangingNl(),0===f(this,s)&&(f(this,r).push(f(this,o)),f(this,a)&&f(this,r).push(f(this,c)),h(this,s,this.indent)),f(this,r).push(t),h(this,s,f(this,s)+t.length)}addBlock(t,e=!0){f(this,r).push(t),e&&this.nl()}get result(){return f(this,r).join("")}get oneLine(){return f(this,i)}hangingNl(){this.nl(),h(this,a,!0)}}function Ht(t,e=0,n=!0){const{contents:r,kind:s,ifAttribute:o}=t,i=new Kt(e),a=o&&us(o);a&&i.add(a+" "),"partial"===s&&i.add("-"),i.add("{ ");const c=r.length-1;let u=!1,l=!1;return r.forEach(((t,r)=>{if(Vt(t)){const r=Ht(t,e+2,n);u||i.nl(),i.addBlock(r),u=!0,l=!0}else{u&&i.add("  "),u=!1;const e=t;n?i.add(function(t){const{kind:e,originalName:n}=t,r="decl"===e?"%":"";return`${r}${n}`}(e)):i.add(te(e)),r<c&&i.add(" ")}})),!l&&i.oneLine?i.add(" }"):(l&&!u&&i.nl(),i.add("}")),i.add(` #${t.id}`),i.result}function Qt(t){return Ht(t,0,!1)}function te(t){if(!t)return JSON.stringify(t);const{kind:e,originalName:n}=t,r=t.id?`#${t.id}`:"";if("ref"===e){return`${n} ${r} -> ${te(t.refersTo)}`}{const{mangledName:e}=t;return`%${n}${e?`(${e})`:""} ${r} `}}function ee(t=null){return{decls:new Map,parent:t}}function ne(t,e){const{modulePath:n}=e;return[...n.split("::"),t.originalName].map((t=>{const e=(t.match(/_/g)??[]).length;return e>0?"_"+e+t:t})).join("_")}function re(t,e){return"_"+[...e.modulePath.split("::"),t.originalName].map((t=>{return e=t,[...e].length+t;var e})).join("")}function se(t,e,n,r){return oe(n,r)}function oe(t,e){let n=t,r=0;for(;e.has(n);)n=t+r++;return n}function ie(t){return function t(e,n,r,s){if(r.length>0){const[o,...i]=r,a=[...e,o.name],c=[...n,o.name];return t(a,c,i,s)}if("import-collection"===s.kind)return s.subtrees.flatMap((r=>t(e,n,r.segments,r.finalSegment)));if("import-item"===s.kind){return[{importPath:[...e,s.as??s.name],modulePath:[...n,s.name]}]}pt(s)}([],[],t.segments,t.finalSegment)}r=new WeakMap,s=new WeakMap,o=new WeakMap,i=new WeakMap,a=new WeakMap,c=new WeakMap;function ae(t,e){const n=t.app.context,{openElems:r}=n;if(null==r?void 0:r.length){r[r.length-1].contents.push(e)}}function ce(t){const{src:e,start:n,end:r}=t,s=t.app,{srcModule:o}=s.stable,i={kind:"ref",originalName:e.slice(n,r),ast:t.app.stable,id:Xt(),refIdentElem:null},a={kind:"ref",start:n,end:r,srcModule:o,ident:i};return i.refIdentElem=a,fe(t,a),ae(t,a),a}function ue(t){return de(t,!1)}function le(t){return de(t,!0)}function de(t,e){const{src:n,start:r,end:s}=t,o=t.app,{scope:i}=o.context,{srcModule:a}=o.stable,c="decl",u={kind:c,start:r,end:s,srcModule:a,ident:{declElem:null,kind:c,originalName:n.slice(r,s),containingScope:i,isGlobal:e,id:Xt(),srcModule:a}};return fe(t,u),ae(t,u),u}(function(t){const e=new Map;return function(...n){const r=JSON.stringify(n);if(e.has(r))return e.get(r);{const s=t(...n);return e.set(r,s),s}}})((t=>" ".repeat(t)))(23),"undefined"==typeof DOMRect&&(globalThis.DOMRect=function(){});const pe=Ue("typeDecl",((t,e)=>{var n,r,s;const o=null==(n=t.tags.decl_elem)?void 0:n[0],i=null==(r=t.tags.typeRefElem)?void 0:r[0];return De({...e,decl:o,typeScope:null==(s=t.tags.decl_type)?void 0:s[0],typeRef:i},t)}));function fe(t,e){const{ident:n}=e;n.id=Xt();t.app.context.scope.contents.push(n)}function me(t){he("scope",t)}function he(t,e){const{scope:n}=e.app.context,r=zt(n,t);n.contents.push(r),e.app.context.scope=r}function ge(t){return xe(t,!0)}function xe(t,e){const n=t.app.context,r=n.scope,{parent:s}=r;if(s&&(n.scope=s),e){const e=function(t){const e=t.tags.attribute;return ve(e)}(t);r.ifAttribute=null==e?void 0:e[0]}return r}function ve(t){if(t)return St(t,(t=>"@if"===t.attribute.kind?t.attribute:void 0))}function be(t){return Ue(t,((t,e)=>{var n,r;const s=null==(n=t.tags.var_name)?void 0:n[0],o=null==(r=t.tags.decl_scope)?void 0:r[0],i=De({...e,name:s,attributes:t.tags.attribute},t),a=s.decl.ident;return a.declElem=i,s.typeScope?(Dt(s.typeScope,o),a.dependentScope=s.typeScope):a.dependentScope=o,i}))}const ke=Ue("alias",((t,e)=>{var n,r,s,o;const i=null==(n=t.tags.alias_name)?void 0:n[0],a=null==(r=t.tags.alias_scope)?void 0:r[0],c=null==(s=t.tags.typeRefElem)?void 0:s[0],u=De({...e,name:i,attributes:(null==(o=t.tags.attributes)?void 0:o.flat())??[],typeRef:c},t);return i.ident.dependentScope=a,i.ident.declElem=u,u})),ye=Ue("fn",((t,e)=>{var n;const r=function(t){const{fn_attributes:e,fn_name:n,fn_param:r,return_attributes:s}=t.tags,{return_type:o}=t.tags,{header_scope:i,return_scope:a,body_scope:c,body_statement:u}=t.tags,{fn_partial_scope:l}=t.tags,d=null==n?void 0:n[0],p=null==i?void 0:i[0],f=null==a?void 0:a[0],m=null==c?void 0:c[0],h=null==u?void 0:u[0],g=(null==r?void 0:r.flat(3))??[],x=null==e?void 0:e.flat(),v=null==s?void 0:s.flat(),b=null==o?void 0:o.flat(3)[0],k=null==l?void 0:l[0];return{name:d,headerScope:p,returnScope:f,bodyScope:m,body:h,params:g,attributes:x,returnAttributes:v,returnType:b,fnScope:k}}(t),{name:s,headerScope:o,returnScope:i,bodyScope:a,body:c,params:u}=r,{attributes:l,returnAttributes:d,returnType:p,fnScope:f}=r,m={...e,name:s,attributes:l,params:u,returnAttributes:d,body:c,returnType:p};f.ifAttribute=null==(n=ve(l))?void 0:n[0];const h=o;i&&Dt(h,i),Dt(h,a);const g=[];for(const t of f.contents)t!==o&&t!==i&&(t===a?g.push(h):g.push(t));return f.contents=g,s.ident.declElem=m,s.ident.dependentScope=h,m}));const _e=Ue("param",((t,e)=>{var n,r;const s=null==(n=t.tags.param_name)?void 0:n[0],o=De({...e,name:s,attributes:(null==(r=t.tags.attributes)?void 0:r.flat())??[]},t);return s.decl.ident.declElem=o,o})),we=Ue("struct",((t,e)=>{var n,r,s;const o=null==(n=t.tags.type_name)?void 0:n[0],i=t.tags.members,a=(null==(r=t.tags.attributes)?void 0:r.flat())??[];o.ident.dependentScope=null==(s=t.tags.struct_scope)?void 0:s[0];const c=De({...e,name:o,attributes:a,members:i},t);return o.ident.declElem=c,c})),Ee=Ue("member",((t,e)=>{var n,r,s;const o=null==(n=t.tags.nameElem)?void 0:n[0],i=null==(r=t.tags.typeRefElem)?void 0:r[0];return De({...e,name:o,attributes:null==(s=t.tags.attribute)?void 0:s.flat(3),typeRef:i},t)})),Se=Ue("attribute",((t,e)=>{var n;return{...e,attribute:null==(n=t.tags.attr_variant)?void 0:n[0]}})),Ne=Pe("assert"),$e=Pe("statement"),Me=Pe("switch-clause");function Pe(t){return Ue(t,((t,e)=>{var n;return De({...e,attributes:null==(n=t.tags.attribute)?void 0:n.flat(3)},t)}))}const Te=Ue("attribute",((t,e)=>{var n;const r=t.tags.attrParam;return{...e,attribute:{kind:"@attribute",name:null==(n=t.tags.name)?void 0:n[0],params:r}}})),je=Ue("type",((t,e)=>{var n,r;const s=null==(n=t.tags.templateParam)?void 0:n.flat(3),o=null==(r=t.tags.typeRefName)?void 0:r[0];return De({...e,name:"string"==typeof o?o:o.ident,templateParams:s},t)})),Be=Ue("expression",((t,e)=>De({...e},t)));const Ae=Ue("stuff",((t,e)=>De({...e},t))),Ce=Ue("memberRef",((t,e)=>{const{component:n,structRef:r,extra_components:s}=t.tags,o=null==n?void 0:n[0];return De({...e,name:null==r?void 0:r.flat()[0],member:o,extraComponents:null==s?void 0:s.flat()[0]},t)}));function Oe(t){const{start:e,end:n,src:r}=t,s={kind:"name",start:e,end:n,name:r.slice(e,n)};return ae(t,s),s}const Ie=Ue("module",((t,e)=>{const n=De(e,{...t,start:0,end:t.src.length});return t.app.stable.moduleElem=n,n}));const Re={before:me,after:ge},Fe={before:me,after:function(t){return xe(t,!1)}},Le={before:function(t){he("partial",t)},after:ge};function Ue(t,e){return{before:e=>{const n={kind:t,contents:[]};e.app.context.openElems.push(n)},after:n=>{const r=n.app.context.openElems.pop();console.assert(r&&r.kind===t);const s=e(n,{...r,start:n.start,end:n.end});return s&&ae(n,s),s}}}function De(t,e){const n=function(t,e){let{start:n}=t;const r=t.app.stable,{contents:s,end:o}=e,i=s.sort(((t,e)=>t.start-e.start)),a=[];for(const t of i)n<t.start&&a.push(c(t.start)),a.push(t),n=t.end;n<o&&a.push(c(o));return a;function c(t){return{kind:"text",start:n,end:t,srcModule:r.srcModule}}}(e,t);return{...t,contents:n}}const qe=N("word"),We=N("keyword"),Ge=U("::",B(qe,We,"package","super")),Xe=N("number");function ze(t,e){return{kind:"import-statement",segments:t,finalSegment:e}}function Je(t){return{kind:"import-segment",name:t}}function Ve(t,e){return{kind:"import-item",name:t,as:e}}function Ye(t,e){return e.segments=t.concat(e.segments),e}let Ze=null;const Ke=P(function(t){const e=q(t);return tt("not",(function(t){const n=t.stream.checkpoint();return null===e._run(t)?(t.stream.reset(n),{value:!0}):null}))}(B("super","package","import","as")),B(qe,We)),He=M(Ke,B(P("::",R(B(W((()=>Ze)),W((()=>He))),"invalid import, expected '{' or name")),P("as",R(qe,"invalid alias, expected name")).map((t=>Ve("",t))),F().map((()=>Ve(""))))).map((([t,e])=>"import-collection"===e.kind?ze([Je(t)],e):"import-statement"===e.kind?Ye([Je(t)],e):"import-item"===e.kind?(e.name=t,ze([],e)):void pt(e)));Ze=j("{",U(",",(()=>He)).map((function(t){return{kind:"import-collection",subtrees:t}})),R("}","invalid import collection, expected }"));const Qe=I(j("import",function(t){const e=Object.entries(t).map((([t,e])=>[t,q(e)]));return tt("seqObj",(function(t){const n={};for(const[r,s]of e){const e=s._run(t);if(null===e)return null;n[r]=e.value}return{value:n}}))}({relative:A(B(T("package",R("::","invalid import, expected '::'")).map((t=>[Je(t)])),O(T("super",R("::","invalid import, expected '::'")).map(Je)))),collection_or_statement:R(B(Ze,He),"invalid import, expected { or name")}).map((({relative:t,collection_or_statement:e})=>"import-statement"===e.kind?Ye(t??[],e):ze(t??[],e))),R(";","invalid import, expected ';'"))).map((t=>({kind:"import",imports:t.value,start:t.span[0],end:t.span[1]}))),tn=G(C(Qe).ptag("owo").collect((function(t){var e;const n=null==(e=t.tags.owo)?void 0:e[0];for(const e of n)t.app.stable.imports.push(e.imports),ae(t,e)}))),en="alias break case const const_assert continue continuing \n  default diagnostic discard else enable false fn for if \n  let loop override requires return struct switch true var while".split(/\s+/),nn="NULL Self abstract active alignas alignof as asm asm_fragment async attribute auto await \n  become binding_array cast catch class co_await co_return co_yield coherent column_major \n  common compile compile_fragment concept const_cast consteval constexpr constinit crate \n  debugger decltype delete demote demote_to_helper do dynamic_cast \n  enum explicit export extends extern external fallthrough filter final finally friend from fxgroup \n  get goto groupshared highp impl implements import inline instanceof interface layout lowp \n  macro macro_rules match mediump meta mod module move mut mutable \n  namespace new nil noexcept noinline nointerpolation non_coherent noncoherent noperspective null nullptr \n  of operator package packoffset partition pass patch pixelfragment precise precision premerge \n  priv protected pub public readonly ref regardless register reinterpret_cast require resource restrict \n  self set shared sizeof smooth snorm static static_assert static_cast std subroutine super \n  target template this thread_local throw trait try type typedef typeid typename typeof \n  union unless unorm unsafe unsized use using varying virtual volatile wgsl where with writeonly yield".split(/\s+/),rn=new Set(en.concat(nn)),sn=new RegExp(/(?:0[fh])|(?:[1-9][0-9]*[fh])/.source+/|(?:[0-9]*\.[0-9]+(?:[eE][+-]?[0-9]+)?[fh]?)/.source+/|(?:[0-9]+\.[0-9]*(?:[eE][+-]?[0-9]+)?[fh]?)/.source+/|(?:[0-9]+[eE][+-]?[0-9]+[fh]?)/.source+/|(?:0[xX][0-9a-fA-F]*\.[0-9a-fA-F]+(?:[pP][+-]?[0-9]+[fh]?)?)/.source+/|(?:0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*(?:[pP][+-]?[0-9]+[fh]?)?)/.source+/|(?:0[xX][0-9a-fA-F]+[pP][+-]?[0-9]+[fh]?)/.source+/|(?:0[xX][0-9a-fA-F]+[iu]?)/.source+/|(?:0[iu]?)|(?:[1-9][0-9]*[iu]?)/.source),on=new class{constructor(t){d(this,"groups"),d(this,"exp"),this.groups=Object.keys(t);const e=Object.entries(t).map(it).join("|");this.exp=new RegExp(e,"dyu")}execAt(t,e){this.exp.lastIndex=e;const n=this.exp.exec(t),r=function(t){if(void 0!==t)for(let e=1;e<t.length;e++){const n=t[e];if(void 0!==n)return{span:n,groupDex:e-1}}}(null==n?void 0:n.indices);if(r){const{span:e,groupDex:n}=r;return{kind:this.groups[n],span:e,text:t.slice(e[0],e[1])}}return null}}({word:/(?:(?:[_\p{XID_Start}][\p{XID_Continue}]+)|(?:[\p{XID_Start}]))/u,number:sn,blankspaces:/[ \t\n\v\f\r\u{0085}\u{200E}\u{200F}\u{2028}\u{2029}]+/u,commentStart:/\/\/|\/\*/,symbol:lt("& && -> @ / ! [ ] { } :: : , == = != >>= >> >= > <<= << <= < % - -- . + ++ | || ( ) ; * ~ ^ // /* */ += -= *= /= %= &= |= ^= _"),invalid:/[^]/});class an{constructor(t){d(this,"stream"),d(this,"eolPattern",/[\n\v\f\u{0085}\u{2028}\u{2029}]|\r\n?/gu),d(this,"blockCommentPattern",/\/\*|\*\//g),this.src=t,this.stream=new st(new dt(t,on))}checkpoint(){return this.stream.checkpoint()}reset(t){this.stream.reset(t)}nextToken(){for(;;){const t=this.stream.nextToken();if(null===t)return null;const e=t.kind;if("blankspaces"!==e){if("commentStart"!==e){if("word"===e){const e=t;return rn.has(t.text)&&(e.kind="keyword"),e}if("invalid"===e)throw new H("Invalid token "+t.text,t.span);return t}"//"===t.text?this.stream.reset(this.skipToEol(t.span[1])):this.stream.reset(this.skipBlockComment(t.span[1]))}}}skipToEol(t){this.eolPattern.lastIndex=t;return null===this.eolPattern.exec(this.src)?this.src.length:this.eolPattern.lastIndex}skipBlockComment(t){let e=t;for(;;){this.blockCommentPattern.lastIndex=e;const t=this.blockCommentPattern.exec(this.src);if(null===t)throw new H("Unclosed block comment!",[e,e]);if("*/"===t[0])return this.blockCommentPattern.lastIndex;if("/*"!==t[0])throw new Error("Unreachable, invalid block comment pattern");e=this.skipBlockComment(this.blockCommentPattern.lastIndex)}}nextTemplateStartToken(){const t=this.stream.checkpoint(),e=this.nextToken();return this.stream.reset(t),null===e||"symbol"!==e.kind?null:"<"===e.text?this.isTemplateStart(e.span[1])?(this.stream.reset(e.span[1]),e):(this.stream.reset(t),null):null}nextTemplateEndToken(){const t=this.stream.checkpoint(),e=this.nextToken();if(this.stream.reset(t),null===e)return null;if("symbol"===e.kind&&">"===e.text[0]){const t=e.span[0];return this.stream.reset(t+1),{kind:"symbol",span:[t,t+1],text:">"}}return null}isTemplateStart(t){this.stream.reset(t);let e=1;for(;;){const t=this.stream.nextToken();if(null===t)return!1;if("symbol"===t.kind)if("<"===t.text)e+=1;else if(">"===t.text[0]){if(">"===t.text||">="===t.text)e-=1;else{if(">>="!==t.text&&">>"!==t.text)throw new Error("This case should never be reached, looks like we forgot one of the tokens that start with >");e-=2}if(e<=0)return!0}else if("("===t.text)this.skipBracketsTo(")");else if("["===t.text)this.skipBracketsTo("]");else if("=="===t.text||"!="===t.text||";"===t.text||"{"===t.text||":"===t.text||"&&"===t.text||"||"===t.text)return!1}}skipBracketsTo(t){for(;;){const e=this.stream.nextToken();if(null===e){const t=this.stream.checkpoint();throw new H("Unclosed bracket!",[t,t])}if("symbol"===e.kind)if("("===e.text)this.skipBracketsTo(")");else if("["===e.text)this.skipBracketsTo("]");else if(e.text===t)return}}}const cn=D((t=>t.nextTemplateStartToken())),un=D((t=>t.nextTemplateEndToken())),ln=A(M(cn,U(",",(()=>Pn)),R(un,"invalid template, expected '>'"))),dn=B("private","workgroup","uniform","function"),pn=M("storage",A(M(",",B("read","read_write")))),fn=A(M(cn,B(pn,dn),R(un,"invalid template, expected '>'"))),mn=M(Ge.collect(ce),ln),hn=B("true","false",Xe),gn=B(hn,M("(",(()=>Nn),R(")","invalid expression, expected ')'")),M(mn,A(W((()=>Tn))))),xn=O(B(P(".",qe),j("[",(()=>Nn),R("]","invalid expression, expected ']'")).collect({before:J,after:V})));const vn=G(M(Ge.collect(ce,"structRef"),M(".",qe.collect(Oe,"component")),A(xn.collect(Ae,"extra_components"))).collect(Ce)),bn=B(M(E("symbol",["!","&","*","-","~"]),(()=>bn)),B(vn,M(gn,A(xn)))),kn=B(O(M("&",bn)),O(M("^",bn)),O(M("|",bn))),yn=B("%","*","/"),_n=B("+","-"),wn=t=>{const e=M("<<",bn),n=M(">>",bn),r=M(C(M(yn,bn)),C(M(_n,bn,C(M(yn,bn)))));return t?B(e,r):B(e,n,r)},En=t=>M(wn(t),A(M(E("symbol",t?["<","<=","!=","=="]:[">",">=","<","<=","!=","=="]),bn,wn(t)))),Sn=t=>M(bn,B(kn,M(En(t),t?F():B(O(M("||",M(bn,En(!1)))),O(M("&&",M(bn,En(!1)))),F().map((()=>[])))))),Nn=Sn(!1),$n=Sn(!0),Mn=G(M(Ge.collect(ce,"typeRefName"),(()=>ln)).collect(je)).ctag("typeRefElem"),Pn=B(Mn.ctag("templateParam"),$n.collect(Be,"templateParam")),Tn=M("(",L(",",Nn),R(")","invalid fn arguments, expected ')'")),jn=S("word").map((function(t){return{kind:"name",name:t.text,start:t.span[0],end:t.span[1]}})),Bn=M(jn,A(P(".",R(jn,"invalid diagnostic rule name, expected name")))),An=j("(",R(function(t,e,n){const r=q(t),s=q(e),o=q(n);return tt("terminated",(function(t){const e=r._run(t);if(null===e)return null;if(null===s._run(t))return null;const n=o._run(t);return null===n?null:{value:[e.value,n.value]}}))}(jn,",",Bn),"invalid diagnostic control, expected rule name"),M(A(","),R(")","invalid diagnostic control, expected ')'"))),Cn=L(",",jn,{requireOne:!0}),On=G(P("@",B(B("compute","const","fragment","invariant","must_use","vertex").map((t=>function([t,e]){return{kind:"@attribute",name:t,params:e}}([t,[]]))),P("interpolate",R(j("(",Cn,")"),"invalid @interpolate, expected '('")).map((function(t){return{kind:"@interpolate",params:t}})),P("builtin",R(j("(",jn,")"),"invalid @builtin, expected '('")).map((function(t){return{kind:"@builtin",param:t}})),P("diagnostic",R(An,"invalid @diagnostic, expected '('")).map((function([t,e]){return{kind:"@diagnostic",severity:t,rule:e}}))).ptag("attr_variant")).collect(Se)),In=G(P(M("@","if"),I(j("(",W((()=>er)),M(A(","),")"))).map((function(t){return{kind:"translate-time-expression",expression:t.value,span:t.span}}))).map((function(t){return{kind:"@if",param:t}})).ptag("attr_variant").collect(Se)),Rn=G(P("@",B(M(B("workgroup_size","align","binding","blend_src","group","id","location","size").ptag("name"),R((()=>Fn),"invalid attribute, expected '('")),M(qe.ptag("name"),A((()=>Fn))))).collect(Te)),Fn=j("(",L(",",I(W((()=>Nn))).collect(Be,"attrParam")),R(")","invalid attribute arguments, expected ')'")),Ln=B(On,Rn).ctag("attribute"),Un=C(B(In,On,Rn).ctag("attribute")),Dn=C(Ln),qn=R(qe.collect(le,"type_name"),"invalid type name, expected a name"),Wn=R(qe.collect(le,"fn_name"),"missing fn name"),Gn=R(G(M(qe.collect(ue,"decl_elem"),A(M(":",Mn))).collect(pe)).ctag("var_name"),"invalid ident"),Xn=G(R(M(qe.collect(le,"decl_elem"),A(M(":",Mn.collect(Re,"decl_type")))).collect(pe),"expected identifier")).ctag("var_name"),zn=G(M(Un,qe.collect(Oe,"nameElem"),R(":","invalid struct member, expected ':'"),R(Mn,"invalid struct member, expected type specifier")).collect(Ee)).ctag("members"),Jn=M(Un.collect((t=>t.tags.attribute),"attributes"),"struct",R(qn,"invalid struct, expected name"),M(R("{","invalid struct, expected '{'"),U(",",zn),R("}","invalid struct, expected '}'")).collect(Re,"struct_scope")).collect(we),Vn=M(Ge.collect(ce),(()=>ln),Tn),Yn=G(M(Un.collect((t=>t.tags.attribute),"attributes"),qe.collect(ue,"decl_elem"),A(M(":",R(Mn,"invalid fn parameter, expected type specifier"))).collect(pe,"param_name")).collect(_e)).ctag("fn_param"),Zn=M("(",L(",",Yn),")"),Kn=M("var",(()=>fn),Gn,A(M("=",(()=>Nn)))).collect(be("var")),Hn=M(Un,"var",(()=>fn),Xn,A(M("=",(()=>Nn.collect(Re,"decl_scope")))),";").collect(be("gvar")).collect(Le),Qn=B(E("keyword",["true","false"]).map((function(t){return{kind:"literal",value:t.text,span:t.span}})),j(w("symbol","("),W((()=>er)),w("symbol",")")).map((function(t){return{kind:"parenthesized-expression",expression:t}})),S("word").map((function(t){return{kind:"translate-time-feature",name:t.text,span:t.span}}))),tr=B(M(w("symbol","!").map((function(t){return{value:t.text,span:t.span}})),W((()=>tr))).map((function([t,e]){return{kind:"unary-expression",operator:t,expression:e}})),Qn),er=M(tr,B(O(M(w("symbol","||").map(Sr),R(tr,"invalid expression, expected expression"))),O(M(w("symbol","&&").map(Sr),R(tr,"invalid expression, expected expression"))),F().map((()=>[])))).map((function([t,e]){let n=t;for(const[t,r]of e)n=Nr([n,t,r]);return n})),nr=M(Un,$("{"),C((()=>mr)),R("}","invalid block, expected }")).collect($e),rr=G(M(Un,M($("{"),C((()=>mr)),R("}","invalid block, expected '}'")).collect(Re)).collect($e)),sr=M(Un,B(Vn,(()=>gr),(()=>xr))),or=M(Un,B(Vn,(()=>xr))),ir=M("for",M(R("(","invalid for loop, expected '('"),A(sr),R(";","invalid for loop, expected ';'"),A(Nn),R(";","invalid for loop, expected ';'"),A(or),R(")","invalid for loop, expected ')'"),nr).collect(Re)),ar=M("if",R(M(Nn,rr),"invalid if statement"),C(M("else","if",R(M(Nn,rr),"invalid else if branch"))),A(M("else",R(rr,"invalid else branch, expected '{'")))),cr=M("loop",Dn,R(M("{",C((()=>mr)),A(G(M(Un,"continuing",Dn,"{",C((()=>mr)),G(A(M(Un,M("break","if",Nn,";")).collect($e))),"}").collect($e).collect(Re))),"}"),"invalid loop statement")).collect(Re),ur=B("default",Nn),lr=G(M(Un,B(M("case",L(",",ur,{requireOne:!0}),A(":"),rr),M("default",A(":"),rr)).collect(Me))),dr=M(Un,"{",O(lr),"}"),pr=B(ir,ar,cr,M("switch",Nn,dr),M("while",Nn,rr),M("break",";"),M("continue",R(";","invalid statement, expected ';'")),M(";"),(()=>yr),M("discard",R(";","invalid statement, expected ';'")),M("return",A(Nn),R(";","invalid statement, expected ';'")),M(Vn,R(";","invalid statement, expected ';'")),M((()=>gr),R(";","invalid statement, expected ';'")),M((()=>xr),R(";","invalid statement, expected ';'"))),fr=G(M(Un,pr).collect($e).collect(Le)),mr=B(rr,G(M(Dn,pr)),fr),hr=B(vn,M(Ge.collect(ce),A(xn)),M("(",(()=>hr),")",A(xn)),M("&",(()=>hr)),M("*",(()=>hr))),gr=G(B(Kn,M("const",Gn,R("=","invalid const declaration, expected '='"),Nn),M("let",Gn,R("=","invalid let declaration, expected '='"),Nn))),xr=B(M(hr,B("=","<<=",">>=","%=","&=","*=","+=","-=","/=","^=","|="),Nn),M(hr,B("++","--")),M("_","=",Nn)),vr=M(G(Un.collect((t=>t.tags.attribute||[]))).ctag("fn_attributes"),$("fn"),R(Wn,"invalid fn, expected function name"),M(R(Zn,"invalid fn, expected function parameters").collect(Re,"header_scope"),A(M("->",Un.collect((t=>t.tags.attribute),"return_attributes"),Mn.ctag("return_type").collect(Re,"return_scope"))),R(nr,"invalid fn, expected function body").ctag("body_statement").collect(Re,"body_scope"))).collect(Le,"fn_partial_scope").collect(ye),br=B(M(Un,"override",Xn,M(A(M("=",Nn.collect(Fe,"decl_scope")))),";").collect(be("override")),M(Un,"const",Xn,"=",M(Nn).collect(Fe,"decl_scope"),";").collect(be("const"))).collect(Le),kr=M(Un.collect((t=>t.tags.attribute),"attributes"),"alias",R(qe,"invalid alias, expected name").collect(le,"alias_name"),R("=","invalid alias, expected '='"),R(Mn,"invalid alias, expected type").collect(Re,"alias_scope"),R(";","invalid alias, expected ';'")).collect(ke),yr=G(M(Un,"const_assert",R(Nn,"invalid const_assert, expected expression"),R(";","invalid statement, expected ';'")).collect(Ne)).ctag("const_assert"),_r=G(M(Un,T(B(P("diagnostic",An).map((function([t,e]){return{kind:"diagnostic",severity:t,rule:e}})),P("enable",Cn).map((function(t){return{kind:"enable",extensions:t}})),P("requires",Cn).map((function(t){return{kind:"requires",extensions:t}}))).ptag("directive"),";")).collect((function(t){var e,n;const{start:r,end:s}=t,o=null==(e=t.tags.directive)?void 0:e.flat()[0],i={kind:"directive",attributes:null==(n=t.tags.attribute)?void 0:n.flat(),start:r,end:s,directive:o};return ae(t,i),i}))),wr=G(B(vr,Hn,br,";",kr,yr.collect((function(t){var e;const n=null==(e=t.tags.const_assert)?void 0:e.flat()[0],r=t.app.stable;r.moduleAsserts||(r.moduleAsserts=[]),r.moduleAsserts.push(n)})),Jn)),Er=M(tn,C(_r),C(wr),R(et("eof",(function(t){return null!==t.stream.nextToken()?null:{value:!0}})),"invalid WESL, expected EOF")).collect(Ie,"collectModule");function Sr(t){return{value:t.text,span:t.span}}function Nr([t,e,n]){return{kind:"binary-expression",operator:e,left:t,right:n}}class $r extends Error{constructor(t){const e=t.src.src,[n,r]=Mt(t.cause.span[0],e);let s=`${t.src.debugFilePath}:${n}:${r}`;s+=` error: ${t.cause.message}\n`,s+=Pt(e,t.cause.span).join("\n"),super(s,{cause:t.cause}),d(this,"span"),d(this,"src"),this.span=t.cause.span,this.src=t.src}}function Mr(t){const e=new an(t.src),n=Pr(t),r={stream:e,appState:n};try{if(null===Er.parse(r))throw new Error("parseWESL failed")}catch(e){if(!(e instanceof H))throw e;{const[n,r]=Mt(e.span[0],t.src),s=new $r({cause:e,src:t});At({url:t.debugFilePath,text:t.src,error:s,lineNumber:n,lineColumn:r,length:e.span[1]-e.span[0]})}}return n.stable}function Pr(t){const e=zt(null);return{context:{scope:e,openElems:[]},stable:{srcModule:t,imports:[],rootScope:e,moduleElem:null}}}function Tr(){return Pr({modulePath:"package::test",debugFilePath:"./test.wesl",src:""})}function jr(t){if(t._flatImports)return t._flatImports;const e=t.imports.flatMap(ie);return t._flatImports=e,e}const Br="bitcast all any select arrayLength \n  abs acos acosh asin asinh atan atanh atan2 ceil clamp cos cosh \n  countLeadingZeros countOneBits countTrailingZeros cross \n  degrees determinant distance dot dot4U8Packed dot4I8Packed \n  exp exp2 extractBits faceForward firstLeadingBit firstTrailingBit \n  floor fma fract frexp insertBits inverseSqrt ldexp length log log2\n  max min mix modf normalize pow quantizeToF16 radians reflect refract\n  reverseBits round saturate sign sin sinh smoothstep sqrt step tan tanh\n  transpose trunc\n  dpdx dpdxCoarse dpdxFine dpdy dpdyCoarse dpdyFine fwidth \n  fwidthCoarse fwidthFine\n  textureDimensions textureGather textureGatherCompare textureLoad\n  textureNumLayers textureNumLevels textureNumSamples\n  textureSample textureSampleBias textureSampleCompare textureSampleCompareLevel\n  textureSampleGrad textureSampleLevel textureSampleBaseClampToEdge\n  textureStore\n  atomicLoad atomicStore atomicAdd atomicSub atomicMax atomicMin\n  atomicAnd atomicOr atomicXor atomicExchange atomicCompareExchangeWeak\n  pack4x8snorm pack4x8unorm pack4xI8 pack4xU8 pack4xI8Clamp pack4xU8Clamp\n  pack2x16snorm pack2x16unorm pack2x16float\n  unpack4x8snorm unpack4x8unorm unpack4xI8 unpack4xU8 \n  unpack2x16snorm unpack2x16unorm unpack2x16float\n  storageBarrier textureBarrier workgroupBarrier workgroupUniformLoad\n  subgroupAdd subgroupAll subgroupAnd subgroupAny subgroupBallot \n  subgroupBroadcast subgroupBroadcastFirst subgroupElect \n  subgroupExclusiveAdd subgroupExclusiveMul subgroupInclusiveAdd \n  subgroupInclusiveMul subgroupMax subgroupMin subgroupMul subgroupOr \n  subgroupShuffle subgroupShuffleUp subgroupShuffleXor subgroupXor\n  quadBroadcast quadSwapDiagonal quadSwapX quadSwapY".split(/\s+/),Ar="\n  texture_1d texture_2d texture_2d_array texture_3d \n  texture_cube texture_cube_array\n",Cr="\n  texture_multisampled_2d texture_depth_multisampled_2d\n",Or="\n  texture_storage_1d texture_storage_2d texture_storage_2d_array \n  texture_storage_3d\n",Ir=`array atomic bool f16 f32 i32 \n  mat2x2 mat2x3 mat2x4 mat3x2 mat3x3 mat3x4 mat4x2 mat4x3 mat4x4\n  mat2x2f mat2x3f mat2x4f mat3x2f mat3x3f mat3x4f\n  mat4x2f mat4x3f mat4x4f\n  mat2x2h mat2x3h mat2x4h mat3x2h mat3x3h mat3x4h\n  mat4x2h mat4x3h mat4x4h\n  u32 vec2 vec3 vec4 ptr\n  vec2i vec3i vec4i vec2u vec3u vec4u\n  vec2f vec3f vec4f vec2h vec3h vec4h\n  ${Ar}\n  ${Cr}\n  texture_external\n  ${Or}\n  texture_depth_2d texture_depth_2d_array texture_depth_cube\n  texture_depth_cube_array\n  sampler sampler_comparison\n  rgba8unorm rgba8snorm rgba8uint rgba8sint\n  rgba16uint rgba16sint rgba16float \n  r32uint r32sint r32float rg32uint rg32sint rg32float\n  rgba32uint rgba32sint rgba32float\n  bgra8unorm`.split(/\s+/),Rr="read write read_write \n  function private workgroup uniform storage\n  rgba8unorm rgba8snorm rgba8uint rgba8sint \n  rgba16uint rgba16sint rgba16float \n  r32uint r32sint r32float rg32uint rg32sint rg32float\n  rgba32uint rgba32sint rgba32float bgra8unorm".split(/\s+/);function Fr(t){return Ir.includes(t)}function Lr(t){const{rootAst:e,registry:n,virtuals:r,accumulateUnbound:s}=t,{conditions:o={},mangler:i=se}=t,{rootScope:a}=e,c=new Set,u=new Set,l=Dr(a,o);l.forEach((t=>{t.mangledName=t.originalName,c.add(t.originalName),u.add(t)}));const d=s?[]:void 0,p=new Map,f={registry:n,conditions:o,knownDecls:u,foundScopes:new Set,globalNames:c,globalStatements:p,virtuals:r,mangler:i,unbound:d},m=l.map((t=>[t.originalName,t])),h=qr(a,f,{decls:new Map(m),parent:null},!0),g=[...p.values()];return{decls:h,globalNames:c,newStatements:g,unbound:d}}function Ur(t){const e={registry:t,conditions:{},knownDecls:new Set,foundScopes:new Set,globalNames:new Set,globalStatements:new Map,mangler:se,unbound:[],dontFollowDecls:!0};return Object.entries(t.modules).map((([t,n])=>{const r=Dr(n.rootScope,{}).map((t=>[t.originalName,t])),s={decls:new Map(r),parent:null};qr(n.rootScope,e,s,!0)})),e.unbound}function Dr(t,e){const n=[];for(const r of t.contents)"decl"===r.kind?(r.declElem,It(r.declElem,e)&&n.push(r)):"partial"===r.kind&&n.push(...Dr(r,e));return n}function qr(t,e,n,r=!1){const{dontFollowDecls:s,foundScopes:o}=e;if(o.has(t))return[];o.add(t);const i=[],a=[];t.contents.forEach((t=>{const{kind:s}=t;if("decl"===s){const e=t;r||n.decls.set(e.originalName,e)}else if("ref"===s){const r=function(t,e,n){const{registry:r,conditions:s,unbound:o}=n,{virtuals:i}=n;if(!t.refersTo&&!t.std){const c=Wr(t,e)??function(t,e,n,r,s){const o=jr(t.ast),i=t.originalName.split("::"),a=function(t,e){for(const n of e)if(n.importPath.at(-1)===t.at(0))return[...n.modulePath,...t.slice(1)]}(i,o)??function(t){if(t.length>1)return t}(i);if(a){const{srcModule:o}=t.ast,i=function(t,e,n,r={},s){const o=function(t,e){const n=t.findLastIndex((t=>"super"===t));if(n>-1){return[...e.modulePath.split("::").slice(0,-(n+1)),...t.slice(n+1)]}return t}(t,e),i=o.slice(0,-1).join("::"),a=n.modules[i]??function(t,e={},n){if(!n)return;const r=n[t];if(r){const{ast:n,fn:s}=r;if(n)return n;const o={modulePath:t,debugFilePath:t,src:s(e)};return r.ast=Mr(o),r.ast}}(t[0],r,s);if(!a)return;const c=_t(t),u=Zt(a.rootScope,c,r);if(u)return{decl:u,moduleAst:a}}(a,o,e,n,r);if(!i)if(s)s.push(a);else{Ct(t,`module not found for '${a.join("::")}'`)}return i}s&&s.push(i)}(t,r,s,i,o);if(c)return t.refersTo=c.decl,function(t,e,n){const{decl:r,moduleAst:s}=e,{knownDecls:o,globalNames:i,mangler:a,globalStatements:c}=n;if(!o.has(r)){o.add(r);const{srcModule:e}=r;if(function(t,e,n,r,s){if(!e.mangledName){let o;if(Gr(e)){const i=t.lastIndexOf("::");o=s(e,r,-1===i?t:t.slice(i+2),n)}else o=e.originalName;e.mangledName=o,n.add(o)}}(t.originalName,r,i,e,a),Gr(r)){const{moduleAsserts:t}=s,n=null==t?void 0:t.map((t=>({srcModule:e,elem:t})));return null==n||n.forEach((t=>c.set(t.elem,t))),r}}}(t,c,n);Fr(a=t.originalName)||function(t){return Br.includes(t)||Fr(t)}(a)||function(t){return Rr.includes(t)}(a)?t.std=!0:o||Ct(t,`unresolved identifier '${t.originalName}'`)}var a}(t,n,e);r&&i.push(r)}else{const r=function(t,e,n){const{conditions:r}=n;if(!Rt(t,r))return;const{kind:s}=t;if("scope"===s){return qr(t,n,ee(e))}if("partial"===s)return qr(t,n,e)}(t,n,e);r&&a.push(...r)}}));const c=s?[]:function(t,e){const{conditions:n}=e;return t.flatMap((t=>{const r=t.dependentScope;if(r){const s=function(t,e){t.isGlobal,te(t);let n=t.containingScope;for(;n.parent;)n=n.parent;n.kind;const r=n;if(r._scopeDecls)return r._scopeDecls;const s=Dr(n,e),o=s.map((t=>[t.originalName,t])),i={decls:new Map(o)};return r._scopeDecls=i,i}(t,n);if(s){const t=ee(s);return qr(r,e,t)}}return[]}))}(i,e);return[i,a,c].flat()}function Wr(t,e){const{originalName:n}=t,r=e.decls.get(n);if(r)return{decl:r,moduleAst:t.ast};const{parent:s}=e;return s?Wr(t,s):void 0}function Gr(t){const{declElem:e}=t;return!!e&&["alias","const","override","fn","struct","gvar"].includes(e.kind)}function Xr(t,e,n,r=!0){const s={conditions:n,srcBuilder:t,extracting:r};e.forEach((t=>zr(t,s)))}function zr(t,e){if(rs(t,e.conditions))switch(t.kind){case"import":return;case"text":return void function(t,e){e.srcBuilder.addCopy(t.start,t.end)}(t,e);case"name":return void function(t,e){e.srcBuilder.add(t.name,t.start,t.end)}(t,e);case"synthetic":return void function(t,e){const{text:n}=t;e.srcBuilder.addSynthetic(n,n,0,n.length)}(t,e);case"ref":return void function(t,e){if(t.ident.std)e.srcBuilder.add(t.ident.originalName,t.start,t.end);else{const n=es(ns(t.ident));e.srcBuilder.add(n,t.start,t.end)}}(t,e);case"decl":return void Kr(t,e);case"param":case"var":case"typeDecl":case"let":case"module":case"member":case"memberRef":case"expression":case"type":case"statement":case"stuff":case"switch-clause":return void Yr(t,e);case"override":case"const":case"assert":case"alias":case"gvar":return Jr(e),void Yr(t,e);case"fn":return Jr(e),void function(t,e){const{attributes:n,name:r,params:s,returnAttributes:o,returnType:i,body:a}=t,{conditions:c,srcBuilder:u}=e;Vr(n,e),u.add("fn ",r.start-3,r.start),Kr(r,e),u.appendNext("(");const l=s.filter((t=>rs(t,c)));l.forEach(((t,n)=>{Zr(t,e),n<l.length-1&&u.appendNext(", ")})),u.appendNext(") "),i&&(u.appendNext("-> "),Vr(o,e),Yr(i,e),u.appendNext(" "));Yr(a,e)}(t,e);case"struct":return Jr(e),void function(t,e){const{name:n,members:r,start:s,end:o}=t,{srcBuilder:i}=e,a=r.filter((t=>rs(t,e.conditions))),c=a.length;if(0===c)return void function(t){const{name:e,members:n}=t,r=n.length?"(with current conditions)":"",s=`struct '${e.ident.originalName}' has no members ${r}`;Ot(e,s)}(t);i.add("struct ",s,n.start),Kr(n,e),1===c?(i.add(" { ",n.end,r[0].start),Zr(a[0],e),i.add(" }\n",o-1,o)):(i.add(" {\n",n.end,r[0].start),a.forEach((t=>{i.add("  ",t.start-1,t.start),Zr(t,e),i.add(",",t.end,t.end+1),i.addNl()})),i.add("}\n",o-1,o))}(t,e);case"attribute":return void Hr(t,e);case"directive":return void function(t,e){const{directive:n}=t,{kind:r}=n;"diagnostic"===r?e.srcBuilder.add(`diagnostic${Qr(n.severity,n.rule)};`,t.start,t.end):"enable"===r?e.srcBuilder.add(`enable ${n.extensions.map((t=>t.name)).join(", ")};`,t.start,t.end):"requires"===r?e.srcBuilder.add(`requires ${n.extensions.map((t=>t.name)).join(", ")};`,t.start,t.end):pt(r)}(t,e);default:pt(t)}}function Jr(t){t.extracting&&(t.srcBuilder.addNl(),t.srcBuilder.addNl())}function Vr(t,e){null==t||t.forEach((t=>{Hr(t,e),e.srcBuilder.add(" ",t.start,t.end)}))}function Yr(t,e){t.contents.forEach((t=>zr(t,e)))}function Zr(t,e){t.contents.forEach((t=>{if("text"===t.kind){const{srcModule:e,start:n,end:r}=t;if(""===e.src.slice(n,r).trim())return}zr(t,e)}))}function Kr(t,e){const n=es(t.ident);e.srcBuilder.add(n,t.start,t.end)}function Hr(t,e){const{kind:n}=t.attribute;if("@attribute"===n){const{params:n}=t.attribute;if(n&&0!==n.length){e.srcBuilder.add("@"+t.attribute.name+"(",t.start,n[0].start);for(let t=0;t<n.length;t++)Yr(n[t],e),t<n.length-1&&e.srcBuilder.add(",",n[t].end,n[t+1].start);e.srcBuilder.add(")",n[n.length-1].end,t.end)}else e.srcBuilder.add("@"+t.attribute.name,t.start,t.end)}else"@builtin"===n?e.srcBuilder.add("@builtin("+t.attribute.param.name+")",t.start,t.end):"@diagnostic"===n?e.srcBuilder.add("@diagnostic"+Qr(t.attribute.severity,t.attribute.rule),t.start,t.end):"@if"===n||("@interpolate"===n?e.srcBuilder.add(`@interpolate(${t.attribute.params.map((t=>t.name)).join(", ")})`,t.start,t.end):pt(n))}function Qr(t,e){const n=e[0].name+(null!==e[1]?"."+e[1].name:"");return`(${t.name}, ${n})`}function ts(t){const{kind:e}=t;return"binary-expression"===e?`${ts(t.left)} ${t.operator.value} ${ts(t.right)}`:"unary-expression"===e?`${t.operator.value}${ts(t.expression)}`:"ref"===e?t.ident.originalName:"literal"===e?t.value:"translate-time-feature"===e?t.name:"parenthesized-expression"===e?`(${ts(t.expression)})`:"component-expression"===e?`${ts(t.base)}[${t.access}]`:"component-member-expression"===e?`${ts(t.base)}.${t.access}`:"call-expression"===e?`${t.function.ident.originalName}(${t.arguments.map(ts).join(", ")})`:void pt(e)}function es(t){return Gr(t)?(t.mangledName,te(t),t.mangledName):t.mangledName||t.originalName}function ns(t){let e=t;do{if("decl"===e.kind)return e;e=e.refersTo}while(e);throw new Error(`unresolved identifer: ${t.originalName}`)}function rs(t,e){const n=t,{kind:r}=n;switch(r){case"alias":case"assert":case"const":case"directive":case"member":case"var":case"let":case"statement":case"switch-clause":case"override":case"gvar":case"fn":case"struct":case"param":return It(n,e)}return!0}function ss(t){return[...t.segments.map((t=>t.name)),os(t.finalSegment)].join("::")}function os(t){if("import-item"===t.kind){const{name:e,as:n}=t;return`${e}${n?` as ${n}`:""}`}if("import-collection"===t.kind)return`{${t.subtrees.map((t=>ss(t))).join(", ")}}`;g(t)}const is=150;function as(t,e=0){const{kind:n}=t,r=new Kt(e,is);r.add(n),function(t,e){const{kind:n}=t;if("text"===n){const{srcModule:n,start:r,end:s}=t;e.add(` '${n.src.slice(r,s)}'`)}else if("var"===n||"let"===n||"gvar"===n||"const"===n||"override"===n)ls(t.name,e),ds(t.attributes,e);else if("struct"===n)e.add(" "+t.name.ident.originalName);else if("member"===n){const{name:n,typeRef:r,attributes:s}=t;ds(s,e),e.add(" "+n.name),e.add(": "+ms(r))}else if("name"===n)e.add(" "+t.name);else if("memberRef"===n){const{extraComponents:n}=t,r=n?hs(n):"";e.add(` ${t.name.ident.originalName}.${t.member.name}${r}`)}else if("fn"===n)!function(t,e){const{name:n,params:r,returnType:s,attributes:o}=t;e.add(" "+n.ident.originalName),e.add("(");const i=r.map((t=>{const{name:e}=t,{originalName:n}=e.decl.ident;return n+": "+ms(e.typeRef)})).join(", ");e.add(i),e.add(")"),ds(o,e),s&&e.add(" -> "+ms(s))}(t,e);else if("alias"===n){const{name:n,typeRef:r}=t,s="decl"===n.ident.kind?"%":"";e.add(" "+s+n.ident.originalName),e.add("="+ms(r))}else if("attribute"===n)cs(t.attribute,e);else if("expression"===n){const n=t.contents.map((t=>"text"===t.kind?"'"+t.srcModule.src.slice(t.start,t.end)+"'":as(t))).join(" ");e.add(" "+n)}else if("type"===n){const{name:n}=t,r="string"==typeof n?n:n.originalName;if(e.add(" "+r),void 0!==t.templateParams){const n=t.templateParams.map(fs).join(", ");e.add("<"+n+">")}}else if("synthetic"===n)e.add(` '${t.text}'`);else if("import"===n)e.add(" "+(ss(t.imports)+";"));else if("ref"===n)e.add(" "+t.ident.originalName);else if("typeDecl"===n)ls(t,e);else if("decl"===n){const{ident:n}=t;e.add(" %"+n.originalName)}else"assert"===n||"module"===n||"param"===n||"stuff"===n||("directive"===n?function(t,e){const{directive:n,attributes:r}=t,{kind:s}=n;if("diagnostic"===s){const{severity:t,rule:r}=n,s=Qr(t,r);e.add(` diagnostic${s}`)}else"enable"===s||"requires"===s?e.add(` ${s} ${n.extensions.map((t=>t.name)).join(", ")}`):g(s);ds(r,e)}(t,e):"statement"===n?ds(t.attributes,e):"switch-clause"===n||g(n))}(t,r);let s=[];return"contents"in t&&(s=t.contents.map((t=>as(t,e+2)))),s.length&&(r.nl(),r.addBlock(s.join("\n"),!1)),r.result}function cs(t,e){const{kind:n}=t;if("@attribute"===n){const{name:n,params:r}=t;e.add(" @"+n),r&&r.length>0&&(e.add("("),e.add(r.map(ps).join(", ")),e.add(")"))}else"@builtin"===n?e.add(` @builtin(${t.param.name})`):"@diagnostic"===n?e.add(` @diagnostic${Qr(t.severity,t.rule)}`):"@if"===n?(e.add(" @if"),e.add("("),e.add(ts(t.param.expression)),e.add(")")):"@interpolate"===n?e.add(` @interpolate(${t.params.map((t=>t.name)).join(", ")})`):g(n)}function us(t){const e=new Kt(0,is);return cs(t,e),e.result}function ls(t,e){const{decl:n,typeRef:r}=t;e.add(" %"+n.ident.originalName),r&&e.add(" : "+ms(r))}function ds(t,e){null==t||t.forEach((t=>e.add(" "+function(t){const{kind:e}=t;return"@attribute"===e?"@"+t.name:e}(t.attribute))))}function ps(t){if("contents"in t){return t.contents.map((t=>"text"===t.kind?"'"+t.srcModule.src.slice(t.start,t.end)+"'":as(t))).join(" ")}return as(t)}function fs(t){return"string"==typeof t?t:"type"===t.kind?ms(t):"expression"===t.kind?ps(t):(console.log("unknown template parameter type",t),"??")}function ms(t){if(!t)return"?type?";const{name:e}=t,n="string"==typeof e?e:e.originalName;let r="";if(void 0!==t.templateParams){r="<"+t.templateParams.map(fs).join(", ")+">"}return n+r}function hs(t){return t.contents.map((t=>{const{kind:e}=t;return"text"===e?t.srcModule.src.slice(t.start,t.end):"ref"===e?t.ident.originalName:`?${t.kind}?`})).join(" ")}class gs{constructor(t){this.sourceMap=t}createShaderModule(t,e){if(!("injectError"in t))return t.createShaderModule({...e,code:this.dest});t.pushErrorScope("validation");const n=t.createShaderModule({...e,code:this.dest});t.popErrorScope();const{promise:r,resolve:s}=Promise.withResolvers();return t.injectError("validation",r),n.getCompilationInfo().then((t=>{if(0===t.messages.length)return void s(null);const e=this.mapGPUCompilationInfo(t),r=function(t,e){if(0===t.messages.length)return null;let n=`Compilation log for [Invalid ShaderModule (${e.label||"unlabled"})]:\n`;const r=t.messages.filter((t=>"error"===t.type)).length;r>0&&(n+=`${r} error(s) generated while compiling the shader:\n`);for(const e of t.messages){const{lineNum:t,linePos:r}=e;n+=`${e.module.url}:${t}:${r}`,n+=` ${e.type}: ${e.message}\n`;const s=e.module.text;s&&(n+=Pt(s,[e.offset,e.offset+e.length]).join("\n"))}return n}(e,n);!function(t,e){if(!t)throw new Error(e)}(null!==r);const o=new GPUValidationError(r);o.cause=new Error("createShaderModule failed"),o.compilationInfo=e,s(o)})),n}get dest(){return this.sourceMap.dest.text}mapGPUCompilationInfo(t){return{__brand:t.__brand,messages:t.messages.map((t=>this.mapGPUCompilationMessage(t)))}}mapGPUCompilationMessage(t){const e=this.sourceMap,n=e.destToSrc(t.offset),r=(t.length>0?e.destToSrc(t.offset+t.length):n).position-n.position,[s,o]=Mt(n.position,n.src.text);return{__brand:t.__brand,type:t.type,message:t.message,offset:n.position,length:r,lineNum:s,linePos:o,module:{url:n.src.path??"",text:n.src.text}}}}function xs(t){const e=t.split("/").filter((t=>"."!==t)),n=[];return e.forEach((t=>{""!==t&&(".."===t&&n.length&&".."!==n[n.length-1]?n.pop():n.push(t))})),n.join("/")}function vs(t){const e=t.lastIndexOf("/"),n=-1===e?0:e+1,r=t.indexOf(".",n),s=-1===r?t.length:r;return t.slice(0,s)}function bs(){return qt(),{modules:{}}}function ks(t){return`modules: ${[...Object.keys(t.modules)]}`}function ys(t,e,n="package"){let r;return r=e.includes("::")?e:e.includes("/")||e.endsWith(".wesl")||e.endsWith(".wgsl")?Ss(e,n):n+"::"+e,t.modules[r]}function _s(t,e,n="package",r){let s=r;void 0===s?s="":s.endsWith("/")||(s+="/");Object.entries(t).map((([t,e])=>({modulePath:Ss(t,n),debugFilePath:s+t,src:e}))).forEach((t=>{const n=Mr(t);if(e.modules[t.modulePath])throw new Error(`duplicate module path: '${t.modulePath}'`);e.modules[t.modulePath]=n}))}function ws(t,e){t.forEach((({modules:t,name:n})=>_s(t,e,n))),t.forEach((({dependencies:t})=>ws(t||[],e)))}const Es=/^lib\.w[eg]sl$/i;function Ss(t,e){if(t.includes("::"))return t;if("package"!==e&&Es.test(t))return e;return e+"::"+vs(xs(t)).replaceAll("/","::")}async function Ns(t){const{weslSrc:e,debugWeslRoot:n,libs:r=[]}=t,s=bs();_s(e,s,"package",n),ws(r,s);const o=Ms({registry:s,...t});return new gs(o)}function $s(t){const{weslSrc:e,debugWeslRoot:n,libs:r=[]}=t,s=bs();_s(e,s,"package",n),ws(r,s);const o=Ms({registry:s,...t});return new gs(o)}function Ms(t){const e=Ps(t),{transformedAst:n,newDecls:r,newStatements:s}=e;return rt.build(function(t,e,n,r,s={}){const o=r.map((t=>{const{elem:e,srcModule:n}=t,{src:r,debugFilePath:o}=n,i=new rt({text:r,path:o});return Xr(i,[e],s),i.addNl(),i})),i=new rt({text:e.src,path:e.debugFilePath});Xr(i,[t],s,!1);const a=n.map((t=>{const e=new rt({text:t.srcModule.src,path:t.srcModule.debugFilePath});return Xr(e,[t.declElem],s),e}));return[...o,i,...a]}(n.moduleElem,n.srcModule,r,s,t.conditions))}function Ps(t){const{registry:e,mangler:n}=t,{rootModuleName:r="main",conditions:s={}}=t,o=function(t,e){const n=ys(t,e);if(!n)throw new Error(`Root module not found: ${e}`);return n}(e,r),{constants:i,config:a}=t;let{virtualLibs:c}=t;i&&(c={...c,constants:Ts(i)});const u=Lr({rootAst:o,registry:e,conditions:s,virtuals:c&&$t(c,(t=>({fn:t}))),mangler:n}),{globalNames:l,decls:d,newStatements:p}=u,f=function(t,e,n){const{moduleElem:r,srcModule:s}=t,o={moduleElem:r,srcModule:s,globalNames:e,notableElems:{}},i=(null==n?void 0:n.plugins)??[],a=St(i,(t=>t.transform)).reduce(((t,e)=>e(t)),o);return a}(o,l,a);return{transformedAst:f,newDecls:d,newStatements:p}}function Ts(t){return()=>Object.entries(t).map((([t,e])=>`const ${t} = ${e};`)).join("\n")}function js(t,e){if(e(t),t.contents){t.contents.forEach((t=>js(t,e)))}}function Bs(t){const{kind:e}=t.attribute;if("@attribute"===e){const{params:e}=t.attribute;return void 0===e||0===e.length?"@"+t.attribute.name:`@${t.attribute.name}(${e.map((t=>Is(t))).join(", ")})`}return"@builtin"===e?"@builtin("+t.attribute.param.name+")":"@diagnostic"===e?"@diagnostic"+Qr(t.attribute.severity,t.attribute.rule):"@if"===e?`@if(${ts(t.attribute.param.expression)})`:"@interpolate"===e?`@interpolate(${t.attribute.params.map((t=>t.name)).join(", ")})`:void pt(e)}function As(t){return`<${t.map(Cs).join(", ")}>`}function Cs(t){return void 0===t?"?":"string"==typeof t?t:"expression"===t.kind?Is(t):"type"===t.kind?function(t){if(!t)return"?";const{name:e,templateParams:n}=t,r=n?As(n):"";return`${Os(e)}${r}`}(t):void pt(t)}function Os(t){if("string"==typeof t)return t;if(t.std)return t.originalName;const e=ns(t);return e.mangledName||e.originalName}function Is(t){if("translate-time-expression"===t.kind)throw new Error("Not supported");if("expression"===t.kind||"stuff"===t.kind){return t.contents.map((t=>{const{kind:e}=t;return"text"===e?t.srcModule.src.slice(t.start,t.end):"ref"===e?Os(t.ident):`?${t.kind}?`})).join(" ")}if("name"===t.kind)return t.name;pt(t)}const Rs=lt(Or);function Fs(){return{transform:Ls}}function Ls(t){const e=structuredClone(t),{moduleElem:n,globalNames:r,notableElems:s}=e,o=Ds(n);Us(n,o);const i=o.flatMap((t=>Ws(t,r))),a=Xs(n);a.forEach((({memberRef:t,struct:e})=>Js(t,e))),a.forEach((({intermediates:t})=>t.forEach((t=>{t.contents=[]}))));const c=function(t){return t.contents.filter((t=>"struct"!==t.kind||!t.bindingStruct))}(n);return n.contents=[...i,...c],s.bindingStructs=o,{...e,moduleElem:n}}function Us(t,e){const n=function(t,e){var n,r,s;for(const o of t){const{params:t}=o;for(const i of t){const t=null==(r=null==(n=i.name)?void 0:n.typeRef)?void 0:r.name,a=null==(s=null==t?void 0:t.refersTo)?void 0:s.declElem,c=e.find((t=>t===a));if(c)return{fn:o,struct:c}}}}(t.contents.filter((t=>"fn"===t.kind)),e);if(n){const{fn:t,struct:e}=n;e.entryFn=t}}function Ds(t){const e=t.contents.filter((t=>"struct"===t.kind)).filter(qs);return e.forEach((t=>{t.bindingStruct=!0})),e}function qs(t){return t.members.some((({attributes:t})=>function(t){return!!t&&t.some((({attribute:t})=>"@attribute"===t.kind&&("binding"===t.name||"group"===t.name)))}(t)))}function Ws(t,e){return t.members.map((t=>{var n;const{typeRef:r,name:s}=t,{name:o}=r,i=null==r?void 0:r.templateParams,a=oe(s.name,e);t.mangledVarName=a,e.add(a);const c=(null==(n=t.attributes)?void 0:n.map(Bs).join(" "))??"",u=function(t,e){if("ptr"===t.originalName){const t=e??[],n=[t[0]];t[2]&&n.push(t[2]);return{storage:As(n),varType:Cs(null==t?void 0:t[1])}}}(o,i)??function(t,e){if("string"!=typeof t){return{varType:(t.std?t.originalName:"??")+(e?As(e):""),storage:""}}}(o,i)??function(t,e){if(Rs.test(t.originalName)){return{varType:t+(e?As(e):""),storage:""}}}(o,i);if(!u)return console.log("unhandled case transforming member",o),Gs(c,a,"","??");const{storage:l,varType:d}=u;return Gs(c,a,l,d)}))}function Gs(t,e,n,r){return{kind:"synthetic",text:`${t} var${n} ${e} : ${r};\n`}}function Xs(t){const e=[];return js(t,(t=>{"memberRef"===t.kind&&e.push(t)})),St(e,zs)}function zs(t){const e=function(t){var e;const n=ns(t).declElem;if(n&&"param"===n.kind){const t=null==(e=n.name.typeRef)?void 0:e.name;if("string"!=typeof t){if(null==t?void 0:t.std)return;const e=ns(t).declElem;return"struct"===(null==e?void 0:e.kind)?{struct:e,intermediates:[n]}:void 0}}}(t.name.ident);if(null==e?void 0:e.struct.bindingStruct)return{memberRef:t,...e}}function Js(t,e){const n=t.member.name,r=e.members.find((t=>t.name.name===n));if(!r||!r.mangledVarName)return{kind:"synthetic",text:n};const{extraComponents:s}=t,o=s?Is(s):"",i={kind:"synthetic",text:r.mangledVarName+o};return t.contents=[i],i}async function Vs(t,e){if(!t)throw new Error("No GPU adapter");return t.requestDevice(e).then(Ys)}function Ys(t){const e=[];return t.injectError=(n,r)=>{const s=e.findLast((t=>t.filter===n));void 0!==s?s.errors.push(r):r.then((e=>{null!==e&&function(e){t.addEventListener("uncapturederror",(t=>{if(!t.defaultPrevented)if("compilationInfo"in t.error){const e=t.error;if(e.compilationInfo)for(const t of e.compilationInfo.messages)At({url:t.module.url,text:t.module.text??null,lineNumber:t.lineNum,lineColumn:t.linePos,length:t.length,error:new Error(t.type+": "+t.message)});else console.error(t.error.message)}else console.error(t.error.message)}),{once:!0}),t.dispatchEvent(new GPUUncapturedErrorEvent("uncapturederror",{error:e}))}(e)}))},t.pushErrorScope=(t=>function(n){return e.push({filter:n,errors:[]}),t.call(this,n)})(t.pushErrorScope),t.popErrorScope=(t=>function(){const n=e.pop();if(void 0===n)throw new DOMException("popErrorScope called on empty error scope stack","OperationError");n.errors.push(t.call(this));return Promise.all(n.errors).then((t=>t.find((t=>null!==t))??null))})(t.popErrorScope),t}lt(Ar),lt(Cr);export{gs as LinkedWesl,$r as WeslParseError,an as WeslStream,$s as _linkSync,as as astToString,us as attributeToString,Ps as bindAndTransform,Lr as bindIdents,Fs as bindingStructsPlugin,Pr as blankWeslParseState,Yt as childIdent,Vt as childScope,Jt as containsScope,hs as debugContentsToString,zt as emptyScope,Pt as errorHighlight,St as filterMap,Nt as findMap,Xs as findRefsToBindingStructs,Ur as findUnboundIdents,Dr as findValidRootDecls,jr as flatImports,vt as groupBy,xt as grouped,te as identToString,Gr as isGlobal,_t as last,re as lengthPrefixMangle,Ns as link,Ms as linkRegistry,Ls as lowerBindingStructs,Ys as makeWeslDevice,yt as mapForward,$t as mapValues,Ds as markBindingStructs,Us as markEntryTypes,Dt as mergeScope,se as minimalMangle,oe as minimallyMangledName,mt as multiKeySet,Xt as nextIdentId,vs as noSuffix,xs as normalize,Mt as offsetToLineNumber,wt as overlapTail,_s as parseIntoRegistry,ws as parseLibsIntoRegistry,Mr as parseSrcModule,bs as parsedRegistry,bt as partition,Zt as publicDecl,ks as registryToString,gt as replaceWords,Vs as requestWeslDevice,qt as resetScopeIds,kt as scan,Ht as scopeToString,Qt as scopeToStringLong,ys as selectModule,Tr as syntheticWeslParseState,Js as transformBindingReference,Ws as transformBindingStruct,ne as underscoreMangle};export default null;
//# sourceMappingURL=/sm/f4d3ae48d0ea5c2f8b932027df8aadbf499c8cf0f0650439635fd2eafa802429.map