/**
 * Bundled by jsDelivr using Rollup v4.62.2 and esbuild v0.28.1.
 * Original file: /npm/wesl@0.7.31/dist/index.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
function $i(e,t,n,r){const s=e.get(t)||new Map;e.set(t,s),s.set(n,r)}const Bi=/\b(\w+)\b/gi;function Ci(e,t){return e.replaceAll(Bi,n=>n in t?t[n]:n)}function Ai(e,t,n=t){const r=[];for(let s=0;s<e.length;s+=n)r.push(e.slice(s,s+t));return r}function Ii(e,t){const n=new Map;for(const r of e){const s=t(r),i=n.get(s)||[];i.push(r),n.set(s,i)}return n}function En(e,t){const n=[],r=[];for(const s of e)t(s)?n.push(s):r.push(s);return[n,r]}function Pi(e,t,n){const r=[n];let s=n;for(let i=0;i<e.length;i++)s=t(e[i],s),r.push(s);return r}function _i(e,t){const n=Object.entries(e).map(([r,s])=>[r,s in t?t[s]:s]);return Object.fromEntries(n)}function lt(e){return e[e.length-1]}function Fi(e,t){let n=Math.min(e.length,t.length);for(;n>0&&!Di(e.slice(-n),t.slice(0,n));)n--;if(n)return t.slice(n)}function Di(e,t){return e.length===t.length&&e.every((n,r)=>n===t[r])}function ft(e,t){const n=[];for(const r of e){const s=t(r);s&&n.push(s)}return n}function dt(e,t){for(const n of e){const r=t(n);if(r)return r}}function Ri(e,t){return Object.fromEntries(Object.entries(e).map(([n,r])=>[n,t(r)]))}const xn=new Map;function _e(e){const t=xn.get(e);if(t)return t;const n=[...e.matchAll(/\n/g)].map(r=>r.index+1);return n.unshift(0),xn.set(e,n),n}function Fe(e,t){let n=0,r=t.length-1;if(e>=t[r])return r;for(;n+1<r;){const s=n+r>>1;e>=t[s]?n=s:r=s}return n}function pt(e,t){return" ".repeat(Math.max(0,e))+"^".repeat(Math.max(1,t))}function De(e,t){const n=Math.min(t.length,Math.max(0,e)),r=_e(t),s=Fe(n,r);return[s+1,1+n-r[s]]}function mt(e,t){const n=Math.min(e.length,Math.max(0,t[0])),r=_e(e),s=Fe(n,r),i=r[s],o=r[s+1],a=o!==void 0?o-1:e.length;return[e.slice(i,a),pt(t[0]-i,t[1]-t[0])]}let he=console.log;const Li=!0,Oi=!0;async function Vi(e,t){const n=he;try{return he=e,await t()}finally{he=n}}function ht(e,t,...n){if(typeof e=="string"){Nn(he,e,t,...n);return}const{src:r,positions:s}=Wi(e,t);Nn(he,r.text,s,...n)}function zi(e,t){let n,r;typeof t=="number"?n=t:[n,r]=t;const s=_e(e),i=Fe(n,s),o=s[i],a=s[i+1],u=a!==void 0?a-1:e.length,l=e.slice(o,u);let c;return r!==void 0&&r>=o&&r<=u&&(c=r-o),{line:l,linePos:n-o,linePos2:c,lineNum:i+1}}function Nn(e,t,n,...r){e(...r);const{line:s,lineNum:i,linePos:o,linePos2:a}=zi(t,n);e(s,`  Ln ${i}`),e(ji(o,a))}function Wi(e,t){const[n,r]=Array.isArray(t)?t:[t,t],s=e.destToSrc(n),{src:i,position:o}=s;if(r>n){const a=e._destToSrcEnd(s,r);if(a!==void 0)return{src:i,positions:[o,a]}}return{src:i,positions:o}}function ji(e,t){return pt(e,t?t-e:1)}function qi(e,t){if(!e)throw new Error(t)}function z(e,t){qi(e,t)}function I(e){throw new Ui("Unreachable value",{data:e})}var Ui=class extends Error{data;constructor(e,t){super(e,t),this.data=t?.data}};const Mn={};"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".split("").forEach((e,t)=>{Mn[t]=e});function $n(e){if(typeof e=="number")return Bn(e);let t="";for(let n=0;n<e.length;n+=1)t+=Bn(e[n]);return t}function Bn(e){let t="",n;e<0?n=-e<<1|1:n=e<<1;do{let r=n&31;n>>>=5,n>0&&(r|=32),t+=Mn[r]}while(n>0);return t}const Xi="document"in globalThis;function Cn(e){const{url:t,text:n,lineNumber:r,lineColumn:s,length:i,offset:o,error:a}=e,u={file:t,line:r,column:s,length:i,offset:o};if(a.weslLocation=u,!Xi)throw a;const l=$n([0,0,Math.max(0,r-1),Math.max(0,s-1)])+","+$n([18,0,Math.max(0,r-1),Math.max(0,s-1)+i]),c={version:3,file:null,sources:[t],sourcesContent:[n??null],names:[],mappings:l};let g=`throw new Error(${JSON.stringify(a.message+"")})`;g+=`

//# sourceURL=`+c.sources[0];let y=0;"stackTraceLimit"in Error&&(y=Error.stackTraceLimit,Error.stackTraceLimit=1);try{(0,eval)(g)}catch(T){throw"stackTraceLimit"in Error&&(Error.stackTraceLimit=y),a.message="",T.cause=a,T.weslLocation=u,T}}function An(e,t){const{refIdentElem:n,originalName:r}=e,s=t??`'${r}'`;if(n)gt(n,s);else throw new Error(s)}function gt(e,t=""){const{srcModule:n,start:r,end:s}=e,{debugFilePath:i,src:o}=n,a=`${t} in file: ${i}`;ht(o,[r,s],a);const[u,l]=De(r,o);Cn({url:i,text:o,lineNumber:u,lineColumn:l,length:s-r,offset:r,error:new Error(a)})}function*In(e,t){let n=!1;for(const r of e.contents){const s=Ki(r);if(!s)yield r;else{const i=Pn(s,n,t);n=i.nextElseState,i.valid&&(yield r)}}}function D(e,t){let n=!1;const r=[];for(const s of e){const i=Re(s.attributes);if(!i)r.push(s);else{const o=Pn(i,n,t);n=o.nextElseState,o.valid&&r.push(s)}}return r}function Pn(e,t,n){if(!e)return{valid:!0,nextElseState:t};if(e.kind==="@if"){const r=_n(e,n);return{valid:r,nextElseState:!r}}else if(e.kind==="@elif"){if(!t)return{valid:!1,nextElseState:!1};const r=_n(e,n);return{valid:r,nextElseState:!r}}else return{valid:t,nextElseState:!1}}function Re(e){if(e)for(const t of e){const n=t.attribute.kind;if(n==="@if"||n==="@elif"||n==="@else")return t.attribute}}function _n(e,t){return ge(e.param.expression,t)}function Ki(e){if(!(e.kind==="decl"&&e.containingScope.kind==="partial")){if(e.kind==="decl")return Re(e.declElem?.attributes);if(e.kind==="partial"||e.kind==="scope")return e.condAttribute}}function ge(e,t){const{kind:n}=e;if(n==="unary-expression")return z(e.operator.value==="!"),!ge(e.expression,t);if(n==="binary-expression"){const r=e.operator.value;z(r==="||"||r==="&&");const s=ge(e.left,t);if(r==="||")return s||ge(e.right,t);if(r==="&&")return s&&ge(e.right,t);I(r)}else if(n==="literal"){const{value:r}=e;return z(r==="true"||r==="false"),r==="true"}else{if(n==="parenthesized-expression")return ge(e.expression,t);if(n==="ref")return t[e.ident.originalName]??!1;throw new Error(`unexpected @if expression ${JSON.stringify(e)}`)}}let Fn=0,Dn=0;function Gi(e,t){t&&(z(e.kind===t.kind),z(e.parent===t.parent),z(!t.condAttribute),e.contents=e.contents.concat(t.contents))}function Ji(){Fn=0,Dn=0}function kt(){return Dn++}function bt(e,t="scope"){return{id:Fn++,kind:t,parent:e,contents:[]}}function Rn(e,t){if(t===e)return!0;for(const n of e.contents)if(Le(n)&&Rn(n,t))return!0;return!1}function Le(e){const{kind:t}=e;return t==="partial"||t==="scope"}function Yi(e){return!Le(e)}function vt(e,t){return e.decls.filter(n=>n.kind===t)}function Ln(e,t){t(e);for(const n of Oe(e))Ln(n,t)}function Oe(e){return[...e.attributes??[],...Hi(e)]}function Zi(e,...t){ht(e.srcModule.src,[e.start,e.end],...t)}function Hi(e){switch(e.kind){case"module":return e.decls;case"var":case"gvar":return[...e.template??[],e.name,...e.init?[e.init]:[]];case"let":case"const":case"override":return[e.name,...e.init?[e.init]:[]];case"alias":return[e.name,e.typeRef];case"assert":return[e.expression];case"struct":return[e.name,...e.members];case"member":return[e.name,e.typeRef];case"type":return[e.name.refIdentElem,...e.templateParams??[]];case"expression":return[e.expression];case"binary-expression":return[e.left,e.right];case"unary-expression":case"parenthesized-expression":return[e.expression];case"component-expression":return[e.base,e.access];case"component-member-expression":return[e.base,e.access];case"call-expression":return[e.function,...e.templateArgs??[],...e.arguments];case"param":return[e.name];case"typeDecl":return e.typeRef?[e.decl,e.typeRef]:[e.decl];case"fn":return[e.name,...e.params,...e.returnAttributes??[],...e.returnType?[e.returnType]:[],e.body];case"block":return e.body;case"if":return[e.condition,e.body,...e.else?[e.else]:[]];case"for":return[e.init,e.condition,e.update,e.body].filter(Qi);case"while":return[e.condition,e.body];case"loop":case"continuing":return[e.body];case"switch":return[e.selector,...e.bodyAttributes??[],...e.clauses];case"switch-clause":return[...eo(e.selectors),e.body];case"return":return e.value?[e.value]:[];case"break":return e.condition?[e.condition]:[];case"assign":return e.lhs.kind==="phony"?[e.rhs]:[e.lhs,e.rhs];case"increment":case"decrement":return[e.target];case"call":return[e.call];case"continue":case"discard":case"empty":return[];case"do":return[e.name,...e.params,e.body];case"import":case"directive":case"attribute":case"name":case"literal":case"ref":case"decl":case"synthetic":return[];default:return[]}}function Qi(e){return e!==void 0}function eo(e){return e.filter(t=>t!=="default")}const On=`
  subgroupAdd subgroupAll subgroupAnd subgroupAny subgroupBallot
  subgroupBroadcast subgroupBroadcastFirst subgroupElect
  subgroupExclusiveAdd subgroupExclusiveMul subgroupInclusiveAdd
  subgroupInclusiveMul subgroupMax subgroupMin subgroupMul subgroupOr
  subgroupShuffle subgroupShuffleDown subgroupShuffleUp subgroupShuffleXor
  subgroupXor
  quadBroadcast quadSwapDiagonal quadSwapX quadSwapY`,Vn="atomicStoreMin atomicStoreMax",zn=`
  dot4U8Packed dot4I8Packed
  pack4xI8 pack4xU8 pack4xI8Clamp pack4xU8Clamp
  unpack4xI8 unpack4xU8`,yt=Nt(`bitcast all any select arrayLength
  abs acos acosh asin asinh atan atanh atan2 ceil clamp cos cosh
  countLeadingZeros countOneBits countTrailingZeros cross
  degrees determinant distance dot
  exp exp2 extractBits faceForward firstLeadingBit firstTrailingBit
  floor fma fract frexp insertBits inverseSqrt ldexp length log log2
  max min mix modf normalize pow quantizeToF16 radians reflect refract
  reverseBits round saturate sign sin sinh smoothstep sqrt step tan tanh
  transpose trunc
  dpdx dpdxCoarse dpdxFine dpdy dpdyCoarse dpdyFine fwidth
  fwidthCoarse fwidthFine
  textureDimensions textureGather textureGatherCompare textureLoad
  textureNumLayers textureNumLevels textureNumSamples
  textureSample textureSampleBias textureSampleCompare textureSampleCompareLevel
  textureSampleGrad textureSampleLevel textureSampleBaseClampToEdge
  textureStore
  atomicLoad atomicStore atomicAdd atomicSub atomicMax atomicMin
  atomicAnd atomicOr atomicXor atomicExchange atomicCompareExchangeWeak
  pack4x8snorm pack4x8unorm
  pack2x16snorm pack2x16unorm pack2x16float
  unpack4x8snorm unpack4x8unorm
  unpack2x16snorm unpack2x16unorm unpack2x16float
  storageBarrier textureBarrier workgroupBarrier workgroupUniformLoad
  ${On}
  ${Vn}
  ${zn}`),Wn=`
  texture_1d texture_2d texture_2d_array texture_3d 
  texture_cube texture_cube_array
`,jn=`
  texture_multisampled_2d texture_depth_multisampled_2d
`,qn=`
  texture_storage_1d texture_storage_2d texture_storage_2d_array 
  texture_storage_3d
`,Tt=`
  rgba8unorm rgba8snorm rgba8uint rgba8sint
  rgba16uint rgba16sint rgba16float
  r32uint r32sint r32float rg32uint rg32sint rg32float
  rgba32uint rgba32sint rgba32float
  bgra8unorm
  r8unorm r8snorm r8uint r8sint
  r16unorm r16snorm r16uint r16sint r16float
  rg8unorm rg8snorm rg8uint rg8sint
  rg16unorm rg16snorm rg16uint rg16sint rg16float
  rgb10a2uint rgb10a2unorm rg11b10ufloat
  rgba16unorm rgba16snorm
`,Un=`f16
  mat2x2h mat2x3h mat2x4h mat3x2h mat3x3h mat3x4h
  mat4x2h mat4x3h mat4x4h
  vec2h vec3h vec4h`,wt=Nt(`array atomic bool f32 i32
  mat2x2 mat2x3 mat2x4 mat3x2 mat3x3 mat3x4 mat4x2 mat4x3 mat4x4
  mat2x2f mat2x3f mat2x4f mat3x2f mat3x3f mat3x4f
  mat4x2f mat4x3f mat4x4f
  u32 vec2 vec3 vec4 ptr
  vec2i vec3i vec4i vec2u vec3u vec4u
  vec2f vec3f vec4f
  ${Un}
  ${Wn}
  ${jn}
  texture_external
  ${qn}
  texture_depth_2d texture_depth_2d_array texture_depth_cube
  texture_depth_cube_array
  sampler sampler_comparison
  ${Tt}`),St=Nt(`read write read_write
  function private workgroup uniform storage
  ${Tt}`),Et=new Set(["align","binding","blend_src","compute","const","fragment","group","id","invariant","location","must_use","size","vertex","workgroup_size"]),Xn=new Set(wt),to=new Set(yt),no=new Set(St),ro=new Set([...wt,...yt,...St]);function so(e){return Xn.has(e)}function io(e){return to.has(e)||Xn.has(e)}function oo(e){return no.has(e)}function xt(e){return ro.has(e)}function Nt(e){return e.split(/\s+/).filter(Boolean)}const ao=new Set(["block","if","for","while","loop","continuing","switch","empty","var","let","const","assert"]);function Kn(e){const{srcBuilder:t,rootElems:n,conditions:r,bindings:s}=e,{extracting:i=!0,skipConditionalFiltering:o=!1}=e,{addedAttributes:a}=s,u={conditions:r,srcBuilder:t,bindings:s,extracting:i,indent:0,addedAttributes:a.size?a:void 0},l=o?n:D(n,r);for(const c of l)Gn(c,u)}function Ve(e,t){const n=t[0].name+(t[1]!==null?"."+t[1].name:"");return`(${e.name}, ${n})`}function J(e){const{kind:t}=e;switch(t){case"binary-expression":{const n=J(e.left),r=J(e.right);return`${n} ${e.operator.value} ${r}`}case"unary-expression":return`${e.operator.value}${J(e.expression)}`;case"ref":return e.ident.originalName;case"literal":return e.value;case"parenthesized-expression":return`(${J(e.expression)})`;case"component-expression":return`${J(e.base)}[${e.access}]`;case"component-member-expression":return`${J(e.base)}.${e.access}`;case"call-expression":{const n=e.function;return`${n.kind==="ref"?n.ident.originalName:n.name.originalName}${e.templateArgs?"<...>":""}(${e.arguments.map(J).join(", ")})`}case"type":return e.name.originalName;default:I(t)}}function Gn(e,t){switch(e.kind){case"import":return;case"do":return;case"name":Mt(e,t);return;case"synthetic":uo(e,t);return;case"ref":$t(e,t);return;case"decl":xe(e,t);return;case"literal":case"binary-expression":case"unary-expression":case"call-expression":case"parenthesized-expression":case"component-expression":case"component-member-expression":k(e,t);return;case"param":Y(e,t),Ne(e.name,t);return;case"typeDecl":Ne(e,t);return;case"member":Bt(e,t);return;case"expression":k(e.expression,t);return;case"switch-clause":Jn(e,t);return;case"type":ke(e,t);return;case"module":co(e,t);return;case"var":case"let":case"block":case"if":case"for":case"while":case"loop":case"continuing":case"switch":case"return":case"break":case"continue":case"discard":case"assign":case"increment":case"decrement":case"call":case"empty":Yn(e,t);return;case"override":case"const":case"assert":case"alias":case"gvar":lo(e,t);return;case"fn":Ct(t),ze(e,t),fo(e,t),be(e,t);return;case"struct":Ct(t),ze(e,t),po(e,t),be(e,t);return;case"attribute":Zn(e,t);return;case"directive":t.srcBuilder.addNl(),ze(e,t),mo(e,t),be(e,t);return;default:I(e)}}function Mt(e,t){t.srcBuilder.add(e.name,e.start)}function uo(e,t){const{text:n}=e;t.srcBuilder.addSynthetic(n,n,0)}function $t(e,t){const{bindings:n}=t,r=en(e.ident,n);r==="std"?t.srcBuilder.add(e.ident.originalName,e.start):r==="unbound"?gt(e,`unresolved identifier: '${e.ident.originalName}'`):t.srcBuilder.add(Hn(r,n),e.start)}function xe(e,t){t.srcBuilder.add(Hn(e.ident,t.bindings),e.start)}function k(e,t){re(e,t),ho(e,t),oe(e,t)}function Y(e,t){We(e.attributes,t),We(t.addedAttributes?.get(e),t)}function Ne(e,t){re(e,t),xe(e.decl,t),e.typeRef&&(t.srcBuilder.appendNext(": "),ke(e.typeRef,t)),oe(e,t)}function Bt(e,t){Y(e,t),Mt(e.name,t),t.srcBuilder.appendNext(": "),ke(e.typeRef,t)}function Jn(e,t){const n=t.srcBuilder;Qn(e,t),Z(t),Y(e,t),e.selectors.length===1&&e.selectors[0]==="default"?n.appendNext("default"):(n.appendNext("case "),e.selectors.forEach((r,s)=>{s>0&&n.appendNext(", "),r==="default"?n.appendNext("default"):k(r,t)})),n.appendNext(": "),H(e.body,t),be(e,t)}function ke(e,t){$t(e.name.refIdentElem,t),e.templateParams&&er(e.templateParams,t)}function co(e,t){const n=D(e.decls,t.conditions);for(const r of n)Gn(r,t)}function Yn(e,t){Qn(e,t),Z(t),tr(e,t),be(e,t)}function lo(e,t){Ct(t),ze(e,t),nr(e,t),be(e,t)}function Ct(e){e.srcBuilder.addNl(),e.srcBuilder.addNl()}function ze(e,t){for(const n of e.commentsBefore??[])se(n,t),Z(t)}function fo(e,t){const{name:n,params:r,returnAttributes:s,returnType:i,body:o}=e,{conditions:a,srcBuilder:u}=t;Y(e,t),u.add("fn ",n.start-3),re(n,t),xe(n,t),oe(n,t),u.appendNext("(");const l=D(r,a);l.forEach((c,g)=>{re(c,t),Y(c,t),Ne(c.name,t),oe(c,t),g<l.length-1&&u.appendNext(", ")}),u.appendNext(") "),i&&(u.appendNext("-> "),We(s,t),re(i,t),ke(i,t),u.appendNext(" ")),H(o,t)}function be(e,t){if(e.commentsAfter)for(const n of e.commentsAfter)t.srcBuilder.appendNext(" "),se(n,t)}function po(e,t){const{name:n,members:r,start:s}=e,{srcBuilder:i,conditions:o}=t,a=D(r,o),u=a.length;if(u===0){go(e);return}if(Y(e,t),i.add("struct ",s),re(n,t),xe(n,t),oe(n,t),u===1&&!ko(a[0]))i.appendNext(" { "),Bt(a[0],t),i.appendNext(" }"),i.addNl();else{i.appendNext(" {"),i.addNl();for(const l of a)bo(l,t);i.appendNext("}"),i.addNl()}}function Zn(e,t){const{kind:n}=e.attribute;if(n==="@if"||n==="@elif"||n==="@else")return!1;if(n==="@attribute")return Et.has(e.attribute.name)?(vo(e,t),!0):!1;if(n==="@builtin"){const r=`@builtin(${e.attribute.param.name})`;return t.srcBuilder.add(r,e.start),!0}if(n==="@diagnostic"){const{severity:r,rule:s}=e.attribute,i=`@diagnostic${Ve(r,s)}`;return t.srcBuilder.add(i,e.start),!0}if(n==="@interpolate"){const r=e.attribute.params.map(s=>s.name).join(", ");return t.srcBuilder.add(`@interpolate(${r})`,e.start),!0}I(n)}function mo(e,t){const{directive:n}=e,{kind:r}=n;if(r==="diagnostic"){const s=`diagnostic${Ve(n.severity,n.rule)};`;t.srcBuilder.add(s,e.start)}else if(r==="enable"){const s=n.extensions.map(i=>i.name).join(", ");t.srcBuilder.add(`enable ${s};`,e.start)}else if(r==="requires"){const s=n.extensions.map(i=>i.name).join(", ");t.srcBuilder.add(`requires ${s};`,e.start)}else I(r)}function Hn(e,t){const n=ys(e,t);return z(n,`ERR: mangled name not found for decl ident ${ve(e)}`),n}function re(e,t){for(const n of e.commentsBefore??[])se(n,t),n.style==="line"?Z(t):t.srcBuilder.appendNext(" ")}function ho(e,t){const n=t.srcBuilder;switch(e.kind){case"literal":n.add(e.value,e.start);return;case"ref":$t(e,t);return;case"type":ke(e,t);return;case"binary-expression":{const[r]=e.operator.span;k(e.left,t),n.add(` ${e.operator.value} `,r),k(e.right,t);return}case"unary-expression":{const{value:r,start:s}=e.operator;n.add(r,s),k(e.expression,t);return}case"parenthesized-expression":n.appendNext("("),k(e.expression,t),n.appendNext(")");return;case"call-expression":k(e.function,t),e.templateArgs&&er(e.templateArgs,t),n.appendNext("("),e.arguments.forEach((r,s)=>{s>0&&n.appendNext(", "),k(r,t)}),n.appendNext(")");return;case"component-expression":k(e.base,t),n.appendNext("["),k(e.access,t),n.appendNext("]");return;case"component-member-expression":k(e.base,t),n.add("."+e.access.name,e.access.start);return;default:I(e)}}function oe(e,t){for(const n of e.commentsAfter??[])t.srcBuilder.appendNext(" "),se(n,t),n.style==="line"&&Z(t)}function We(e,t){e?.forEach(n=>{re(n,t),Zn(n,t)&&(oe(n,t),t.srcBuilder.add(" ",n.start))})}function Qn(e,t){if(e.commentsBefore)for(const n of e.commentsBefore)n.blankBefore&&t.srcBuilder.addNl(),Z(t),se(n,t)}function Z(e){e.srcBuilder.addNl(),e.indent>0&&e.srcBuilder.appendNext("  ".repeat(e.indent))}function H(e,t){Y(e,t);const n=D(e.body,t.conditions);if(n.length===0&&!e.innerComments?.length){t.srcBuilder.appendNext("{ }");return}t.srcBuilder.appendNext("{");const r=rr(t);for(const s of e.innerComments??[])Z(r),se(s,r);for(const s of n)Yn(s,r);Z(t),t.srcBuilder.appendNext("}")}function er(e,t){t.srcBuilder.appendNext("<"),e.forEach((n,r)=>{r>0&&t.srcBuilder.appendNext(", "),k(n,t)}),t.srcBuilder.appendNext(">")}function tr(e,t){sr(e,t),ao.has(e.kind)||t.srcBuilder.appendNext(";")}function nr(e,t){Y(e,t);const n=t.srcBuilder;switch(e.kind){case"var":case"gvar":n.appendNext("var"),e.template&&yo(e.template,t),n.appendNext(" "),Ne(e.name,t),ir(e.init,t);break;case"let":case"const":case"override":n.appendNext(`${e.kind} `),Ne(e.name,t),ir(e.init,t);break;case"alias":n.appendNext("alias "),re(e.name,t),xe(e.name,t),oe(e.name,t),n.appendNext(" = "),ke(e.typeRef,t);break;case"assert":n.appendNext("const_assert "),k(e.expression,t);break;default:I(e)}n.appendNext(";")}function se(e,t){t.srcBuilder.add(e.srcModule.src.slice(e.start,e.end),e.start)}function go(e){const{name:t,members:n}=e,r=n.length?"(with current conditions)":"";gt(t,`struct '${t.ident.originalName}' has no members ${r}`)}function ko(e){return!!(e.commentsBefore?.length||e.commentsAfter?.length)}function bo(e,t){const n=t.srcBuilder;for(const r of e.commentsBefore??[])n.appendNext("  "),se(r,t),n.addNl();n.appendNext("  "),Bt(e,t),n.appendNext(",");for(const r of e.commentsAfter??[])n.appendNext(" "),se(r,t);n.addNl()}function vo(e,t){if(e.attribute.kind!=="@attribute")return;const{params:n}=e.attribute;if(!n||n.length===0){t.srcBuilder.add("@"+e.attribute.name,e.start);return}t.srcBuilder.add("@"+e.attribute.name+"(",e.start),n.forEach((r,s)=>{s>0&&t.srcBuilder.appendNext(", "),k(r.expression,t)}),t.srcBuilder.add(")",n[n.length-1].end)}function rr(e){return{...e,indent:e.indent+1}}function sr(e,t){if(e.kind==="var"||e.kind==="let"||e.kind==="const"||e.kind==="assert"){nr(e,t);return}e.kind!=="block"&&Y(e,t);const n=t.srcBuilder;switch(e.kind){case"block":H(e,t);return;case"if":or(e,t);return;case"for":To(e,t);return;case"while":wo(e,t);return;case"loop":n.appendNext("loop "),H(e.body,t);return;case"continuing":n.appendNext("continuing "),H(e.body,t);return;case"switch":So(e,t);return;case"return":n.appendNext("return"),e.value&&(n.appendNext(" "),k(e.value,t));return;case"break":n.appendNext("break"),e.condition&&(n.appendNext(" if "),k(e.condition,t));return;case"continue":n.appendNext("continue");return;case"discard":n.appendNext("discard");return;case"assign":Eo(e,t);return;case"increment":k(e.target,t),n.appendNext("++");return;case"decrement":k(e.target,t),n.appendNext("--");return;case"call":k(e.call,t);return;case"empty":return;default:I(e)}}function yo(e,t){const n=t.srcBuilder;n.appendNext("<"),e.forEach((r,s)=>{s>0&&n.appendNext(", "),Mt(r,t)}),n.appendNext(">")}function ir(e,t){e&&(t.srcBuilder.appendNext(" = "),k(e,t))}function or(e,t){const n=t.srcBuilder;n.appendNext("if "),k(e.condition,t),n.appendNext(" "),H(e.body,t),e.else&&(n.appendNext(" else "),e.else.kind==="if"?or(e.else,t):H(e.else,t))}function To(e,t){const n=t.srcBuilder;n.appendNext("for ("),e.init?tr(e.init,t):n.appendNext(";"),n.appendNext(" "),e.condition&&k(e.condition,t),n.appendNext("; "),e.update&&sr(e.update,t),n.appendNext(") "),H(e.body,t)}function wo(e,t){t.srcBuilder.appendNext("while "),k(e.condition,t),t.srcBuilder.appendNext(" "),H(e.body,t)}function So(e,t){const n=t.srcBuilder;n.appendNext("switch "),k(e.selector,t),n.appendNext(" "),We(e.bodyAttributes,t),n.appendNext("{");const r=rr(t);for(const s of D(e.clauses,t.conditions))Jn(s,r);Z(t),n.appendNext("}")}function Eo(e,t){e.lhs.kind==="phony"?t.srcBuilder.add("_",e.lhs.span[0]):k(e.lhs,t);const[n]=e.op.span;t.srcBuilder.add(` ${e.op.value} `,n),k(e.rhs,t)}function xo(e){return ar(e)+";"}function ar(e){return[...e.segments.map(t=>t.name),No(e.finalSegment)].join("::")}function No(e){if(e.kind==="import-item"){const{name:t,as:n}=e;return`${t}${n?` as ${n}`:""}`}else{if(e.kind==="import-collection")return`{${e.subtrees.map(t=>ar(t)).join(", ")}}`;I(e)}}var At=class{#e=[];#t=0;#n;#r=!0;#s=!1;#i;maxWidth;indent;constructor(e=0,t=60,n=2){this.maxWidth=t,this.indent=e,this.#n=" ".repeat(e),this.#i=" ".repeat(n)}nl(){this.#e.push(`
`),this.#t=0,this.#r=!1,this.#s=!1}add(e){this.#t+Mo(e)>this.maxWidth&&this.hangingNl(),this.#t===0&&(this.#e.push(this.#n),this.#s&&this.#e.push(this.#i),this.#t=this.indent),this.#e.push(e),this.#t+=e.length}addBlock(e,t=!0){this.#e.push(e),t&&this.nl()}get result(){return this.#e.join("")}get oneLine(){return this.#r}hangingNl(){this.nl(),this.#s=!0}};function Mo(e){const t=e.indexOf(`
`);return t===-1?e.length:t}const ur=150;function It(e,t=0){const{kind:n}=e,r=new At(t,ur);r.add(n),$o(e,r),Bo(e,r);const s=Oe(e);if(s.length){r.nl();const i=s.map(o=>It(o,t+2));r.addBlock(i.join(`
`),!1)}return r.result}function cr(e){const t=new At(0,ur);return lr(e,t),t.result}function $o(e,t){const{kind:n}=e;if(!(n==="assert"||n==="expression"||n==="module"||n==="param"||n==="switch-clause"))if(n==="var"||n==="let"||n==="gvar"||n==="const"||n==="override")fr(e.name,t),ae(e.attributes,t);else if(n==="struct")t.add(" "+e.name.ident.originalName);else if(n==="member")ae(e.attributes,t),t.add(` ${e.name.name}: ${ue(e.typeRef)}`);else if(n==="name")t.add(" "+e.name);else if(n==="fn")Co(e,t);else if(n==="do")Ao(e,t);else if(n==="alias"){const r=e.name.ident.kind==="decl"?"%":"";t.add(` ${r}${e.name.ident.originalName}=${ue(e.typeRef)}`)}else n==="attribute"?lr(e.attribute,t):n==="type"?t.add(" "+ue(e)):n==="synthetic"?t.add(` '${e.text}'`):n==="import"?(t.add(" "+xo(e.imports)),ae(e.attributes,t)):n==="ref"?t.add(" "+e.ident.originalName):n==="typeDecl"?fr(e,t):n==="decl"?t.add(" %"+e.ident.originalName):n==="directive"?Io(e,t):n==="block"||n==="if"||n==="for"||n==="while"||n==="loop"||n==="continuing"||n==="switch"||n==="return"||n==="break"||n==="continue"||n==="discard"||n==="assign"||n==="increment"||n==="decrement"||n==="call"||n==="empty"?ae(e.attributes,t):n==="literal"?t.add(` literal(${e.value})`):n==="binary-expression"?t.add(` binop(${e.operator.value})`):n==="unary-expression"?t.add(` unop(${e.operator.value})`):n==="call-expression"?t.add(" call"):n==="parenthesized-expression"?t.add(" parens"):n==="component-expression"?t.add(" []"):n==="component-member-expression"?t.add(" ."):I(n)}function Bo(e,t){if(!("start"in e))return;const{commentsBefore:n,commentsAfter:r}=e;n?.length&&t.add(Pt("before",n)),r?.length&&t.add(Pt("after",r)),"innerComments"in e&&e.innerComments?.length&&t.add(Pt("inner",e.innerComments))}function lr(e,t){const{kind:n}=e;if(n==="@attribute"){const{name:r,params:s}=e,i=s?.length?`(${s.map(Po).join(", ")})`:"";t.add(` @${r}${i}`)}else n==="@builtin"?t.add(` @builtin(${e.param.name})`):n==="@diagnostic"?t.add(` @diagnostic${Ve(e.severity,e.rule)}`):n==="@if"||n==="@elif"?t.add(` ${n}(${J(e.param.expression)})`):n==="@else"?t.add(" @else"):n==="@interpolate"?t.add(` @interpolate(${e.params.map(r=>r.name).join(", ")})`):I(n)}function fr(e,t){const{decl:n,typeRef:r}=e;t.add(" %"+n.ident.originalName),r&&t.add(" : "+ue(r))}function ae(e,t){e?.forEach(n=>{t.add(" "+_o(n.attribute))})}function ue(e){if(!e)return"?type?";const t=typeof e.name=="string"?e.name:e.name.originalName,n=e.templateParams?.map(Fo).join(", ");return n?`${t}<${n}>`:t}function Co(e,t){const{name:n,params:r,returnType:s,attributes:i}=e;t.add(` ${n.ident.originalName}(${dr(r)})`),ae(i,t),s&&t.add(" -> "+ue(s))}function Ao(e,t){const{name:n,params:r,attributes:s}=e;t.add(` ${n.name}(${dr(r)})`),ae(s,t)}function Io(e,t){const{directive:n,attributes:r}=e,{kind:s}=n;if(s==="diagnostic"){const{severity:i,rule:o}=n,a=Ve(i,o);t.add(` diagnostic${a}`)}else s==="enable"||s==="requires"?t.add(` ${s} ${n.extensions.map(i=>i.name).join(", ")}`):I(s);ae(r,t)}function Pt(e,t){return` ${e}[${t.map(n=>{const r=n.srcModule.src.slice(n.start,n.end);return n.blankBefore?`'${r}'(blank)`:`'${r}'`}).join(", ")}]`}function Po(e){return It(e.expression)}function _o(e){return e.kind==="@attribute"?"@"+e.name:e.kind}function Fo(e){return typeof e=="string"?e:e.kind==="type"?ue(e):J(e)}function dr(e){return e.map(t=>{const{originalName:n}=t.name.decl.ident;return`${n}: ${ue(t.name.typeRef)}`}).join(", ")}function _t(e,t=0,n=!0,r){const{contents:s,kind:i,condAttribute:o}=e,a=new At(t),u=o&&cr(o);u&&a.add(u+" "),i==="partial"&&a.add("-"),a.add("{ ");const l=s.length-1;let c=!1,g=!1;return s.forEach((y,T)=>{if(Le(y)){const M=_t(y,t+2,n,r);c||a.nl(),a.addBlock(M),c=!0,g=!0}else{c&&a.add("  "),c=!1;const M=y;n?a.add(Ro(M)):a.add(ve(M,r)),T<l&&a.add(" ")}}),!g&&a.oneLine?a.add(" }"):(g&&!c&&a.nl(),a.add("}")),a.add(` #${e.id}`),a.result}function Do(e,t){return _t(e,0,!1,t)}function ve(e,t){if(!e)return JSON.stringify(e);const{kind:n,originalName:r}=e,s=e.id?`#${e.id}`:"";if(n==="ref")return`${r} ${s} -> ${Lo(t&&en(e,t),t)}`;{const i=t?.mangled.get(e);return`%${r}${i?`(${i})`:""} ${s} `}}function Ro(e){const{kind:t,originalName:n}=e;return`${t==="decl"?"%":""}${n}`}function Lo(e,t){return e==="std"?"std":!e||e==="unbound"?"undefined":ve(e,t)}function Oo(e){return t([],[],e.segments,e.finalSegment);function t(n,r,s,i){if(s.length>0){const[o,...a]=s;return t([...n,o.name],[...r,o.name],a,i)}else{if(i.kind==="import-collection")return i.subtrees.flatMap(o=>t(n,r,o.segments,o.finalSegment));if(i.kind==="import-item")return[{importPath:[...n,i.as??i.name],modulePath:[...r,i.name]}];I(i)}}}const Ft=/\.(wesl|wgsl)$/;function pr(e){return Ft.test(e)}function mr(e,t,n){const r=n?Rt(e,n):e,s=r[0];if(s==="package"||s===t)return r.slice(1).join("/")}function Dt(e,t,n){const r=n?.split("::");return mr(e.split("::"),t,r)}function Rt(e,t){const n=e[0]==="package"?[t[0],...e.slice(1)]:e,r=n.lastIndexOf("super");return r===-1?n:[...t.slice(0,-(r+1)),...n.slice(r+1)]}function Lt(e){return e===void 0?"./":e===""?"":e.endsWith("/")?e:e+"/"}function ye(e,t,n){return{message:e,start:t,end:n,severity:"error"}}function hr(e){return e.find(t=>t.severity==="error")}function gr(e,t){const{message:n,start:r,end:s,severity:i}=e,[o,a]=De(r,t.src),u=mt(t.src,[r,s]).join(`
`);return`${t.debugFilePath}:${o}:${a} ${i}: ${n}
${u}`}var $=class extends Error{span;constructor(e,t){super(e),this.span=t}};const Vo=9,kr=10,zo=11,Wo=12,br=13,jo=32,qo=133,Uo=8206,Xo=8207,Ko=8232,Go=8233;function Jo(e,t){const{srcModule:n}=e.state.stable,r=e.stream.commentRuns();r.length!==0&&vr(t,r,0,n)}function vr(e,t,n,r){const s=Yo(Oe(e));let i=0,o=n;for(;o<t.length;){const a=t[o],u=a[0].start,l=Zo(a);if(u<e.start||e.end<l)return o;for(;i<s.length&&s[i].end<=u;)i++;const c=s[i];if(c!==void 0&&c.start<=u&&l<=c.end){o=vr(c,t,o,r);continue}Qo(e,a,i>0?s[i-1]:void 0,Ho(s,i,l),r),o++}return o}function Yo(e){const t=[];let n=!0,r=-1;for(const s of e)s.kind!=="synthetic"&&(s.start<r&&(n=!1),r=s.start,t.push(s));return n||t.sort((s,i)=>s.start-i.start),t}function Zo(e){return e[e.length-1].end}function Ho(e,t,n){for(let r=t;r<e.length;r++)if(e[r].start>=n)return e[r]}function Qo(e,t,n,r,s){if(!r){n?Me(n,"commentsAfter",t,s):e.kind==="block"?Me(e,"innerComments",t,s):Me(e,"commentsBefore",t,s);return}const i=ea(n,r,t,s.src);n&&i>0&&Me(n,"commentsAfter",t.slice(0,i),s),i<t.length&&Me(r,"commentsBefore",t.slice(i),s)}function Me(e,t,n,r){const s=n.map(o=>ta(o,r)),i=e[t];e[t]=i?[...i,...s]:s}function ea(e,t,n,r){if(!e)return 0;const s=na(n,r);return s>=0?s:ra(n,t.start,r)}function ta(e,t){const{style:n,start:r,end:s}=e,i={kind:"comment",style:n,start:r,end:s,srcModule:t};return yr(t.src,r)>=2&&(i.blankBefore=!0),i}function na(e,t){return e.findIndex(n=>yr(t,n.start)>=1)}function ra(e,t,n){let r=e.length,s=t;for(let i=e.length-1;i>=0;i--){const o=e[i];if(!sa(n,o.end,s))break;r=i,s=o.start}return r}function yr(e,t){let n=0;for(let r=t-1;r>=0;r--){const s=e.charCodeAt(r);if(ia(s))s===kr&&e.charCodeAt(r-1)===br&&r--;else{if(Tr(s))continue;break}if(++n>=2)return 2}return n}function sa(e,t,n){for(let r=t;r<n;r++)if(!Tr(e.charCodeAt(r)))return!1;return!0}function ia(e){return e===kr||e===br||e===zo||e===Wo||e===qo||e===Ko||e===Go}function Tr(e){return e===jo||e===Vo||e===Uo||e===Xo}function wr(e){const{start:t,end:n}=e;return{kind:"literal",value:e.text,start:t,end:n}}function oa(e){const{start:t,end:n}=e;return{value:e.text,start:t,end:n}}function aa(e){return{value:e.text,span:[e.start,e.end]}}function ua(e,t){return{kind:"unary-expression",operator:e,expression:t,start:e.start,end:t.end}}function ca(e,t,n){const{start:r}=e;return{kind:"binary-expression",operator:t,left:e,right:n,start:r,end:n.end}}function la(e,t,n){return{kind:"component-expression",base:e,access:t,start:e.start,end:n}}function fa(e,t){return{kind:"component-member-expression",base:e,access:t,start:e.start,end:t.end}}function Sr(e,t,n,r){return{kind:"call-expression",function:e,templateArgs:t??void 0,arguments:n,start:e.start,end:r}}function p(e,t,n){const r=e.matchText(t);if(!r){const s=e.position();throw new $(n?`Expected '${t}' after ${n}`:`Expected '${t}'`,[s,s])}return r}function A(e,t){const n=e.peek();return(!n||n.kind!=="word")&&f(e,t),e.nextToken(),n}function B(e,t="Expected expression"){const n=Q(e);return n||f(e.stream,t),n}function Ot(e,t){return Q(e,t)}function f(e,t){const n=e,r=n.peek(),s=n.position();throw new $(t,r?[r.start,r.end]:[s,s])}function Vt(e,t,n=")"){const r=[];for(;;){const s=t(e);if(s===null||(r.push(s),!e.stream.matchText(","))||e.stream.peek()?.text===n)break}return r}function*Er(e,t){for(let n=t(e);n;n=t(e))yield n}function da(e,t){const n=[];for(let r=t(e);r;r=t(e))n.push(r);return n}function P(e){const{start:t,end:n}=e;return{kind:"name",name:e.text,start:t,end:n}}function je(e,t,n){const r=e.createDeclIdent(t.text,n),{start:s,end:i}=t;return{kind:"decl",ident:r,srcModule:e.srcModule,start:s,end:i}}function xr(e,t,n,r){const s={kind:"ref",ident:t,srcModule:e.srcModule,start:n,end:r};return t.refIdentElem=s,s}function pa(e){const{kind:t}=e;return t==="@if"||t==="@elif"||t==="@else"}function zt(e){return e.some(t=>pa(t.attribute))}function qe(e,t){t?.length&&(e.attributes=t)}function W(e){return e.length?e:void 0}function Ue(e,t){e.ident.declElem=t}function Xe(e,t){Ue(e.decl,t)}const Nr={"||":1,"&&":2,"|":3,"^":4,"&":5,"==":6,"!=":6,"<":7,"<=":7,">":7,">=":7,"<<":8,">>":8,"+":9,"-":9,"*":10,"/":10,"%":10};function ma(e){return e?e.text in Nr:!1}function Mr(e){return Nr[e.text]||0}function $r(e){switch(e){case"*":case"/":case"%":case"+":case"-":return"arithmetic";case"<<":case">>":return"shift";case"<":case">":case"<=":case">=":case"==":case"!=":return"relational";case"&":return"bitAnd";case"^":return"bitXor";case"|":return"bitOr";case"&&":return"logicalAnd";case"||":return"logicalOr";default:return"arithmetic"}}function ha(e,t,n){const r=$r(t);return ga(t,n)||f(e,`'${t}' requires parentheses after ${n}`),!ka(r)&&n===r&&f(e,`'${t}' cannot be chained`),r}function ga(e,t){const n=$r(e);return n==="shift"?t==="unary":n==="bitAnd"?t==="unary"||t==="bitAnd":n==="bitXor"?t==="unary"||t==="bitXor":n==="bitOr"?t==="unary"||t==="bitOr":n==="logicalAnd"?!Br(t)&&t!=="logicalOr":n==="logicalOr"?!Br(t)&&t!=="logicalAnd":!0}function ka(e){return e!=="shift"&&e!=="relational"}function Br(e){return e==="bitAnd"||e==="bitXor"||e==="bitOr"}const Cr=new Set(["as","import","package","super","self"]),ba=new Set(["package","super"]);function Ar(e){const t=e.peek();if(!t||!Ir(t,!0))return null;const n=t.start;e.nextToken();const r=[t.text];for(;e.matchText("::");){const s=e.peek();(!s||!Ir(s,!1))&&f(e,"Expected identifier after '::'"),e.nextToken(),r.push(s.text)}return{parts:r,start:n,end:e.position()}}function va(e,t){const n=Ar(e.stream);if(!n)return null;const{parts:r,start:s,end:i}=n,o=e.createRefIdent(r.join("::"));t&&(o.conditionRef=!0);const a=xr(e,o,s,i);return t||e.saveIdent(o),a}function Ir(e,t){return e.kind==="word"?!0:e.kind!=="keyword"?!1:Cr.has(e.text)?t&&ba.has(e.text):!0}function Ke(e){const t=Ar(e.stream);if(!t)return null;const{parts:n,start:r,end:s}=t,i=e.createRefIdent(n.join("::"));return xr(e,i,r,s),e.saveIdent(i),{kind:"type",name:i,templateParams:e.stream.nextTemplateStartToken()?Wt(e):void 0,start:r,end:e.stream.position()}}function Wt(e){const{stream:t}=e;jt(t)&&f(t,"Empty template parameter list '<>'");const n=[Pr(e)];for(;t.matchText(",");){if(jt(t))return n;n.push(Pr(e))}return jt(t)||f(t,"Expected '>' or ',' after template parameter"),n}function jt(e){return e.peek()?.text.startsWith(">")?(e.nextTemplateEndToken()||f(e,"Expected '>' to close template parameters"),!0):!1}function Pr(e){const t=Q(e,{inTemplate:!0});return t||f(e.stream,"Expected expression in template parameters"),t}function ya(e,t,n){if(t.kind!=="ref"&&t.kind!=="type")return null;const{stream:r}=e,s=t.kind==="ref"?Ta(e):null;if(!r.matchText("("))return null;const i=[];for(;;){const o=_r(r);if(o!==null)return Sr(t,s,i,o);const a=n(e);if(a||f(r,"Expected expression"),i.push(a),r.matchText(","))continue;const u=_r(r);if(u!==null)return Sr(t,s,i,u);f(r,"Expected ',' or ')' in function arguments")}}function Ta(e){const{stream:t}=e,n=t.position();if(!t.nextTemplateStartToken())return null;const r=Wt(e);return t.peek()?.text!=="("?(t.reset(n),null):r}function _r(e){const t=e.matchText(")");return t?t.end:null}function Q(e,t){const{conditionRef:n,inTemplate:r}=t===!0?{conditionRef:!0,inTemplate:!1}:t??{},s=n?!0:void 0,i=qt(e,s);return i?Fr(e,{prec:1,left:i,group:"unary",condRef:s,inTemplate:r}).expr:null}function qt(e,t){const{stream:n}=e,r=n.peek();if(!r)return null;const s="-!&*~";e.enterNesting();try{if(!s.includes(r.text))return wa(e,t);n.nextToken();const i=oa(r),o=qt(e,t);return o||f(n,"Expected expression after unary operator"),ua(i,o)}finally{e.exitNesting()}}function Fr(e,t){const{stream:n}=e,{prec:r,left:s,group:i}=t,{condRef:o,inTemplate:a}=t;let u=s,l=i;for(;;){const c=n.peek();if(!Dr(c,a))break;const g=Mr(c);if(g<r)break;n.nextToken(),l=ha(n,c.text,l);let y=qt(e,o);y||f(n,"Expected expression after binary operator");const T=n.peek();if(Dr(T,a)){const M=Mr(T);M>g&&(y=Fr(e,{prec:M,left:y,group:"unary",condRef:o,inTemplate:a}).expr)}u=ca(u,aa(c),y)}return{expr:u,group:l}}function wa(e,t){const n=Sa(e,t)||Ea(e.stream)||xa(e,t);return n?t?n:Na(e,n):null}function Dr(e,t){return!(!ma(e)||t&&e.text.startsWith(">"))}function Sa(e,t){const{stream:n}=e,r=n.matchText("(");if(!r)return null;const s=Q(e,t);s||f(n,"Expected expression after '('");const i=p(n,")","expression");return{kind:"parenthesized-expression",expression:s,start:r.start,end:i.end}}function Ea(e){const t=e.matchKind("number");return t?wr(t):Ma(e)}function xa(e,t){const n=va(e,t);if(!n)return null;if(!e.stream.nextTemplateStartToken())return n;const r=Wt(e);return{kind:"type",name:n.ident,templateParams:r,start:n.start,end:e.stream.position()}}function Na(e,t){let n=t;for(;;){const r=$a(e,n);if(!r)return n;n=r}}function Ma(e){const t=e.matchKind("keyword","true")||e.matchKind("keyword","false");return t?wr(t):null}function $a(e,t){return Ba(e,t)||Ca(e,t)||ya(e,t,Q)}function Ba(e,t){return e.stream.matchText(".")?fa(t,P(A(e.stream,"Expected identifier after '.'"))):null}function Ca(e,t){const{stream:n}=e;if(!n.matchText("["))return null;const r=Q(e);return r||f(n,"Expected expression in array index"),la(t,r,p(n,"]","array index").end)}function j(e){return e.stream.peek()?.text!=="@"?[]:da(e,_a)}function Aa(e){return Lr(e,"if",Fa)}function Ia(e){return e.stream.matchSequence("@","else")?Da():null}function Pa(e){return Lr(e,"elif",Ra)}function Rr(e){const{stream:t}=e,n=t.peek();if(n?.text!=="@")return null;const r=n.start,s=Aa(e)??Pa(e)??Ia(e);return s?$e(s,r,t.position()):null}function _a(e){return e.stream.peek()?.text!=="@"?null:Rr(e)??La(e)}function Lr(e,t,n){const{stream:r}=e,s=r.position();if(!r.matchSequence("@",t))return null;p(r,"(",`@${t}`);const i=Q(e,!0);return i||f(r,`Expected expression after @${t}(`),r.matchText(","),p(r,")",`@${t} expression`),n({kind:"translate-time-expression",expression:i,start:s,end:r.position()})}function Fa(e){return{kind:"@if",param:e}}function Da(){return{kind:"@else"}}function Ra(e){return{kind:"@elif",param:e}}function $e(e,t,n){return{kind:"attribute",attribute:e,start:t,end:n}}function La(e){const{stream:t}=e,n=t.matchText("@");if(!n)return null;const r=n.start,s=t.peek();s?.kind!=="word"&&s?.kind!=="keyword"&&f(t,"Expected attribute name after '@'"),t.nextToken();const i=s.text;if(i==="builtin")return Oa(e,r);if(i==="interpolate")return Va(e,r);if(i==="diagnostic")return za(e,r);let o;if(t.matchText("(")&&(e.parsingAttrParam=i,o=Wa(e),e.parsingAttrParam=void 0,p(t,")","attribute parameters")),i==="must_use"&&o!==void 0)throw new $("@must_use does not accept parameters",[r,t.position()]);return $e({kind:"@attribute",name:i,params:o},r,t.position())}function Oa(e,t){const{stream:n}=e;p(n,"(","@builtin");const r=A(n,"Expected identifier in @builtin");return n.matchText(","),p(n,")","@builtin parameter"),$e({kind:"@builtin",param:P(r)},t,n.position())}function Va(e,t){const{stream:n}=e;p(n,"(","@interpolate");const r=Vt(e,ja);return p(n,")","@interpolate parameters"),$e({kind:"@interpolate",params:r},t,n.position())}function za(e,t){const{stream:n}=e;p(n,"(","@diagnostic");const r=P(A(n,"Expected severity in @diagnostic"));p(n,",","@diagnostic severity");const s=P(A(n,"Expected rule in @diagnostic"));let i;return n.matchText(".")?i=[s,P(A(n,"Expected rule after namespace"))]:i=[s,null],n.matchText(","),p(n,")","@diagnostic parameters"),$e({kind:"@diagnostic",severity:r,rule:i},t,n.position())}function Wa(e){return Vt(e,qa)}function ja(e){return P(A(e.stream,"Expected identifier"))}function qa(e){const{stream:t}=e,n=t.position(),r=Q(e);return r||f(t,"Expected attribute parameter"),{kind:"expression",expression:r,start:n,end:t.position()}}function ce(e){const t=e.currentScope(),n=t.contents.length,{parsingAttrParam:r,nesting:s}=e;return{start:e.stream.position(),scope:t,scopeLength:n,parsingAttrParam:r,nesting:s}}function Or(e,t){const{scope:n,scopeLength:r}=t;e.state.context.scope=n,n.contents.length=r,e.parsingAttrParam=t.parsingAttrParam,e.nesting=t.nesting}function Ut(e,t,n,r,s){if(!(t instanceof $)||(Or(e,n),!Xt(e.stream,n.start,r)))throw t;if(s){const i=e.stream.peek();if(i&&s(i))throw t}e.addError(t.message,...t.span)}function Xt(e,t,n){let r=0;for(;;){const s=e.position();let i;try{i=e.peek()}catch(o){if(!(o instanceof $))throw o;if(e.position()===s)return!1;continue}if(i===null)return!1;if(s>t&&n(i,r))return!0;e.nextToken(),i.text==="{"?r++:i.text==="}"&&r>0&&r--}}function Ua(e,t){const n=q(e,"if",t);return n===null?null:b("if",n,e,{condition:B(e,"Expected condition after 'if'"),body:le(e,"Expected '{' after if condition"),else:Vr(e)},t)}function Xa(e,t){const n=q(e,"switch",t);if(n===null)return null;const r=B(e,"Expected expression after 'switch'"),{bodyAttributes:s,clauses:i}=Ka(e);return b("switch",n,e,{selector:r,clauses:i,bodyAttributes:s},t)}function Vr(e){const{stream:t}=e,n=t.matchText("else");if(n){e.enterNesting();try{return Ga(e,n)}finally{e.exitNesting()}}}function Ka(e){const{stream:t}=e,n=j(e);p(t,"{","switch expression");const r=[];for(;;){const s=ce(e);try{if(t.matchText("}"))break;r.push(Ja(e))}catch(i){Ut(e,i,s,Ya,Ye)}}return{bodyAttributes:W(n),clauses:r}}function Ga(e,t){const{stream:n}=e;if(!n.matchText("if"))return le(e,"Expected '{' after else");const r=B(e,"Expected expression after 'else if'"),s=le(e,"Expected '{' after else if"),i=Vr(e),o=n.position();return{kind:"if",condition:r,body:s,else:i,start:t.start,end:o}}function Ja(e){const{stream:t}=e,n=W(j(e)),r=t.matchText("case"),s=r??t.matchText("default");s||f(t,"Expected 'case', 'default', or '}' in switch");const i=x(n,s.start);let o,a;return r?(o=Za(e),a=zr(e,"Expected '{' after case value")):(o=["default"],a=zr(e,"Expected '{' after 'default'")),b("switch-clause",i,e,{selectors:o,body:a},n)}function Ya(e,t){return Ye(e)?!0:t!==0?!1:e.kind==="keyword"?e.text==="case"||e.text==="default":e.text==="}"||e.text==="@"}function Za(e){const{stream:t}=e,n=[Wr(e,"Expected expression after 'case'")];for(;t.matchText(",");){const r=t.peek()?.text;if(r==="{"||r===":")break;n.push(Wr(e,"Expected expression after ',' in case values"))}return n}function zr(e,t){e.stream.matchText(":");const n=Je(e,W(j(e)));return n||f(e.stream,t),n}function Wr(e,t){return e.stream.matchText("default")?"default":B(e,t)}function Kt(e,t){return jr(e,"const",!0,e.isModuleScope(),t)}function Ha(e,t){return jr(e,"override",!1,!0,t)}function Ge(e,t=!0){const n=e.stream.matchKind("word");if(!n)return null;const r=n.start,s=je(e,n,t);e.saveIdent(s.ident);const{typeRef:i,typeScope:o}=Qa(e);return{kind:"typeDecl",decl:s,typeRef:i,typeScope:o,start:r,end:e.stream.position()}}function jr(e,t,n,r,s){const{stream:i}=e,o=i.matchText(t);if(!o)return null;const a=x(s,o.start);e.pushScope("partial");const u=Ge(e,r);u||f(i,`Expected identifier after '${t}'`);let l;n?(p(i,"=",`${t} identifier`),l=B(e)):i.matchText("=")&&(l=B(e)),p(i,";",`${t} declaration`),u.decl.ident.dependentScope=e.currentScope(),e.popScope();const c=b(t,a,e,{name:u,init:l},s);return Xe(u,c),c}function Qa(e){if(!e.stream.matchText(":"))return{};e.pushScope();const t=Ke(e);t||f(e.stream,"Expected type after ':'");const n=e.currentScope();return e.popScope(),{typeRef:t,typeScope:n}}function eu(e,t){const{stream:n}=e,r=n.matchText("var");if(!r)return null;const s=x(t,r.start);e.pushScope("partial");const i=Ur(e),o=Ge(e);o||f(n,"Expected identifier after 'var'");let a;n.matchText("=")&&(a=B(e)),p(n,";","var declaration"),o.decl.ident.dependentScope=e.currentScope(),e.popScope();const u=b("gvar",s,e,{name:o,template:i,init:a},t);return Xe(o,u),u}function tu(e,t){const{stream:n}=e,r=n.matchText("alias");if(!r)return null;const s=x(t,r.start),i=je(e,A(n,"Expected identifier after 'alias'"),!0);e.saveIdent(i.ident),p(n,"=","alias name"),e.pushScope();const o=Ke(e);o||f(n,"Expected type after '=' in alias declaration"),i.ident.dependentScope=e.currentScope(),e.popScope(),p(n,";","alias declaration");const a=b("alias",s,e,{name:i,typeRef:o},t);return Ue(i,a),a}function qr(e,t){const n=e.stream.matchText("const_assert");if(!n)return null;const r=x(t,n.start),s=B(e);return p(e.stream,";","const_assert expression"),b("assert",r,e,{expression:s},t)}function Ur(e){const{stream:t}=e;if(!t.nextTemplateStartToken())return;const n=[];for(;;){const r=t.peek();if(r||f(t,"Unclosed template in var declaration"),r.text.startsWith(">"))return t.nextTemplateEndToken(),n;const s=t.matchKind("word");s?n.push(P(s)):t.matchText(",")||f(t,"Expected ',' or '>' in var template list")}}function Xr(e,t){return Gr(e,"var",!0,!1,t)}function Kr(e,t){return Gr(e,"let",!1,!0,t)}function Gr(e,t,n,r,s){const{stream:i}=e,o=i.matchText(t);if(!o)return null;const a=x(s,o.start),u=n?Ur(e):void 0,l=Ge(e,!1);l||f(i,`Expected identifier after '${t}'`);let c;r?(p(i,"=",`${t} identifier (${t} requires initialization)`),c=B(e)):i.matchText("=")&&(c=B(e)),p(i,";",`${t} declaration`);const g=b(t,a,e,{name:l,init:c},s);return u&&g.kind==="var"&&(g.template=u),Xe(l,g),g}const nu=new Set(["=","+=","-=","*=","/=","%=","&=","|=","^=","<<=",">>="]);function ru(e,t){return iu(e,t)||ou(e,t)||au(e,t)||uu(e,t)||cu(e,t)||lu(e,t)||fu(e,t)}function su(e){const t=e.nextIf(({text:n})=>nu.has(n));return t?{value:t.text,span:[t.start,t.end]}:null}function Jr(e){const t=e.nextIf(({text:n})=>n==="++"||n==="--");return t?{op:t.text,span:[t.start,t.end]}:null}function Yr(e){const t=su(e.stream);return t?{op:t,rhs:B(e,"Expected expression after assignment operator")}:null}function iu(e,t){const{stream:n}=e,r=q(e,"return",t);if(r===null)return null;const s=Ot(e)??void 0;return p(n,";","return statement"),b("return",r,e,{value:s},t)}function ou(e,t){const{stream:n}=e,r=q(e,"break",t);if(r===null)return null;let s;return n.matchText("if")&&(s=B(e,"Expected condition after 'break if'")),p(n,";","break statement"),b("break",r,e,{condition:s},t)}function au(e,t){const{stream:n}=e,r=q(e,"continue",t);return r===null?null:(p(n,";","continue statement"),b("continue",r,e,{},t))}function uu(e,t){const{stream:n}=e,r=q(e,"discard",t);return r===null?null:(p(n,";","discard statement"),b("discard",r,e,{},t))}function cu(e,t){const{stream:n}=e,r=n.matchText(";");return r?b("empty",x(t,r.start),e,{},t):null}function lu(e,t){const{stream:n}=e,r=n.matchText("_");if(!r)return null;const s=x(t,r.start),i={kind:"phony",span:[r.start,r.end]},o=n.matchText("=");o||f(n,"Expected '=' after '_'");const a={value:"=",span:[o.start,o.end]},u=B(e,"Expected expression after '_ ='");return p(n,";","assignment"),b("assign",s,e,{lhs:i,op:a,rhs:u},t)}function fu(e,t){const{stream:n}=e,r=n.position(),s=Q(e);if(!s)return n.reset(r),null;const i=x(t,s.start),o=Jr(n);if(o)return p(n,";","expression"),b(o.op==="++"?"increment":"decrement",i,e,{target:s},t);const a=Yr(e);return a?(p(n,";","expression"),b("assign",i,e,{lhs:s,op:a.op,rhs:a.rhs},t)):(s.kind!=="call-expression"&&f(n,"Expected call, assignment, or increment"),p(n,";","expression"),b("call",i,e,{call:s},t))}function du(e,t){const{stream:n}=e,r=q(e,"for",t);if(r===null)return null;e.pushScope(),p(n,"(","'for'");const s=gu(e),i=Ot(e)??void 0;p(n,";","for loop condition");const o=Zr(e);p(n,")","for loop header");const a=le(e,"Expected '{' after for loop header");return e.popScope(),b("for",r,e,{init:s,condition:i,update:o,body:a},t)}function pu(e,t){const n=q(e,"while",t);return n===null?null:b("while",n,e,{condition:B(e,"Expected condition after 'while'"),body:le(e,"Expected '{' after while condition")},t)}function mu(e,t){const n=q(e,"loop",t);if(n===null)return null;const r=le(e,"Expected '{' after 'loop'",!0);return b("loop",n,e,{body:r,continuing:r.body.find(s=>s.kind==="continuing")},t)}function hu(e,t){const n=q(e,"continuing",t);if(n===null)return null;const r=le(e,"Expected '{' after 'continuing'");return b("continuing",n,e,{body:r,breakIf:r.body.find(s=>s.kind==="break")?.condition},t)}function gu(e){const{stream:t}=e,n=Xr(e)??Kr(e)??Kt(e);if(n)return n;const r=Zr(e);return p(t,";","for loop init"),r}function Zr(e){const t=ku(e);if(t)return t;const n=Ot(e);if(n)return bu(e,n)}function ku(e){const{stream:t}=e,n=t.matchText("_");if(!n)return;const r={kind:"phony",span:[n.start,n.end]},s=t.matchText("=");return s||f(t,"Expected '=' after '_'"),{kind:"assign",lhs:r,op:{value:"=",span:[s.start,s.end]},rhs:B(e,"Expected expression after '_ ='"),start:n.start,end:t.position()}}function bu(e,t){const{stream:n}=e,r=t.start,s=Jr(n);if(s){const o=n.position();return s.op==="++"?{kind:"increment",target:t,start:r,end:o}:{kind:"decrement",target:t,start:r,end:o}}const i=Yr(e);if(i){const{op:o,rhs:a}=i;return{kind:"assign",lhs:t,op:o,rhs:a,start:r,end:n.position()}}if(t.kind==="call-expression")return{kind:"call",call:t,start:r,end:n.position()};f(n,"Expected an assignment, increment, decrement, or call in for-clause")}const vu=new Set(["let","var","const","const_assert","if","switch","loop","for","while","return","break","continue","continuing","discard"]),yu=new Set(["fn","struct","override","alias","import","enable","requires","do"]),Tu=[Xr,Kr,Kt,qr,Je,Ua,Xa,du,pu,mu,hu,ru];function Hr(e){return Je(e,void 0,{noScope:!0})}function Je(e,t,n){const r=e.stream.peek();if(r?.text!=="{")return null;e.enterNesting();try{e.stream.nextToken();const s=x(t,r.start),i=n?.noScope||wu(t);i||e.pushScope();const o=Su(e,n?.loopBody);return i||e.popScope(),b("block",s,e,{body:o},t)}finally{e.exitNesting()}}function le(e,t,n){const r=j(e),s=n?{loopBody:n}:void 0,i=Je(e,W(r),s);return i||f(e.stream,t),i}function x(e,t){return e?.[0]?.start??t}function q(e,t,n){const r=e.stream.matchText(t);return r?x(n,r.start):null}function b(e,t,n,r,s){const i={kind:e,start:t,end:n.stream.position(),...r};return qe(i,s),i}function Ye(e){return e.kind==="keyword"&&yu.has(e.text)}function wu(e){return!!e&&zt(e)}function Su(e,t){const{stream:n}=e,r=[];let s=!1;for(;;){let i=ce(e);try{if(n.matchText("}"))break;const o=Eu(e);if(o||f(n,"Expected statement or '}'"),s||r.push(o),t&&o.kind==="continuing"){s=!0,i=ce(e),p(n,"}","continuing block");break}}catch(o){Ut(e,o,i,xu,Ye),n.matchText(";")}}return r}function Eu(e){const{stream:t}=e,n=t.position(),r=j(e),s=t.peek();if(!s||s.text==="}")return t.reset(n),null;const i=r.length>0&&zt(r);i&&e.pushScope("partial");const o=W(r),a=dt(Tu,u=>u(e,o));if(i){const u=e.popScope();a&&(u.condAttribute=Re(r))}return a||null}function xu(e,t){return Ye(e)?!0:t!==0?!1:e.kind==="keyword"?vu.has(e.text):e.text===";"||e.text==="}"||e.text==="@"}function Nu(e){const{stream:t}=e,n=t.position(),r=W(j(e)),s=Qr(e,"enable",r)||Qr(e,"requires",r)||Mu(e,r);return s||t.reset(n),s}function Qr(e,t,n){const{stream:r}=e,s=r.matchText(t);if(!s)return null;const i=Vt(e,$u,";");return p(r,";",`${t} directive`),es({kind:t,extensions:i},s,r,n)}function Mu(e,t){const{stream:n}=e,r=n.matchText("diagnostic");if(!r)return null;p(n,"(","diagnostic");const s=P(A(n,"Expected severity in diagnostic"));p(n,",","diagnostic severity");const i=P(A(n,"Expected rule name in diagnostic"));let o=null;return n.matchText(".")&&(o=P(A(n,"Expected subrule name after '.'"))),n.matchText(","),p(n,")","diagnostic rule"),p(n,";","diagnostic directive"),es({kind:"diagnostic",severity:s,rule:[i,o]},r,n,t)}function $u(e){return P(A(e.stream,"Expected identifier in name list"))}function es(e,t,n,r){const s={kind:"directive",directive:e,start:x(r,t.start),end:n.position()};return qe(s,r),s}function Bu(e,t){const{stream:n}=e,r=n.matchText("fn");if(!r)return null;const s=x(t,r.start),i=je(e,A(n,"Expected identifier after 'fn'"),!0);e.saveIdent(i.ident),e.pushScope();const o=e.currentScope();e.pushScope();const a=ts(e),u=e.currentScope();e.state.context.scope=o;const{returnType:l,returnAttributes:c}=Cu(e);e.state.context.scope=u;const g=Hr(e);g||f(n,"Expected function body"),e.popScope(),i.ident.dependentScope=e.currentScope(),e.popScope();const y={kind:"fn",name:i,params:a,body:g,returnType:l,returnAttributes:c,start:s,end:n.position()};return qe(y,t),Ue(i,y),y}function ts(e){const{stream:t}=e,n=[];for(p(t,"(","function name");!t.matchText(")");){const r=Au(e);if(r||f(t,"Expected function parameter or ')'"),n.push(r),!t.matchText(",")){p(t,")","function parameter");break}}return n}function Cu(e){const{stream:t}=e;if(!t.matchText("->"))return{};const n=j(e),r=Ke(e);return r||f(t,"Expected type after '->'"),{returnType:r,returnAttributes:W(n)}}function Au(e){const t=j(e);if(e.stream.peek()?.kind!=="word")return null;const n=W(t),r=Ge(e,!1);if(!r)throw new Error("Unexpected: peek succeeded but parseTypedDecl failed");const s=b("param",x(n,r.start),e,{name:r},n);return Xe(r,s),s}function Iu(e,t){if(!e.options.weslExtensions?.doBlocks)return null;const{stream:n}=e,r=n.matchText("do");if(!r)return null;const s=x(t,r.start),i=P(A(n,"Expected identifier after 'do'")),o=e.currentScope();e.pushScope();const a=e.currentScope(),u=ts(e),l=Hr(e);l||f(n,"Expected do block body"),e.popScope(),Pu(o,a);const c={kind:"do",name:i,params:u,body:l,start:s,end:n.position()};return qe(c,t),c}function Pu(e,t){const n=e.contents.indexOf(t);n>=0&&e.contents.splice(n,1)}const ns="Syntax nested too deeply";var _u=class{src;srcModule;stream;state;options;constructor(e,t,n){this.stream=e,this.state=t,this.srcModule=t.stable.srcModule,this.src=this.srcModule.src,this.options=n??{}}nesting=0;enterNesting(){this.nesting>=384&&f(this.stream,ns),this.nesting++}exitNesting(){this.nesting--}currentScope(){return this.state.context.scope}addModuleDecl(e){this.state.stable.moduleElem.decls.push(e)}addError(e,t,n){this.state.stable.diagnostics.push(ye(e,t,n))}pushScope(e="scope"){const{scope:t}=this.state.context,n=bt(t,e);t.contents.push(n),this.state.context.scope=n}popScope(){const e=this.state.context,t=e.scope;return t.parent&&(e.scope=t.parent),t}isModuleScope(){let e=this.currentScope();for(;e.kind==="partial"&&e.parent;)e=e.parent;return e.parent===null}parsingAttrParam;createRefIdent(e){const t={kind:"ref",originalName:e,ast:this.state.stable,id:kt(),refIdentElem:null};return this.parsingAttrParam&&(t.attrParam=this.parsingAttrParam),t}createDeclIdent(e,t=!1){return{kind:"decl",originalName:e,containingScope:this.state.context.scope,isGlobal:t,id:kt(),srcModule:this.srcModule,declElem:null}}saveIdent(e){this.state.context.scope.contents.push(e)}};function*Fu(e){yield*Er(e,Du)}function Du(e){const{stream:t}=e,n=Rr(e),r=Ru(t);if(!r)return n&&t.reset(n.start),null;const{statement:s,importPos:i}=r;return{kind:"import",imports:s,start:n?.start??i,end:t.position(),attributes:n?[n]:void 0}}function Ru(e){const t=e.matchText("import");if(!t)return null;const n=Lu(e)??[],r=rs(e,0)||Ze(e,0);return r||f(e,"invalid import, expected { or name"),e.matchText(";")||f(e,"invalid import, expected ';'"),{statement:r.kind==="import-statement"?ss(n,r):He(n,r),importPos:t.start}}function Lu(e){if(e.matchSequence("package","::"))return[Gt("package")];const t=[];for(;e.matchSequence("super","::");)t.push(Gt("super"));return t.length>0?t:null}function rs(e,t){if(!e.matchText("{"))return null;const n="invalid import collection, expected name",r=Ze(e,t);r||f(e,n);const s=[r];for(;e.matchText(",")&&e.peek()?.text!=="}";){const i=Ze(e,t);i||f(e,n+" after ','"),s.push(i)}return e.matchText("}")||f(e,"invalid import collection, expected }"),Ou(s)}function Ze(e,t){const n=Vu(e);if(!n)return null;if(e.matchText("::")){t>=384&&f(e,ns);const r=Gt(n),s=rs(e,t+1);if(s)return He([r],s);const i=Ze(e,t+1);if(i)return ss([r],i);f(e,"invalid import, expected '{' or name")}if(e.matchText("as")){const r=e.matchKind("word");return r||f(e,"invalid alias, expected name"),He([],is(n,r.text))}return He([],is(n))}function ss(e,t){return{...t,segments:e.concat(t.segments)}}function He(e,t){return{kind:"import-statement",segments:e,finalSegment:t}}function Gt(e){return{kind:"import-segment",name:e}}function Ou(e){return{kind:"import-collection",subtrees:e}}function Vu(e){const t=e.peek();if(!t)return null;const{text:n,kind:r}=t;return r!=="word"&&r!=="keyword"||Cr.has(n)?null:(e.nextToken(),n)}function is(e,t){return{kind:"import-item",name:e,as:t}}function zu(e,t){const{stream:n}=e,r=n.matchText("struct");if(!r)return null;const s=x(t,r.start),i=je(e,A(n,"Expected identifier after 'struct'"),!0);e.saveIdent(i.ident),p(n,"{","struct name"),e.pushScope();const o=Wu(e);i.ident.dependentScope=e.currentScope(),e.popScope(),p(n,"}","struct member");const a=b("struct",s,e,{name:i,members:o},t);return Ue(i,a),a}function Wu(e){const{stream:t}=e,n=[];for(;;){let r=ce(e);try{const s=ju(e);if(!s)break;n.push(s);const i=r.start;if(r=ce(e),t.matchText(","))continue;const o=t.peek();if(o===null||o.text==="}")break;e.addError("Expected ',' after struct member",o.start,o.end),Xt(t,i,os),t.matchText(",")}catch(s){Ut(e,s,r,os),t.matchText(",")}}return n}function ju(e){const{stream:t}=e,n=t.position(),r=j(e),s=t.matchKind("word");if(!s)return t.reset(n),null;const i=W(r),o=x(i,s.start),a=P(s);p(t,":","struct member name");const u=Ke(e);return u||f(t,"Expected type after ':'"),b("member",o,e,{name:a,typeRef:u},i)}function os(e,t){return t!==0?!1:e.text===","||e.text==="}"||e.text==="@"}const qu=[Kt,Ha,eu,tu,zu,Bu,Iu,qr],Uu=new Set(["fn","struct","var","const","override","alias","const_assert","import","enable","requires","diagnostic","do"]),Xu=new Set(["var","const","const_assert"]);function Ku(e){Ju(e),Yu(e)}function Gu(e){const t=vt(e,"do");if(t.length===0)return[];const n=[],r=new Map;for(const i of e.decls){const o=Zu(i);o!==void 0&&r.set(o,i.kind==="gvar"?"var":i.kind)}const s=new Set;for(const i of t){const{name:o,start:a,end:u}=i.name,l=r.get(o);if(l){const c=`'${o}' declared as both ${l} and do`;n.push(ye(c,a,u))}else if(s.has(o)){const c=`'${o}' declared as do more than once`;n.push(ye(c,a,u))}s.add(o)}return n}function Ju(e){const{stream:t}=e;for(;;){const n=ce(e);try{Hu(e),Qu(e);return}catch(r){if(!(r instanceof $))throw r;if(as(e,r,n),t.position()===n.start)return}}}function Yu(e){const{stream:t}=e;for(;;){const n=ce(e);try{if(t.peek()===null)return;ec(e)||f(t,"Expected a declaration or directive")}catch(r){if(!(r instanceof $))throw r;if(as(e,r,n),t.position()===n.start)return}}}function Zu(e){switch(e.kind){case"fn":case"struct":case"alias":return e.name.ident.originalName;case"gvar":case"const":case"override":return e.name.decl.ident.originalName;default:return}}function Hu(e){for(const t of Fu(e))e.addModuleDecl(t),e.state.stable.imports.push(t.imports)}function Qu(e){const t=Er(e,Nu),{stable:n}=e.state;for(const r of t)e.addModuleDecl(r),r.directive.kind!=="diagnostic"&&(n.moduleDirectives??=[],n.moduleDirectives.push(r))}function as(e,t,n){e.addError(t.message,...t.span),Or(e,n),Xt(e.stream,n.start,tc)}function ec(e){const{stream:t}=e;if(t.matchText(";"))return!0;const n=j(e),r=zt(n);r&&e.pushScope("partial");const s=nc(e,n);if(r){const i=e.popScope();s&&(i.condAttribute=Re(n))}return s?!0:(n.length&&f(t,"Expected declaration after attributes"),!1)}function tc(e,t){return e.kind==="keyword"?Uu.has(e.text)?t===0||!Xu.has(e.text):!1:t===0&&e.text==="@"}function nc(e,t){const n=dt(qu,r=>r(e,W(t)));return n?(rc(e,n,t),!0):!1}function rc(e,t,n){if(n.length&&t.start>n[0].start&&(t.start=n[0].start),e.addModuleDecl(t),t.kind==="assert"){const{stable:r}=e.state;r.moduleAsserts??=[],r.moduleAsserts.push(t)}}const sc=`alias break case const const_assert continue continuing 
  default diagnostic discard else enable false fn for if 
  let loop override requires return struct switch true var while`.split(/\s+/),ic=`NULL Self abstract active alignas alignof as asm asm_fragment async attribute auto await
  become cast catch class co_await co_return co_yield coherent column_major
  common compile compile_fragment concept const_cast consteval constexpr constinit crate
  debugger decltype delete demote demote_to_helper do dynamic_cast
  enum explicit export extends extern external fallthrough filter final finally friend from fxgroup
  get goto groupshared highp impl implements import inline instanceof interface layout lowp
  macro macro_rules match mediump meta mod module move mut mutable
  namespace new nil noexcept noinline nointerpolation non_coherent noncoherent noperspective null nullptr
  of operator package packoffset partition pass patch pixelfragment precise precision premerge
  priv protected pub public readonly ref regardless register reinterpret_cast require resource restrict
  self set shared sizeof smooth snorm static static_assert static_cast std subroutine super
  target template this thread_local throw trait try type typedef typeid typename typeof
  union unless unorm unsafe unsized use using varying virtual volatile wgsl where with writeonly yield`.split(/\s+/),us=new Set(sc.concat(ic));function oc(e){const[t,n]=e;if(typeof n=="string"){const r=`(${ls(n)})`;return cs(t,new RegExp(r)),r}else return cs(t,n),`(${n.source})`}function cs(e,t){if(new RegExp("|"+t.source).exec("").length>1)throw new Error(`match expression groups must be non-capturing: ${e}: /${t.source}/. Use (?:...) instead.`)}const ac=/[$+*.?|(){}[\]\\/^]/g;function ls(e){return e.replace(ac,"\\$&")}function uc(e){const t=e.split(/\s+/).sort((n,r)=>r.length-n.length).filter(n=>n).map(ls);return new RegExp(t.join("|"))}var cc=class{groups;exp;constructor(e){this.groups=Object.keys(e);const t=Object.entries(e).map(oc).join("|");this.exp=new RegExp(t,"yu")}execAt(e,t){this.exp.lastIndex=t;const n=this.exp.exec(e);if(n===null)return null;const r=n[0];return{kind:this.groups[lc(n)],text:r,start:t,end:t+r.length}}};function lc(e){for(let t=1;t<e.length;t++)if(e[t]!==void 0)return t-1;throw new Error("no matching group")}const fs=/(?:(?:[_\p{XID_Start}][\p{XID_Continue}]+)|(?:[\p{XID_Start}]))/u,fc=/[ \t\n\v\f\r\u{0085}\u{200E}\u{200F}\u{2028}\u{2029}]+/u,ds=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),dc=new cc({word:fs,number:ds,blankspaces:fc,commentStart:/\/\/|\/\*/,symbol:uc("& && -> @ / ! [ ] { } :: : , == = != >>= >> >= > <<= << <= < % - -- . + ++ | || ( ) ; * ~ ^ // /* */ += -= *= /= %= &= |= ^= _"),invalid:/[^]/});var pc=class{pos=0;numberExp=new RegExp(ds.source,"y");src;constructor(e){this.src=e}position(){return this.pos}reset(e){this.pos=e}nextToken(){const{src:e}=this,t=e.length;let n=this.pos;for(;n<t;){const i=e.charCodeAt(n);if(i===32||i>=9&&i<=13)n++;else break}if(n>=t)return this.pos=n,null;const r=e.charCodeAt(n);if(r>=97&&r<=122||r>=65&&r<=90)return this.word(n);if(r>=48&&r<=57)return this.number(n);const s=e.charCodeAt(n+1);switch(r){case 95:return ps(s)?this.word(n):s>=128?this.regexToken(n):this.symbol(n,"_");case 47:return s===47?this.token("commentStart",n,"//"):s===42?this.token("commentStart",n,"/*"):s===61?this.symbol(n,"/="):this.symbol(n,"/");case 46:return s>=48&&s<=57?this.number(n):this.symbol(n,".");case 62:return s===62?e.charCodeAt(n+2)===61?this.symbol(n,">>="):this.symbol(n,">>"):s===61?this.symbol(n,">="):this.symbol(n,">");case 60:return s===60?e.charCodeAt(n+2)===61?this.symbol(n,"<<="):this.symbol(n,"<<"):s===61?this.symbol(n,"<="):this.symbol(n,"<");case 38:return s===38?this.symbol(n,"&&"):s===61?this.symbol(n,"&="):this.symbol(n,"&");case 124:return s===124?this.symbol(n,"||"):s===61?this.symbol(n,"|="):this.symbol(n,"|");case 45:return s===62?this.symbol(n,"->"):s===45?this.symbol(n,"--"):s===61?this.symbol(n,"-="):this.symbol(n,"-");case 43:return s===43?this.symbol(n,"++"):s===61?this.symbol(n,"+="):this.symbol(n,"+");case 58:return s===58?this.symbol(n,"::"):this.symbol(n,":");case 61:return s===61?this.symbol(n,"=="):this.symbol(n,"=");case 33:return s===61?this.symbol(n,"!="):this.symbol(n,"!");case 42:return s===47?this.symbol(n,"*/"):s===61?this.symbol(n,"*="):this.symbol(n,"*");case 37:return s===61?this.symbol(n,"%="):this.symbol(n,"%");case 94:return s===61?this.symbol(n,"^="):this.symbol(n,"^");case 64:return this.symbol(n,"@");case 91:return this.symbol(n,"[");case 93:return this.symbol(n,"]");case 123:return this.symbol(n,"{");case 125:return this.symbol(n,"}");case 40:return this.symbol(n,"(");case 41:return this.symbol(n,")");case 44:return this.symbol(n,",");case 59:return this.symbol(n,";");case 126:return this.symbol(n,"~")}return r>=128?this.regexToken(n):(this.pos=n+1,{kind:"invalid",text:e[n],start:n,end:n+1})}token(e,t,n){const r=t+n.length;return this.pos=r,{kind:e,text:n,start:t,end:r}}symbol(e,t){return this.token("symbol",e,t)}word(e){const{src:t}=this,n=t.length;let r=e+1;for(;r<n;){const s=t.charCodeAt(r);if(ps(s))r++;else{if(s>=128)return this.regexToken(e);break}}return this.pos=r,{kind:"word",text:t.slice(e,r),start:e,end:r}}number(e){this.numberExp.lastIndex=e;const t=this.numberExp.exec(this.src)[0];return this.token("number",e,t)}regexToken(e){const t=dc.execAt(this.src,e);return t===null?null:(this.pos=t.end,t)}};function ps(e){return e>=97&&e<=122||e>=65&&e<=90||e>=48&&e<=57||e===95}const mc=String.raw`\r\n?|[\n\v\f\u{0085}\u{2028}\u{2029}]`;var ms=class{stream;eolOrNullPattern=new RegExp(mc+"|\\0","gu");blockCommentPattern=/\/\*|\*\/|\0/g;triviaByPos=new Map;peekedPos=-1;peekedToken=null;peekedEnd=0;src;keepComments;constructor(e,t=!0){this.src=e,this.keepComments=t,this.stream=new pc(e)}position(){return this.stream.position()}reset(e){this.stream.reset(e)}commentRuns(){return[...this.triviaByPos.entries()].sort((e,t)=>e[0]-t[0]).map(([,e])=>e)}nextToken(){if(this.peekedPos===this.stream.position())return this.stream.reset(this.peekedEnd),this.peekedToken;let e;for(;;){const t=this.stream.nextToken();if(t===null)return e!==void 0&&this.triviaByPos.set(this.src.length,e),null;const n=t.kind;if(n!=="blankspaces")if(n==="commentStart")this.keepComments?(e??=[],e.push(this.consumeComment(t))):this.skipComment(t);else if(n==="invalid"){const{start:r,end:s}=t;throw new $("Invalid token "+t.text,[r,s])}else{e!==void 0&&this.triviaByPos.set(t.start,e);const r=t;return n==="word"&&us.has(t.text)&&(r.kind="keyword"),r}}}skipComment(e){const t=this.commentEnd(e);return this.stream.reset(t),t}consumeComment(e){const t=e.text==="//"?"line":"block",{start:n}=e;return{style:t,start:n,end:this.skipComment(e)}}peek(){const e=this.stream.position();if(this.peekedPos===e)return this.peekedToken;const t=this.nextToken();return this.peekedEnd=this.stream.position(),this.peekedToken=t,this.peekedPos=e,this.stream.reset(e),t}matchText(e){const t=this.peek();return t?.text===e?(this.nextToken(),t):null}matchKind(e,t){const n=this.peek();return n?.kind===e&&(!t||n.text===t)?(this.nextToken(),n):null}nextIf(e){const t=this.peek();return t&&e(t)?(this.nextToken(),t):null}matchSequence(...e){const t=this.position(),n=[];for(const r of e){const s=this.matchText(r);if(!s)return this.reset(t),null;n.push(s)}return n}commentEnd(e){return e.text==="//"?this.lineCommentEnd(e.end):this.skipBlockComment(e.end)}lineCommentEnd(e){this.eolOrNullPattern.lastIndex=e;const t=this.eolOrNullPattern.exec(this.src);if(t===null)return this.src.length;if(t[0]==="\0")throw hs(t.index);return t.index}skipBlockComment(e){let t=e;for(;;){this.blockCommentPattern.lastIndex=t;const n=this.blockCommentPattern.exec(this.src);if(n===null)throw new $("Unclosed block comment!",[t,t]);if(n[0]==="*/")return this.blockCommentPattern.lastIndex;if(n[0]==="/*")t=this.skipBlockComment(this.blockCommentPattern.lastIndex);else throw n[0]==="\0"?hs(n.index):new Error("Unreachable, invalid block comment pattern")}}nextTemplateStartToken(){const e=this.stream.position(),t=this.peek();return t===null||t.kind!=="symbol"||t.text!=="<"?null:this.isTemplateStart(t.end)?(this.stream.reset(t.end),t):(this.stream.reset(e),null)}nextTemplateEndToken(){const e=this.peek();if(e===null||e.kind!=="symbol"||e.text[0]!==">")return null;if(e.text===">")return this.stream.reset(e.end),e;const{start:t}=e;return this.stream.reset(t+1),{kind:"symbol",text:">",start:t,end:t+1}}nextRawSymbol(){for(;;){const e=this.stream.nextToken();if(e===null)return null;if(e.kind==="commentStart")this.stream.reset(this.commentEnd(e));else if(e.kind==="symbol")return e}}isTemplateStart(e){this.stream.reset(e);let t=1;for(;;){const n=this.nextRawSymbol();if(n===null)return!1;if(n.text==="<")t+=1;else if(n.text[0]===">"){if(n.text===">"||n.text===">=")t-=1;else if(n.text===">>="||n.text===">>")t-=2;else throw new Error("This case should never be reached, looks like we forgot one of the tokens that start with >");if(t<=0)return!0}else if(n.text==="(")this.skipBracketsTo(")");else if(n.text==="[")this.skipBracketsTo("]");else if(n.text==="=="||n.text==="!="||n.text===";"||n.text==="{"||n.text===":"||n.text==="&&"||n.text==="||")return!1}}skipBracketsTo(e){for(;;){const t=this.nextRawSymbol();if(t===null){const n=this.stream.position();throw new $("Unclosed bracket!",[n,n])}if(t.text==="(")this.skipBracketsTo(")");else if(t.text==="[")this.skipBracketsTo("]");else if(t.text===e)return}}};function hs(e){return new $("Invalid token \\0",[e,e+1])}function hc(e,t){const{ctx:n,state:r}=gc(e,t);try{Ku(n);const{moduleElem:s,diagnostics:i}=r.stable;return gs(t)&&Jo(n,s),i.push(...Gu(s)),r.stable}catch(s){const i=s instanceof Error?s.message:String(s),o=s instanceof $?s:new $(i,[0,0]);throw new Jt({cause:o,src:e,diagnostics:[...r.stable.diagnostics,ye(o.message,...o.span)]})}}function gc(e,t){const n=new ms(e.src,gs(t)),r=bt(null),s={kind:"module",decls:[],start:0,end:e.src.length},i={context:{scope:r},stable:{srcModule:e,moduleElem:s,rootScope:r,imports:[],parseOptions:t,diagnostics:[]}};return{ctx:new _u(n,i,t),state:i}}function gs(e){return e?.keepComments!==!1}var Jt=class extends Error{span;src;diagnostics;constructor(e){const{cause:t,src:n}=e,r=e.diagnostics??[ye(t.message,...t.span)],s=r.map(i=>gr(i,n)).join(`
`);super(s,{cause:t}),this.span=t.span,this.src=n,this.diagnostics=r}};function Be(e,t){return hc(e,t)}function Yt(e){const t=hr(e.diagnostics);if(!t)return;const n=new $(t.message,[t.start,t.end]),{srcModule:r,diagnostics:s}=e;throw new Jt({cause:n,src:r,diagnostics:s})}function Qe(e,t){return Ht(In(e,t))}function et(e){return Ht(e.contents)}function kc(e,t,n){return Qe(e,n).find(r=>r.originalName===t)}function Zt(e,t){const{rootDecls:n}=t.bindings,r=n.get(e);if(r)return r;const s=t.discoveryMode?et(e):Qe(e,t.conditions);return n.set(e,s),s}function Ht(e){return[...e].flatMap(t=>{const{kind:n}=t;return n==="decl"?[t]:n==="partial"?Ht(t.contents):[]})}function bc(e,t){const{unbound:n}=t,r=vc(e.ast,t),s=e.originalName.split("::"),i=yc(s,r)??Tc(s);if(!i){n&&!xt(e.originalName)&&ks(n,s,e);return}const o=wc(i,e.ast.srcModule,t);if("decl"in o)return o;if(n)return ks(n,i,e),"unbound";An(e,Sc(o,i))}function vc(e,t){const n=t.bindings.flatImports.get(e);if(n)return n;const r=vt(e.moduleElem,"import"),s=(t.discoveryMode?r:D(r,t.conditions)).flatMap(i=>Oo(i.imports));return t.bindings.flatImports.set(e,s),s}function yc(e,t){const n=t.find(r=>r.importPath.at(-1)===e[0]);if(n)return[...n.modulePath,...e.slice(1)]}function Tc(e){if(e.length>1)return e}function ks(e,t,n){const{srcModule:r,start:s,end:i}=n.refIdentElem;e.push({path:t,srcModule:r,start:s,end:i})}function wc(e,t,n){const r=Rt(e,t.modulePath.split("::")).slice(0,-1).join("::"),s=n.resolver.resolveModule(r);if(!s)return{missing:"module",modulePath:r};n.lenient||Yt(s);const i=lt(e),o=Zt(s.rootScope,n).find(a=>a.originalName===i);return o?{decl:o,moduleAst:s}:{missing:"export",modulePath:r}}function Sc(e,t){const{missing:n,modulePath:r}=e;return n==="module"?`module not found for '${t.join("::")}'`:`no exported '${lt(t)}' in module '${r}'`}function tt(e=null){return{decls:new Map,parent:e}}function nt(e){return{decls:new Map(e.map(t=>[t.originalName,t])),parent:null}}function bs(e){const{decls:t,parent:n}=e;return`decls: { ${Array.from(t.entries()).map(([r,s])=>`${r}:${ve(s)}`).join(", ")} }, parent: ${n?bs(n):"null"}`}function Ec(e,t){const{modulePath:n}=t;return[...n.split("::"),e.originalName].map(r=>{const s=(r.match(/_/g)??[]).length;return s>0?"_"+s+r:r}).join("_")}function xc(e,t){function n(r){return[...r].length}return"_"+[...t.modulePath.split("::"),e.originalName].map(r=>n(r)+r).join("")}function Qt(e,t,n,r){return vs(n,r)}function vs(e,t){let n=e,r=0;for(;t.has(n);)n=e+r++;return n}function en(e,t){return t.refersTo.get(e)??"unbound"}function ie(e,t){const n=t.refersTo.get(e);return n==="std"?void 0:n}function ys(e,t){return e.isGlobal?t.mangled.get(e):e.originalName}function Nc(e,t,n){const{addedAttributes:r}=e,s=r.get(t);r.set(t,s?[...s,...n]:n)}function tn(){return{refersTo:new Map,mangled:new Map,rootDecls:new Map,rootLive:new Map,flatImports:new Map,addedAttributes:new Map,expressionTypes:new Map,declTypes:new Map,visitingDecls:new Set,visitingConsts:new Set,checkedTypes:new Map}}function nn(e){const{rootAst:t,resolver:n,accumulateUnbound:r,discoveryMode:s}=e,{conditions:i={},mangler:o=Qt,lenient:a}=e;a||Yt(t);const u=tn(),{rootScope:l}=t,c=s?et(l):Qe(l,i),{globalNames:g,knownDecls:y}=Mc(c,u),T={resolver:n,conditions:i,bindings:u,knownDecls:y,mangler:o,foundScopes:new Set,globalNames:g,globalStatements:new Map,statementModules:new Set,unbound:r?[]:void 0,lenient:a,discoveryMode:s},M=nt(c);u.rootDecls.set(l,c),u.rootLive.set(l,M);const F=c.flatMap(Mi=>Ts(Mi,T)),Ni=Te(l,T,M);return{bindings:u,decls:[...F,...Ni],globalNames:g,newStatements:[...T.globalStatements.values()],unbound:T.unbound}}function Te(e,t,n){const{dontFollowDecls:r,foundScopes:s}=t;if(s.has(e))return[];s.add(e);const{newGlobals:i,newFromChildren:o}=$c(e,t,n),a=r?[]:Bc(i,t);return i.push(...o,...a),i}function Mc(e,t){for(const r of e)t.mangled.set(r,r.originalName);const n=new Set(e);return{globalNames:new Set(e.map(r=>r.originalName)),knownDecls:n}}function Ts(e,t){const{dependentScope:n}=e;return n?Te(n,t,tt(Cc(e,t))):[]}function $c(e,t,n){const r=[],s=[],i=t.discoveryMode?e.contents:In(e,t.conditions);for(const o of i)if(o.kind==="decl")n.decls.set(o.originalName,o);else if(o.kind==="ref"){const a=Ac(o,n,t);a&&r.push(a)}else{const a=o.kind==="scope"?tt(n):n;s.push(...Te(o,t,a))}return{newGlobals:r,newFromChildren:s}}function Bc(e,t){const n=[];for(const r of e){const s=Ts(r,t);s.length&&n.push(...s)}return n}function Cc(e,t){z(e.isGlobal,ve(e));let n=e.containingScope;for(;n.parent;)n=n.parent;z(n.kind==="scope");const{rootLive:r}=t.bindings,s=r.get(n);if(s)return s;const i=nt(Zt(n,t));return r.set(n,i),i}function Ac(e,t,n){const{bindings:r}=n;if(r.refersTo.has(e)||e.conditionRef||e.attrParam&&!Et.has(e.attrParam))return;const s=ws(e,t)??bc(e,n);if(s!=="unbound"){if(s)return r.refersTo.set(e,s.decl),Ic(e,s,n);if(xt(e.originalName)){r.refersTo.set(e,"std");return}n.unbound||An(e,`unresolved identifier '${e.originalName}'`)}}function ws(e,t){const n=t.decls.get(e.originalName);if(n)return{decl:n,moduleAst:e.ast};if(t.parent)return ws(e,t.parent)}function Ic(e,t,n){const{decl:r,moduleAst:s}=t,{knownDecls:i,globalStatements:o,statementModules:a}=n;if(!i.has(r)&&(i.add(r),Pc(e.originalName,r,n),!!r.isGlobal)){if(!a.has(s)){a.add(s);for(const u of _c(s,n.conditions))o.set(u,{srcModule:r.srcModule,elem:u})}return r}}function Pc(e,t,n){const{bindings:r,globalNames:s,mangler:i}=n;if(!t.isGlobal){s.add(t.originalName);return}if(r.mangled.has(t))return;const o=e.lastIndexOf("::"),a=o===-1?e:e.slice(o+2),u=i(t,t.srcModule,a,s);r.mangled.set(t,u),s.add(u)}function _c(e,t){const{moduleAsserts:n,moduleDirectives:r,moduleElem:s}=e;if(!n?.length&&!r?.length)return[];const i=new Set(n);for(const o of r??[])i.add(o);return D(s.decls,t).filter(o=>i.has(o))}function Ss(e,t){if(Object.keys(e).length!==0)return new Es(e,t)}var Es=class{constants;packageName;ast;constructor(e,t="package"){this.constants=e,this.packageName=t}resolveModule(e){if(e!=="constants")return;if(this.ast)return this.ast;const t=Object.entries(this.constants).map(([n,r])=>`const ${n} = ${r};`).join(`
`);return this.ast=Be({modulePath:`${this.packageName}::constants`,debugFilePath:"constants",src:t}),this.ast}};function xs(e){const t=e.split("/").filter(r=>r!=="."),n=[];return t.forEach(r=>{r!==""&&(r===".."&&n.length&&n[n.length-1]!==".."?n.pop():n.push(r))}),n.join("/")}function Ns(e){const t=e.lastIndexOf("/"),n=t===-1?0:t+1,r=e.indexOf(".",n),s=r===-1?e.length:r;return e.slice(0,s)}const Fc=/^lib\.w[eg]sl$/i;var Ms=class{astCache=new Map;sources;packageName;debugWeslRoot;weslExtensions;keepComments;constructor(e,t={}){const{packageName:n="package",debugWeslRoot:r,weslExtensions:s}=t;this.sources=e,this.packageName=n,this.debugWeslRoot=Lt(r),this.weslExtensions=s,this.keepComments=t.keepComments}resolveModule(e){const t=this.astCache.get(e);if(t)return t;const n=this.findSource(e);if(n===void 0)return;const r=Be({modulePath:e,debugFilePath:this.modulePathToDebugPath(e),src:n},{weslExtensions:this.weslExtensions,keepComments:this.keepComments});return this.astCache.set(e,r),r}findSource(e){if(this.sources[e]!==void 0)return this.sources[e];const t=this.moduleToFilePath(e);if(t!==void 0)return sn(this.sources,t)}moduleToFilePath(e){return Dt(e,this.packageName)}modulePathToDebugPath(e){const t=this.moduleToFilePath(e)??e;return this.debugWeslRoot+t+".wesl"}allModules(){for(const e of Object.keys(this.sources)){const t=this.packageName!=="package",n=rn(e,this.packageName,t);this.resolveModule(n)}return this.astCache.entries()}},$s=class{resolvers;constructor(e){this.resolvers=e}resolveModule(e){for(const t of this.resolvers){const n=t.resolveModule(e);if(n)return n}}},Bs=class{astCache=new Map;sources;packageName;debugWeslRoot;keepComments;constructor(e,t,n){this.sources=e.modules,this.packageName=e.name,this.debugWeslRoot=Lt(t),this.keepComments=n}resolveModule(e){const t=this.packageName+"::";if(e!==this.packageName&&!e.startsWith(t))return;const n=this.astCache.get(e);if(n)return n;const r=this.findSource(e);if(!r)return;const s=Be({modulePath:e,debugFilePath:this.modulePathToDebugPath(e),src:r},{keepComments:this.keepComments});return this.astCache.set(e,s),s}findSource(e){const t=this.moduleToFilePath(e);if(e===this.packageName){const n=sn(this.sources,"lib",["wesl","wgsl"]);if(n)return n}return sn(this.sources,t)}moduleToFilePath(e){return Dt(e,this.packageName)??e}modulePathToDebugPath(e){const t=this.moduleToFilePath(e);return this.debugWeslRoot+this.packageName+"/"+t+".wesl"}};function Cs(...e){const t=e.filter(n=>n!==void 0);if(t.length===0)throw new Error("no resolvers provided");return t.length===1?t[0]:new $s(t)}function As(e,t,n){return Dc(e).map(r=>new Bs(r,t,n))}function rn(e,t,n){if(e.includes("::"))return e;if(n&&Fc.test(e))return t;const r=Ns(xs(e)).replaceAll("/","::");return t+"::"+r}function sn(e,t,n=["wesl","wgsl"]){for(const r of["","./"]){const s=r+t;if(e[s]!==void 0)return e[s];for(const i of n){const o=`${s}.${i}`;if(e[o]!==void 0)return e[o]}}}function Dc(e){const t=[],n=new Set;function r(s){n.has(s)||(n.add(s),t.push(s),s.dependencies?.forEach(r))}return e.forEach(r),t}function Rc(e){return Is(e).map(t=>t.path)}function Is(e){const t=[],n={resolver:e,conditions:{},bindings:tn(),knownDecls:new Set,foundScopes:new Set,globalNames:new Set,globalStatements:new Map,statementModules:new Set,mangler:Qt,unbound:t,lenient:!0,dontFollowDecls:!0,discoveryMode:!0};for(const[,r]of e.allModules()){const s=et(r.rootScope),i=nt(s);for(const o of ft(s,a=>a.dependentScope))Te(o,n,tt(i));Te(r.rootScope,n,i)}return t}var Ps=class{visited=new Set;#e;constructor(e){this.#e=e}resolveModule(e){const t=this.#e.resolveModule(e);return t&&this.visited.add(e),t}};function Lc(e,t,n,r="package"){const s=new Ps(t),i=s.resolveModule(n);if(!i)throw new Error(`root module not found: '${n}'`);const o=nn({rootAst:i,resolver:s,accumulateUnbound:!0,lenient:!0,discoveryMode:!0}),a=new Map(Object.keys(e).map(c=>[rn(c,r,!1),c])),u=[...s.visited].map(c=>a.get(c)).filter(c=>c!==void 0).map(c=>[c,e[c]]),l=(o.unbound??[]).map(c=>c.path);return{weslSrc:Object.fromEntries(u),unbound:l}}function Oc(e){return e.replace(/^@/,"").replaceAll("/","__").replaceAll("-","_")}const Vc=new RegExp(`^(?:${fs.source})$`,"u");function zc(e){return Vc.test(e)&&!us.has(e)}function*Wc(e){const[t,n]=jc(e,"/");let r=t,s="";if(t.includes("__")){const[i,...o]=t.split("__");r=o.join("__"),s=`@${i}/`}yield`${s}${r}${n}`,yield`${s}${r.replaceAll("_","-")}${n}`}function jc(e,t){const n=e.indexOf(t);return n===-1?[e,""]:[e.slice(0,n),e.slice(n)]}var on=class{sourceMap;constructor(e){this.sourceMap=e}get dest(){return this.sourceMap.dest.text}};const qc=["enable","requires"];function Uc(e,t,n){if(!t.length)return[];const r=D(e.decls,n),s=[];for(const i of qc){const o=Gc(Xc(t,i),Kc(r,i));if(o.length){const a=o.map(u=>u.extension);s.push(Jc(i,a,o[0].source))}}return s}function Xc(e,t){return e.filter(n=>_s(n.elem,t))}function Kc(e,t){const n=e.filter(r=>_s(r,t)).flatMap(r=>r.directive.extensions);return new Set(n.map(r=>r.name))}function Gc(e,t){const n=new Set(t),r=[];for(const s of e)for(const i of s.elem.directive.extensions)n.has(i.name)||(n.add(i.name),r.push({extension:i,source:s}));return r}function Jc(e,t,n){const{start:r,end:s}=n.elem,i={kind:"directive",directive:{kind:e,extensions:t},start:r,end:s};return{srcModule:n.srcModule,elem:i}}function _s(e,t){return e.kind==="directive"&&e.directive.kind===t}var Fs=class{dest;#e;#t;constructor(e,t=[]){this.dest=e,this.#e=t}destToSrc(e){const{destStarts:t,destEnds:n,srcStarts:r,srcs:s}=this.#n(),i=n.length-1;let o=Yc(n,e);if(o>i&&i>=0&&e===n[i]&&(o=i),o>i||t[o]>e)return{src:this.dest,position:e};const a=r[o]+e-t[o];return{src:s[o],position:a}}_destToSrcEnd(e,t){const n=this.destToSrc(t-1);return n.src.path===e.src.path&&n.src.text===e.src.text?n.position+1:void 0}#n(){if(this.#t)return this.#t;const e={destStarts:[],destEnds:[],srcStarts:[],srcs:[]};let t=0;for(const n of this.#e)t=n._appendIndex(e,t);return this.#e=[],this.#t=e,e}},an=class{#e;#t=[];#n=0;#r=0;#s=[];#i;#o;constructor(e,t=!0){this.#e=e,this.#o=t}add(e,t){this.#n+=e.length,this.#t.push(e),this.#r=t+e.length,this.#o&&this.#s.push(t)}appendNext(e){this.add(e,this.#r)}addSynthetic(e,t,n){this.#i??=new Map,this.#i.set(this.#t.length,t);const r=this.#r;this.add(e,n),this.#r=r}addNl(){this.appendNext(`
`)}static build(e){return new Fs({text:e.map(t=>t.#t.join("")).join("")},e)}_appendIndex(e,t){if(!this.#o)return t+this.#n;const n=this.#t,r=this.#s,s=this.#e;let i=t;for(let o=0;o<n.length;o++){const a=i+n[o].length,u=this.#i?.get(o);e.destStarts.push(i),e.destEnds.push(a),e.srcStarts.push(r[o]),e.srcs.push(u===void 0?s:{text:u}),i=a}return i}};function Yc(e,t){let n=0,r=e.length;for(;n<r;){const s=n+r>>1;e[s]<=t?n=s+1:r=s}return n}function Ds(e,t,n){if(Object.keys(e).length!==0)return new Rs(e,t,n)}var Rs=class{astCache=new Map;libs;ctx;keepComments;constructor(e,t,n){this.libs=e,this.ctx=t,this.keepComments=n}resolveModule(e){const t=this.astCache.get(e);if(t)return t;const n=this.libs[e];if(!n)return;const r=Be({modulePath:`${this.ctx.packageName}::${e}`,debugFilePath:e,src:n(this.ctx)},{keepComments:this.keepComments});return this.astCache.set(e,r),r}};const Ls="main";async function Zc(e){return new on(Os(e))}async function Hc(e){return new on(un(e))}function Os(e){const{weslSrc:t,libs:n=[],packageName:r,debugWeslRoot:s,resolver:i}=e,{weslExtensions:o,virtualLibs:a,constants:u,conditions:l={}}=e,{rootModuleName:c="main",keepComments:g}=e;if(!i&&!t)throw new Error("Either resolver or weslSrc must be provided");const y=i??new Ms(t,{packageName:r,debugWeslRoot:s,weslExtensions:o,keepComments:g}),T=cn(c),M=T.split("::")[0],F=Cs(y,...As(n,s,g),u&&Ss(u,M),a&&Ds(a,{conditions:l,rootModulePath:T,packageName:M},g));return un({...e,resolver:F})}function un(e){const{transformedAst:t,newDecls:n,newStatements:r}=Vs(e),s=Qc(t.moduleElem,t.srcModule,n,r,t.bindings,e.conditions,e.sourceMap!==!1);return an.build(s)}function Vs(e){const{resolver:t,mangler:n,config:r}=e,{rootModuleName:s=Ls,conditions:i={}}=e,o=el(t,cn(s),s),{bindings:a,globalNames:u,decls:l,newStatements:c}=nn({rootAst:o,resolver:t,conditions:i,mangler:n});return{transformedAst:tl(o,a,u,r),newDecls:l,newStatements:c}}function cn(e){return e.includes("::")?e:e.includes("/")||pr(e)?"package::"+e.replace(Ft,"").replace(/^\.\//,"").replaceAll("/","::"):"package::"+e}function Qc(e,t,n,r,s,i={},o=!0){const[a,u]=En(r,F=>F.elem.kind==="directive"),l=Uc(e,a,i),c=F=>zs(F.srcModule,F.elem,i,s,{addNl:!0,skipConditionalFiltering:!0,sourceMap:o}),g=l.map(c),y=u.map(c),T=Ws(t,o);Kn({srcBuilder:T,rootElems:[e],conditions:i,bindings:s,extracting:!1});const M=n.map(F=>zs(F.srcModule,F.declElem,i,s,{skipConditionalFiltering:!0,sourceMap:o}));return[...g,T,...y,...M]}function el(e,t,n){const r=e.resolveModule(t);if(!r)throw console.log(`root module not found: ${t} (from ${n})`),new Error(`Root module not found: ${n}`);return r}function tl(e,t,n,r){const{moduleElem:s,srcModule:i}=e,o={moduleElem:s,srcModule:i,bindings:t,globalNames:n};return ft(r?.plugins??[],a=>a.transform).reduce((a,u)=>u(a),o)}function zs(e,t,n,r,s={}){const i=Ws(e,s.sourceMap!==!1);return Kn({srcBuilder:i,rootElems:[t],conditions:n,bindings:r,skipConditionalFiltering:s.skipConditionalFiltering}),s.addNl&&i.addNl(),i}function Ws(e,t=!0){return new an({text:e.src,path:e.debugFilePath},t)}const N={kind:"scalar",scalar:"bool"},S={kind:"scalar",scalar:"i32"},w={kind:"scalar",scalar:"u32"},v={kind:"scalar",scalar:"f32"},R={kind:"scalar",scalar:"f16"},L={kind:"scalar",scalar:"abstract-int"},U={kind:"scalar",scalar:"abstract-float"},Ce={kind:"void"},d={kind:"unknown"},nl={bool:N,i32:S,u32:w,f32:v,f16:R,"abstract-int":L,"abstract-float":U};function we(e){return nl[e]}function h(e,t){return{kind:"vector",size:e,elem:t}}function Se(e,t,n){return{kind:"matrix",cols:e,rows:t,elem:n}}function Ae(e,t){return t===void 0?{kind:"array",elem:e}:{kind:"array",elem:e,count:t}}function rl(e){return e.kind==="scalar"&&e.scalar!=="bool"}function js(e){if(e.kind!=="scalar")return!1;const{scalar:t}=e;return t==="i32"||t==="u32"||t==="abstract-int"}function qs(e){if(e.kind!=="scalar")return!1;const{scalar:t}=e;return t==="f32"||t==="f16"||t==="abstract-float"}function ee(e){if(e.kind==="scalar")return e;if(e.kind==="vector"||e.kind==="matrix")return e.elem}function te(e,t){if(e===t)return!0;if(e.kind!==t.kind)return!1;switch(e.kind){case"scalar":return e.scalar===t.scalar;case"vector":{const n=t;return e.size===n.size&&te(e.elem,n.elem)}case"matrix":{const n=t;return e.cols===n.cols&&e.rows===n.rows&&te(e.elem,n.elem)}case"array":{const n=t;return e.count===n.count&&te(e.elem,n.elem)}case"struct":{const n=t;return e.structElem===n.structElem&&e.name===n.name}case"atomic":return te(e.elem,t.elem);case"ptr":{const n=t;return e.space===n.space&&e.access===n.access&&te(e.elem,n.elem)}case"texture":{const n=t;return e.name===n.name&&e.sampled?.scalar===n.sampled?.scalar&&e.format===n.format&&e.access===n.access}case"sampler":return e.comparison===t.comparison;case"void":case"unknown":return!0}}function fe(e){switch(e.kind){case"scalar":return e.scalar;case"vector":return`vec${e.size}<${fe(e.elem)}>`;case"matrix":return`mat${e.cols}x${e.rows}<${fe(e.elem)}>`;case"array":{const t=e.count===void 0?"":`, ${e.count}`;return`array<${fe(e.elem)}${t}>`}case"struct":return e.name;case"atomic":return`atomic<${fe(e.elem)}>`;case"ptr":{const t=e.access?`, ${e.access}`:"";return`ptr<${e.space}, ${fe(e.elem)}${t}>`}case"texture":{const t=[e.format,e.access,e.sampled&&fe(e.sampled)].filter(n=>n!==void 0).join(", ");return t?`${e.name}<${t}>`:e.name}case"sampler":return e.comparison?"sampler_comparison":"sampler";case"void":return"void";case"unknown":return"unknown"}}const sl={f32:1,f16:2},il={i32:3,u32:4,"abstract-float":5,f32:6,f16:7};function X(e,t){if(e.kind==="unknown"||t.kind==="unknown")return 0;if(e.kind==="scalar"&&t.kind==="scalar")return ln(e,t);if(e.kind===t.kind)return e.kind==="vector"&&t.kind==="vector"?e.size!==t.size?void 0:ln(e.elem,t.elem):e.kind==="matrix"&&t.kind==="matrix"?e.cols!==t.cols||e.rows!==t.rows?void 0:ln(e.elem,t.elem):e.kind==="array"&&t.kind==="array"?e.count!==t.count?void 0:X(e.elem,t.elem):e.kind==="struct"&&t.kind==="struct"?te(e,t)?0:e.structElem||t.structElem?void 0:ol(e,t):te(e,t)?0:void 0}function Us(e,t){return X(e,t)!==void 0}function de(e){switch(e.kind){case"scalar":return e.scalar==="abstract-int"||e.scalar==="abstract-float";case"vector":case"matrix":case"atomic":case"array":return de(e.elem);case"struct":return e.members.some(t=>de(t.type));default:return!1}}function rt(e){switch(e.kind){case"scalar":return fn(e);case"vector":return de(e.elem)?h(e.size,fn(e.elem)):e;case"matrix":return de(e.elem)?Se(e.cols,e.rows,fn(e.elem)):e;case"array":return de(e.elem)?Ae(rt(e.elem),e.count):e;case"struct":return de(e)?al(e):e;default:return e}}function _(e,t){if(e.kind==="unknown")return t;if(t.kind==="unknown")return e;const n=X(e,t),r=X(t,e);if(n!==void 0&&r!==void 0)return n<=r?t:e;if(n!==void 0)return t;if(r!==void 0)return e}function ol(e,t){if(e.members.length!==t.members.length)return;const n=e.members.map((r,s)=>r.name===t.members[s].name?X(r.type,t.members[s].type):void 0);return n.some(r=>r===void 0)?void 0:n[0]}function al(e){const t=e.members.map(n=>({...n,type:rt(n.type)}));return{...e,name:e.name.replace(/abstract$/,"f32"),members:t}}function ln(e,t){if(e.scalar===t.scalar)return 0;if(e.scalar==="abstract-float")return sl[t.scalar];if(e.scalar==="abstract-int")return il[t.scalar]}function fn(e){return e.scalar==="abstract-int"?S:e.scalar==="abstract-float"?v:e}const ul={all:"b T -> bool",any:"b T -> bool",select:"a T T bool -> T; a V V B -> V",abs:"n T -> T",acos:"f T -> T",acosh:"f T -> T",asin:"f T -> T",asinh:"f T -> T",atan:"f T -> T",atanh:"f T -> T",atan2:"f T T -> T",ceil:"f T -> T",clamp:"n T T T -> T",cos:"f T -> T",cosh:"f T -> T",cross:"f V3 V3 -> V3",degrees:"f T -> T",distance:"f T T -> E",dot:"n V V -> E",dot4U8Packed:"- u32 u32 -> u32",dot4I8Packed:"- u32 u32 -> i32",exp:"f T -> T",exp2:"f T -> T",faceForward:"f V V V -> V",floor:"f T -> T",fma:"f T T T -> T",fract:"f T -> T",inverseSqrt:"f T -> T",ldexp:"f T Ti -> T",length:"f T -> E",log:"f T -> T",log2:"f T -> T",max:"n T T -> T",min:"n T T -> T",mix:"f T T T -> T; f V V E -> V",normalize:"f V -> V",pow:"f T T -> T",quantizeToF16:"F T -> T",radians:"f T -> T",reflect:"f V V -> V",refract:"f V V E -> V",round:"f T -> T",saturate:"f T -> T",sign:"s T -> T",sin:"f T -> T",sinh:"f T -> T",smoothstep:"f T T T -> T",sqrt:"f T -> T",step:"f T T -> T",tan:"f T -> T",tanh:"f T -> T",trunc:"f T -> T",countLeadingZeros:"I T -> T",countOneBits:"I T -> T",countTrailingZeros:"I T -> T",extractBits:"I T u32 u32 -> T",firstLeadingBit:"I T -> T",firstTrailingBit:"I T -> T",insertBits:"I T T u32 u32 -> T",reverseBits:"I T -> T",dpdx:"F T -> T",dpdxCoarse:"F T -> T",dpdxFine:"F T -> T",dpdy:"F T -> T",dpdyCoarse:"F T -> T",dpdyFine:"F T -> T",fwidth:"F T -> T",fwidthCoarse:"F T -> T",fwidthFine:"F T -> T",pack4x8snorm:"- vec4f -> u32",pack4x8unorm:"- vec4f -> u32",pack4xI8:"- vec4i -> u32",pack4xU8:"- vec4u -> u32",pack4xI8Clamp:"- vec4i -> u32",pack4xU8Clamp:"- vec4u -> u32",pack2x16snorm:"- vec2f -> u32",pack2x16unorm:"- vec2f -> u32",pack2x16float:"- vec2f -> u32",unpack4x8snorm:"- u32 -> vec4f",unpack4x8unorm:"- u32 -> vec4f",unpack4xI8:"- u32 -> vec4i",unpack4xU8:"- u32 -> vec4u",unpack2x16snorm:"- u32 -> vec2f",unpack2x16unorm:"- u32 -> vec2f",unpack2x16float:"- u32 -> vec2f",storageBarrier:"- -> void",workgroupBarrier:"- -> void",subgroupAdd:"N T -> T",subgroupExclusiveAdd:"N T -> T",subgroupInclusiveAdd:"N T -> T",subgroupMul:"N T -> T",subgroupExclusiveMul:"N T -> T",subgroupInclusiveMul:"N T -> T",subgroupMax:"N T -> T",subgroupMin:"N T -> T",subgroupAnd:"I T -> T",subgroupOr:"I T -> T",subgroupXor:"I T -> T",subgroupAll:"b bool -> bool",subgroupAny:"b bool -> bool",subgroupBallot:"b bool -> vec4u",subgroupElect:"b -> bool",subgroupBroadcast:"N T X -> T",subgroupBroadcastFirst:"N T -> T",subgroupShuffle:"N T X -> T",subgroupShuffleUp:"N T X -> T",subgroupShuffleDown:"N T X -> T",subgroupShuffleXor:"N T X -> T",quadBroadcast:"N T X -> T",quadSwapDiagonal:"N T -> T",quadSwapX:"N T -> T",quadSwapY:"N T -> T"},cl={f:[U,v,R],F:[v],n:[L,U,S,w,v,R],N:[S,w,v,R],s:[L,U,S,v,R],i:[L,S,w],I:[S,w],b:[N],a:[L,U,S,w,v,R,N],"-":[]},ll=new Set("T E V V2 V3 V4 B Ti X".split(" ")),dn={void:Ce,bool:N,i32:S,u32:w,f32:v,f16:R,vec2f:h(2,v),vec3f:h(3,v),vec4f:h(4,v),vec4i:h(4,S),vec2u:h(2,w),vec4u:h(4,w)};function fl(e){const[t,n]=e.split("->").map(o=>o.trim()),[r,...s]=t.split(/\s+/),i=cl[r];if(!i)throw new Error(`unknown element set "${r}" in: ${e}`);for(const o of[...s,n]){const a=ll.has(o);if(!a&&!(o in dn))throw new Error(`unknown token "${o}" in: ${e}`);if(a&&o!=="X"&&!i.length)throw new Error(`generic token "${o}" needs an element set: ${e}`)}if(n==="X")throw new Error(`"X" is a param-only token in: ${e}`);return{elemSet:i,params:s,ret:n}}function dl(e,t){return Xs(e.map(n=>pl(n,t)).filter(n=>n!==void 0))?.ret}function pl(e,t){const{elemSet:n,params:r,ret:s}=e;if(r.length!==t.length)return;const i=ml(r,t);if(i===void 0)return;const o=Xs((n.length?n:[void 0]).flatMap(l=>{const c=hl(r,t,l,i);return c===void 0?[]:[{elem:l,rank:c}]}));if(!o)return;const{elem:a,rank:u}=o;return{rank:u,ret:Ks(s,a,i)??d}}function Xs(e){return e.reduce((t,n)=>!t||n.rank<t.rank?n:t,void 0)}function ml(e,t){for(let n=0;n<e.length;n++){const r=e[n],s=t[n];if(r==="T"||r==="B"||r==="Ti")return s.kind==="scalar"?1:s.kind==="vector"?s.size:void 0;if(r==="V")return s.kind==="vector"?s.size:void 0}return 1}function hl(e,t,n,r){let s=0;for(let i=0;i<e.length;i++){const o=t[i];if(e[i]==="X"){if(!js(o))return;continue}const a=Ks(e[i],n,r);if(!a)return;const u=X(o,a);if(u===void 0)return;s+=u}return s}function Ks(e,t,n){if(!t)return dn[e];switch(e){case"T":return n===1?t:h(n,t);case"E":return t;case"V":return n===1?void 0:h(n,t);case"V2":return h(2,t);case"V3":return h(3,t);case"V4":return h(4,t);case"B":return n===1?N:h(n,N);case"Ti":{const r=t.scalar.startsWith("abstract")?L:S;return n===1?r:h(n,r)}default:return dn[e]}}function gl(e,t){const n=t.find(s=>s.kind==="texture"),r=n?.name.startsWith("texture_depth")??!1;switch(e){case"textureDimensions":return n?kl(n):d;case"textureNumLayers":case"textureNumLevels":case"textureNumSamples":return w;case"textureLoad":return n?r?v:h(4,bl(n)):d;case"textureGather":return n?h(4,r?v:n.sampled??v):d;case"textureGatherCompare":return h(4,v);case"textureSample":case"textureSampleLevel":return n?r?v:h(4,v):d;case"textureSampleBias":case"textureSampleGrad":case"textureSampleBaseClampToEdge":return h(4,v);case"textureSampleCompare":case"textureSampleCompareLevel":return v;case"textureStore":case"textureBarrier":return Ce;default:return d}}function kl(e){const{name:t}=e;return t.endsWith("_1d")?w:t.endsWith("_3d")?h(3,w):h(2,w)}function bl(e){if(e.sampled)return e.sampled;const t=e.format??"";return t.endsWith("uint")?w:t.endsWith("sint")?S:v}let Gs;const vl={f32:S,f16:S,"abstract-float":L},yl={f32:"f32",f16:"f16","abstract-float":"abstract"},Tl=new Set(["atomicStore","atomicStoreMin","atomicStoreMax"]);function pn(e,t){const n=wl(e,t);if(n)return n;const r=Sl().get(e);return!r||t.some(s=>s.kind==="unknown")?d:dl(r,t)??d}function wl(e,t){if(e.startsWith("atomic"))return El(e,t);if(e.startsWith("texture"))return gl(e,t);if(e==="arrayLength")return w;if(e==="determinant"){const[n]=t;return n?.kind==="matrix"?n.elem:d}if(e==="transpose"){const[n]=t;return n?.kind==="matrix"?Se(n.rows,n.cols,n.elem):d}if(e==="workgroupUniformLoad"){const[n]=t;return n?.kind==="ptr"?n.elem:d}if(e==="frexp"||e==="modf")return xl(e,t[0])}function Sl(){return Gs??=new Map(Object.entries(ul).map(([e,t])=>[e,t.split(";").map(fl)])),Gs}function El(e,t){if(Tl.has(e))return Ce;const[n]=t;if(n?.kind!=="ptr"||n.elem.kind!=="atomic")return d;const r=n.elem.elem;return e!=="atomicCompareExchangeWeak"?r:Nl(r)}function xl(e,t){const n=t&&ee(t);if(!t||!n||t.kind!=="scalar"&&t.kind!=="vector")return d;const r=n.scalar==="abstract-int"?U:n;if(!qs(r))return d;const s=Js(t,r),i=t.kind==="vector"?`vec${t.size}_`:"",o=e==="modf"?{name:"whole",type:s}:{name:"exp",type:Js(t,vl[r.scalar])};return{kind:"struct",name:`__${e}_result_${i}${yl[r.scalar]}`,members:[{name:"fract",type:s},o]}}function Nl(e){return{kind:"struct",name:`__atomic_compare_exchange_result<${e.scalar}>`,members:[{name:"old_value",type:e},{name:"exchanged",type:N}]}}function Js(e,t){return t?e.kind==="vector"?h(e.size,t):t:d}const Ml=-(2n**63n),$l=2n**63n-1n,Bl=65536,Ys=-2147483648,Cl=BigInt(Ys),Zs=2147483647,Hs=4294967295,Qs=BigInt(Zs),ei=BigInt(Hs),Al=2147483520,Il=4294967040,ti=new DataView(new ArrayBuffer(4)),Pl=23,_l=127,Fl=10,Dl=-14,Rl=65504;function m(e,t){return{kind:"scalar",type:e,value:t}}function E(e){return m(N,e)}function pe(e){return e<Ml||e>$l?null:e}function Ie(e){if(!(e.kind!=="scalar"||typeof e.value=="boolean"))return Number(e.value)}function Ll(e){if(e==="true"||e==="false")return m(N,e==="true");const t=e[e.length-1],n=e[0]==="0"&&(e[1]==="x"||e[1]==="X");if(n&&/[pP.]/.test(e))return null;if(t==="i"||t==="u"){const s=BigInt(e.slice(0,-1));return s>(t==="i"?Qs:ei)?null:m(we(t==="i"?"i32":"u32"),Number(s))}if((t==="f"||t==="h")&&!n){const s=t==="f"?"f32":"f16",i=G(Number.parseFloat(e),s);return Number.isFinite(i)?m(we(s),i):null}if(n||!/[.eE]/.test(e)){const s=pe(BigInt(e));return s===null?null:m(we("abstract-int"),s)}const r=Number.parseFloat(e);return Number.isFinite(r)?m(we("abstract-float"),r):null}function K(e,t){if(te(e.type,t)||t.kind==="unknown")return e;if(X(e.type,t)===void 0)return null;if(e.kind==="scalar")return t.kind==="scalar"?Pe(e,t):null;const n=ii(t,e.elements.length);if(!n)return null;const r=[];for(let s=0;s<e.elements.length;s++){const i=K(e.elements[s],n[s]);if(!i)return null;r.push(i)}return{kind:"composite",type:t,elements:r}}function Pe(e,t){if(e.type.scalar===t.scalar)return e;const{value:n}=e;if(e.type.scalar==="abstract-int"&&typeof n=="bigint")switch(t.scalar){case"i32":return n<Cl||n>Qs?null:m(t,Number(n));case"u32":return n<0n||n>ei?null:m(t,Number(n));case"abstract-float":{const r=Number(n);return Number.isFinite(r)?m(t,r):null}case"f32":case"f16":{const r=G(Number(n),t.scalar);return Number.isFinite(r)?m(t,r):null}default:return null}if(e.type.scalar==="abstract-float"&&typeof n=="number"){if(t.scalar==="f32"||t.scalar==="f16"){const r=G(n,t.scalar);return Number.isFinite(r)?m(t,r):null}return null}return null}function mn(e,t){const{value:n}=e;switch(t.scalar){case"bool":return typeof n=="boolean"?e:E(typeof n=="bigint"?n!==0n:n!==0);case"i32":case"u32":{const r=t.scalar==="u32";if(typeof n=="boolean")return m(t,Number(n));if(typeof n=="bigint")return Pe(e,t);const s=e.type.scalar;if(s==="i32"||s==="u32")return m(t,r?n>>>0:n|0);if(Number.isNaN(n))return null;const i=s==="f32"||s==="f16",o=r?i?Il:Hs:i?Al:Zs,a=r?0:Ys;return m(t,Math.min(Math.max(Math.trunc(n),a),o))}case"f32":case"f16":{if(typeof n=="boolean")return m(t,Number(n));const r=G(Number(n),t.scalar);return Number.isFinite(r)?m(t,r):null}case"abstract-int":return typeof n=="bigint"?e:null;case"abstract-float":{if(typeof n=="boolean")return null;const r=Number(n);return Number.isFinite(r)?m(t,r):null}}}function ni(e){switch(e.kind){case"scalar":return e.scalar==="bool"?E(!1):e.scalar==="abstract-int"?m(e,0n):m(e,0);case"vector":case"matrix":case"array":case"struct":{const t=ii(e,void 0);if(!t)return null;const n=t.map(ni);return n.some(r=>!r)?null:{kind:"composite",type:e,elements:n}}default:return null}}function G(e,t){return t==="f32"?Math.fround(e):t==="f16"?ri(e):e}function st(e,t){switch(t){case"i32":return e|0;case"u32":return e>>>0;case"f32":case"f16":{const n=G(e,t);return Number.isFinite(n)?n:null}default:return Number.isFinite(e)?e:null}}function ri(e){const t=Math.fround(e);if(t===0||!Number.isFinite(t))return t;ti.setFloat32(0,t);const n=(ti.getUint32(0)>>>Pl&255)-_l,r=2**(Math.max(n,Dl)-Fl),s=si(t/r)*r;return Math.abs(s)<=Rl?s:s<0?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY}function si(e){const t=Math.floor(e);return e-t!==.5?Math.round(e):t%2===0?t:t+1}function Ol(e){const t=e.elements.map(n=>n.kind==="scalar"&&typeof n.value=="bigint"?n.value:null);return t.some(n=>n===null)?null:t}function hn(e){const t=e.elements.map(n=>n.kind==="scalar"&&typeof n.value!="boolean"?Number(n.value):null);return t.some(n=>n===null)?null:t}function ii(e,t){switch(e.kind){case"vector":return Array.from({length:e.size},()=>e.elem);case"matrix":return Array.from({length:e.cols},()=>h(e.rows,e.elem));case"array":{const n=e.count??t;return n===void 0||n>Bl?null:Array.from({length:n},()=>e.elem)}case"struct":return e.members.map(n=>n.type);default:return null}}const it=new DataView(new ArrayBuffer(8)),Vl={abs:([e])=>e<0?-e:e,min:([e,t])=>e<t?e:t,max:([e,t])=>e>t?e:t,clamp:([e,t,n])=>e<t?t:e>n?n:e,sign:([e])=>typeof e!="bigint"?Math.sign(e):e===0n?0n:e>0n?1n:-1n},zl={acos:([e])=>Math.acos(e),acosh:([e])=>Math.acosh(e),asin:([e])=>Math.asin(e),asinh:([e])=>Math.asinh(e),atan:([e])=>Math.atan(e),atanh:([e])=>Math.atanh(e),atan2:([e,t])=>Math.atan2(e,t),ceil:([e])=>Math.ceil(e),cos:([e])=>Math.cos(e),cosh:([e])=>Math.cosh(e),degrees:([e])=>e*(180/Math.PI),exp:([e])=>Math.exp(e),exp2:([e])=>2**e,floor:([e])=>Math.floor(e),fma:([e,t,n])=>e*t+n,fract:([e])=>e-Math.floor(e),inverseSqrt:([e])=>1/Math.sqrt(e),ldexp:([e,t])=>e*2**t,log:([e])=>Math.log(e),log2:([e])=>Math.log2(e),mix:([e,t,n])=>e*(1-n)+t*n,pow:([e,t])=>e**t,quantizeToF16:([e])=>ri(e),radians:([e])=>e*(Math.PI/180),round:([e])=>si(e),saturate:([e])=>Math.min(Math.max(e,0),1),sin:([e])=>Math.sin(e),sinh:([e])=>Math.sinh(e),smoothstep:([e,t,n])=>{const r=Math.min(Math.max((n-e)/(t-e),0),1);return r*r*(3-2*r)},sqrt:([e])=>Math.sqrt(e),step:([e,t])=>e<=t?1:0,tan:([e])=>Math.tan(e),tanh:([e])=>Math.tanh(e),trunc:([e])=>Math.trunc(e)},Wl={length:e=>Math.hypot(...e[0]),distance:([e,t])=>Math.hypot(...e.map((n,r)=>n-t[r])),normalize:([e])=>{const t=Math.hypot(...e);return e.map(n=>n/t)},cross:([e,t])=>[e[1]*t[2]-e[2]*t[1],e[2]*t[0]-e[0]*t[2],e[0]*t[1]-e[1]*t[0]],faceForward:([e,t,n])=>gn(t,n)<0?e:e.map(r=>-r),reflect:([e,t])=>{const n=gn(t,e);return e.map((r,s)=>r-2*n*t[s])},refract:([e,t,[n]])=>{const r=gn(t,e),s=1-n*n*(1-r*r);if(s<0)return e.map(()=>0);const i=n*r+Math.sqrt(s);return e.map((o,a)=>n*o-i*t[a])}},oi=52,ai=1023,jl=2**(1-ai),ui=ai-1;function ql(e,t){if(t.some(a=>!a))return null;const n=t,r=pn(e,n.map(a=>a.type));if(r.kind==="unknown")return null;if(e==="select")return Ul(n,r);if(e==="all"||e==="any")return Xl(e,n);if(e==="dot")return Kl(n,r);if(e==="transpose")return Gl(n[0],r);if(e==="determinant")return Jl(n[0],r);if(e==="frexp"||e==="modf")return Yl(e,n[0],r);const s=Vl[e];if(s)return Zl(n,r,s);const i=zl[e];if(i)return Hl(n,r,i);const o=Wl[e];return o?Ql(n,r,o):null}function gn(e,t){return e.reduce((n,r,s)=>n+r*t[s],0)}function Ul(e,t){const[n,r,s]=e;if(s.kind==="scalar"&&typeof s.value=="boolean")return K(s.value?r:n,t);if(s.kind==="composite"&&t.kind==="vector"){const i=K(n,t),o=K(r,t);if(i?.kind!=="composite"||o?.kind!=="composite")return null;const a=s.elements.map((u,l)=>u.kind==="scalar"&&typeof u.value=="boolean"?(u.value?o:i).elements[l]:null);return a.some(u=>!u)?null:{kind:"composite",type:t,elements:a}}return null}function Xl(e,t){const[n]=t;if(n.kind==="scalar")return typeof n.value=="boolean"?n:null;const r=n.elements.map(s=>s.kind==="scalar"&&typeof s.value=="boolean"?s.value:null);return r.some(s=>s===null)?null:E(e==="all"?r.every(s=>s):r.some(s=>s))}function Kl(e,t){if(t.kind!=="scalar")return null;const n=t.scalar;if(n==="abstract-int"){const[o,a]=e.map(u=>u.kind==="composite"?Ol(u):null);return!o||!a||o.length!==a.length?null:m(t,o.reduce((u,l,c)=>u+l*a[c],0n))}const[r,s]=e.map(o=>o.kind==="composite"?hn(o):null);if(!r||!s||r.length!==s.length)return null;if(n==="i32"||n==="u32"){const o=n==="u32";let a=0;for(let u=0;u<r.length;u++){const l=a+Math.imul(r[u],s[u]);a=o?l>>>0:l|0}return m(t,a)}let i=0;for(let o=0;o<r.length;o++){const a=st(r[o]*s[o],n);if(a===null)return null;const u=st(i+a,n);if(u===null)return null;i=u}return m(t,i)}function Gl(e,t){const n=ci(e),r=ee(t);if(!n||!r||t.kind!=="matrix")return null;const s=n[0].length,i=h(n.length,r),o=[];for(let a=0;a<s;a++)o.push({kind:"composite",type:i,elements:n.map(u=>u[a])});return{kind:"composite",type:t,elements:o}}function Jl(e,t){const n=ci(e),r=ee(t);if(!n||!r||t.kind!=="scalar"||n.length!==n[0].length)return null;const s=n[0].map((o,a)=>n.map(u=>Ie(u[a])));if(s.some(o=>o.some(a=>a===void 0)))return null;const i=G(li(s),r.scalar);return Number.isFinite(i)?m(r,i):null}function Yl(e,t,n){if(n.kind!=="struct")return null;const r=t.kind==="composite"?hn(t):[Number(t.value)];if(!r)return null;const s=e==="frexp"?ef:tf,i=r.map(s),[o,a]=n.members,u=fi(o.type,i.map(c=>c[0])),l=fi(a.type,i.map(c=>c[1]));return!u||!l?null:{kind:"composite",type:n,elements:[u,l]}}function Zl(e,t,n){const r=ee(t);return r?di(e,t,s=>{if(s.some(u=>typeof u=="boolean"))return null;const i=s;if(r.scalar==="abstract-int"){if(i.some(c=>typeof c!="bigint"))return null;const u=n(i);if(typeof u!="bigint")return null;const l=pe(u);return l===null?null:m(r,l)}const o=i.map(u=>nf(u,r));if(o.some(u=>u===null))return null;const a=st(Number(n(o)),r.scalar);return a===null?null:m(r,a)}):null}function Hl(e,t,n){const r=ee(t);return r?di(e,t,s=>{const i=G(n(s.map(Number)),r.scalar);return Number.isFinite(i)?m(r,i):null}):null}function Ql(e,t,n){const r=ee(t);if(!r)return null;const s=e.map(a=>a.kind==="composite"?hn(a):[Number(a.value)]);if(s.some(a=>a===null))return null;const i=n(s);if(typeof i=="number"){const a=G(i,r.scalar);return Number.isFinite(a)?m(r,a):null}if(t.kind!=="vector")return null;const o=i.map(a=>{const u=G(a,r.scalar);return Number.isFinite(u)?m(r,u):null});return o.some(a=>!a)?null:{kind:"composite",type:t,elements:o}}function ci(e){if(e.kind!=="composite"||e.type.kind!=="matrix")return null;const t=e.elements.map(n=>n.kind==="composite"&&n.elements.every(r=>r.kind==="scalar")&&n.elements.length>0?n.elements:null);return t.some(n=>!n)?null:t}function li(e){if(e.length===1)return e[0][0];if(e.length===2)return e[0][0]*e[1][1]-e[0][1]*e[1][0];let t=0;for(let n=0;n<e.length;n++){const r=e.slice(1).map(s=>s.filter((i,o)=>o!==n));t+=(n%2?-1:1)*e[0][n]*li(r)}return t}function ef(e){if(e===0||!Number.isFinite(e))return[e,0];const t=Math.abs(e)<jl;it.setFloat64(0,t?e*2**oi:e);const n=it.getUint16(0),r=(n>>>4&2047)-ui-(t?oi:0);return it.setUint16(0,n&32783|ui<<4),[it.getFloat64(0),r]}function tf(e){const t=Number.isFinite(e)?Math.trunc(e):e;return[e-t,t]}function fi(e,t){const n=ee(e);if(!n)return null;const r=t.map(s=>{if(n.scalar==="abstract-int")return m(n,BigInt(s));const i=st(s,n.scalar);return i===null?null:m(n,i)});return r.some(s=>!s)?null:e.kind!=="vector"?r[0]:{kind:"composite",type:e,elements:r}}function di(e,t,n){const r=t.kind==="vector"?t.size:1,s=e.map(o=>{if(o.kind==="scalar")return[o.value];const a=o.elements.map(u=>u.kind==="scalar"?u.value:null);return a.some(u=>u===null)?null:a});if(s.some(o=>o===null))return null;const i=[];for(let o=0;o<r;o++){const a=n(s.map(u=>u.length===1?u[0]:u[o]));if(!a)return null;i.push(a)}return t.kind!=="vector"?i[0]:{kind:"composite",type:t,elements:i}}function nf(e,t){if(typeof e!="bigint")return e;const n=Pe(m(we("abstract-int"),e),t);return n?Number(n.value):null}function kn(e,t){if(t.some(r=>!r))return null;const n=t;if(!n.length)return ni(e);switch(e.kind){case"scalar":return n[0].kind==="scalar"?mn(n[0],e):null;case"vector":{const r=af(n);if(!r)return null;const s=r.length===1?Array.from({length:e.size},()=>r[0]):r;if(s.length!==e.size)return null;const i=s.map(o=>mn(o,e.elem));return i.some(o=>!o)?null:{kind:"composite",type:e,elements:i}}case"matrix":return sf(e,n);case"array":{const r=n.map(s=>K(s,e.elem));return r.some(s=>!s)||(e.count??n.length)!==n.length?null:{kind:"composite",type:e,elements:r}}case"struct":{if(n.length!==e.members.length)return null;const r=n.map((s,i)=>K(s,e.members[i].type));return r.some(s=>!s)?null:{kind:"composite",type:e,elements:r}}default:return null}}function rf(e){return/^(bool|i32|u32|f32|f16|array)$/.test(e)||/^vec[234][fhiu]?$/.test(e)||/^mat[234]x[234][fh]?$/.test(e)}function sf(e,t){const n=t[0];if(t.length===1&&n.kind==="composite")return K(n,e)??of(n,e);const r=h(e.rows,e.elem);if(t.every(s=>s.kind==="scalar")){if(t.length!==e.cols*e.rows)return null;const s=[];for(let i=0;i<e.cols;i++){const o=i*e.rows,a=pi(r,t.slice(o,o+e.rows));if(!a)return null;s.push(a)}return{kind:"composite",type:e,elements:s}}if(t.length===e.cols){const s=t.map(i=>K(i,r));return s.some(i=>!i)?null:{kind:"composite",type:e,elements:s}}return null}function of(e,t){if(e.type.kind!=="matrix"||e.type.cols!==t.cols||e.type.rows!==t.rows)return null;const n=h(t.rows,t.elem),r=e.elements.map(s=>s.kind==="composite"?pi(n,s.elements):null);return r.some(s=>!s)?null:{kind:"composite",type:t,elements:r}}function pi(e,t){if(t.length!==e.size)return null;const n=t.map(r=>r.kind==="scalar"?mn(r,e.elem):null);return n.some(r=>!r)?null:{kind:"composite",type:e,elements:n}}function af(e){const t=[];for(const n of e)if(n.kind==="scalar")t.push(n);else if(n.type.kind==="vector")for(const r of n.elements){if(r.kind!=="scalar")return null;t.push(r)}else return null;return t}const mi=["==","!=","<","<=",">",">="];function hi(e){return/^([xyzw]{1,4}|[rgba]{1,4})$/.test(e)}function uf(e,t){return e==="-"?bn(t,lf):e==="~"?bn(t,ff):e==="!"?bn(t,df):null}function cf(e,t,n){return e==="&&"||e==="||"?t.kind!=="scalar"||typeof t.value!="boolean"?null:n.kind==="scalar"&&typeof n.value=="boolean"?E(n.value):null:e==="<<"||e===">>"?pf(e,t,n):gi(t,n,(r,s)=>mf(e,r,s))}function bn(e,t){if(e.kind==="scalar")return t(e);if(e.type.kind!=="vector")return null;const n=[];for(const s of e.elements){const i=s.kind==="scalar"?t(s):null;if(!i)return null;n.push(i)}const r=n[0];return r.kind!=="scalar"?null:{kind:"composite",type:h(e.type.size,r.type),elements:n}}function lf(e){const{value:t,type:n}=e;return typeof t=="boolean"?null:typeof t=="bigint"?vn(n,-t):n.scalar==="i32"?m(n,-t|0):n.scalar==="u32"?m(n,-t>>>0):m(n,-t)}function ff(e){const{value:t,type:n}=e;return typeof t=="bigint"?vn(n,~t):typeof t!="number"?null:n.scalar==="i32"?m(n,~t|0):n.scalar==="u32"?m(n,~t>>>0):null}function df(e){return typeof e.value=="boolean"?E(!e.value):null}function pf(e,t,n){return gi(t,n,(r,s)=>{const i=Ie(s);if(i===void 0||!Number.isInteger(i)||i<0)return null;const{value:o,type:a}=r;return typeof o=="bigint"?i>=64?null:vn(a,e==="<<"?o<<BigInt(i):o>>BigInt(i)):typeof o!="number"||i>=32?null:a.scalar==="i32"?m(a,e==="<<"?o<<i|0:o>>i):a.scalar==="u32"?m(a,e==="<<"?o<<i>>>0:o>>>i):null})}function gi(e,t,n){if(e.kind==="scalar"&&t.kind==="scalar")return n(e,t);const r=e.kind==="composite"&&e.type.kind==="vector",s=t.kind==="composite"&&t.type.kind==="vector";if(r&&s&&e.elements.length!==t.elements.length||!r&&!s)return null;const i=r?e.elements.length:t.elements.length,o=[];for(let a=0;a<i;a++){const u=r?e.elements[a]:e,l=s?t.elements[a]:t;if(u.kind!=="scalar"||l.kind!=="scalar")return null;const c=n(u,l);if(!c)return null;o.push(c)}return{kind:"composite",type:h(i,o[0].type),elements:o}}function mf(e,t,n){const r=hf(t,n);if(!r)return null;const[s,i,o]=r;if(mi.includes(e))return gf(e,s,i);if(typeof s.value=="boolean"||typeof i.value=="boolean")return typeof s.value!="boolean"||typeof i.value!="boolean"?null:e==="&"?E(s.value&&i.value):e==="|"?E(s.value||i.value):e==="^"?E(s.value!==i.value):null;if(typeof s.value=="bigint"&&typeof i.value=="bigint"){const a=kf(e,s.value,i.value);return a===null?null:m(o,a)}if(typeof s.value=="number"&&typeof i.value=="number"){const{scalar:a}=o,u=a==="i32"||a==="u32"?bf(e,s.value,i.value,a==="u32"):vf(e,s.value,i.value,a);return u===null?null:m(o,u)}return null}function vn(e,t){const n=pe(t);return n===null?null:m(e,n)}function hf(e,t){let n;const r=X(e.type,t.type),s=X(t.type,e.type);if(r!==void 0)n=t.type;else if(s!==void 0)n=e.type;else return null;const i=Pe(e,n),o=Pe(t,n);return i&&o?[i,o,n]:null}function gf(e,t,n){const r=t.value,s=n.value;if(typeof r=="boolean"||typeof s=="boolean")return e==="=="?E(r===s):e==="!="?E(r!==s):null;switch(e){case"==":return E(r===s);case"!=":return E(r!==s);case"<":return E(r<s);case"<=":return E(r<=s);case">":return E(r>s);case">=":return E(r>=s);default:return null}}function kf(e,t,n){switch(e){case"+":return pe(t+n);case"-":return pe(t-n);case"*":return pe(t*n);case"/":return n===0n?null:pe(t/n);case"%":return n===0n?null:t%n;case"&":return t&n;case"|":return t|n;case"^":return t^n;default:return null}}function bf(e,t,n,r){const s=i=>r?i>>>0:i|0;switch(e){case"+":return s(t+n);case"-":return s(t-n);case"*":return s(Math.imul(t,n));case"/":return n===0?null:s(Math.trunc(t/n));case"%":return n===0?null:s(t%n);case"&":return s(t&n);case"|":return s(t|n);case"^":return s(t^n);default:return null}}function vf(e,t,n,r){let s;switch(e){case"+":s=t+n;break;case"-":s=t-n;break;case"*":s=t*n;break;case"/":s=t/n;break;case"%":s=t%n;break;default:return null}const i=G(s,r);return Number.isFinite(i)?i:null}const yf={x:0,y:1,z:2,w:3,r:0,g:1,b:2,a:3};function O(e,t){switch(e.kind){case"literal":return Ll(e.value);case"ref":{const n=ie(e.ident,t.bindings),r=n?.declElem;return!n||r?.kind!=="const"?null:Tf(n,r,t)}case"parenthesized-expression":return O(e.expression,t);case"unary-expression":{const n=O(e.expression,t);return n&&uf(e.operator.value,n)}case"binary-expression":{const n=e.operator.value,r=O(e.left,t);if(r?.kind==="scalar"&&typeof r.value=="boolean"){if(n==="&&"&&!r.value)return E(!1);if(n==="||"&&r.value)return E(!0)}const s=O(e.right,t);return!r||!s?null:cf(n,r,s)}case"component-expression":{const n=O(e.base,t),r=O(e.access,t),s=r&&Ie(r);return n?.kind!=="composite"||s===void 0||s===null?null:n.elements[s]??null}case"component-member-expression":{const n=O(e.base,t);return n?wf(n,e.access.name):null}case"call-expression":return Sf(e,t);default:return null}}function Tf(e,t,n){const{visitingConsts:r}=n.bindings;if(r.has(e))return null;r.add(e);try{const s=t.init&&O(t.init,n);if(!s)return null;const{typeRef:i}=t.name;return i?K(s,V(i,n)):s}finally{r.delete(e)}}function wf(e,t){if(e.kind!=="composite")return null;const{type:n}=e;if(n.kind==="struct"){const r=n.members.findIndex(s=>s.name===t);return r>=0?e.elements[r]??null:null}if(n.kind==="vector"&&hi(t)){const r=[...t].map(s=>e.elements[yf[s]]);return r.some(s=>!s)?null:r.length===1?r[0]:{kind:"composite",type:h(r.length,n.elem),elements:r}}return null}function Sf(e,t){const n=e.function,r=yn(n),s=e.arguments.map(a=>O(a,t)),i=ie(r,t.bindings);if(i){const a=i.declElem?.kind;return a==="struct"||a==="alias"?kn(me(i,t),s):null}const o=r.originalName;return o==="bitcast"?null:n.kind==="type"?kn(V(n,t),s):rf(o)?kn(C(e,t),s):ql(o,s)}const ki={bool:N,i32:S,u32:w,f32:v,f16:R},bi={f:v,h:R,i:S,u:w};function C(e,t){const n=t.bindings.expressionTypes.get(e);if(n)return n;const r=Ef(e,t);return t.bindings.expressionTypes.set(e,r),r}function me(e,t){const n=t.bindings.declTypes.get(e);if(n)return n;const{visitingDecls:r}=t.bindings;if(r.has(e))return d;r.add(e);try{const s=xf(e,t);return t.bindings.declTypes.set(e,s),s}finally{r.delete(e)}}function V(e,t){const n=t.bindings.expressionTypes.get(e);if(n)return n;const r=ie(e.name,t.bindings),s=r?me(r,t):Tn(e.name.originalName,e.templateParams,t);return t.bindings.expressionTypes.set(e,s),s}function yn(e){return e.kind==="type"?e.name:e.ident}function Ef(e,t){switch(e.kind){case"literal":return Nf(e.value);case"ref":{const n=ie(e.ident,t.bindings);return n?me(n,t):d}case"type":return V(e,t);case"parenthesized-expression":return C(e.expression,t);case"component-expression":return vi(C(e.base,t));case"component-member-expression":return yi(C(e.base,t),e.access.name);case"unary-expression":return Mf(e,t);case"binary-expression":return $f(e,t);case"call-expression":return Bf(e,t)}}function xf(e,t){const n=e.declElem;if(!n)return d;switch(n.kind){case"struct":return Cf(n,t);case"alias":return V(n.typeRef,t);case"const":return wn(n.name,n.init,t,!1);case"let":case"var":case"gvar":case"override":return wn(n.name,n.init,t,!0);case"param":return wn(n.name,void 0,t,!0);default:return d}}function Tn(e,t,n){const r=ki[e];if(r)return r;const s=Ti(e,()=>Sn(t?.[0],n));if(s)return s;if(e==="array"){const i=t?.[0]&&ot(t[0],n);return i?Ae(i,t?.[1]&&Af(t[1],n)):d}if(e==="atomic"){const i=Sn(t?.[0],n);return i?{kind:"atomic",elem:i}:d}if(e==="ptr"){const i=at(t?.[0])??"function",o=t?.[1]&&ot(t[1],n),a=at(t?.[2]);return o?a?{kind:"ptr",space:i,elem:o,access:a}:{kind:"ptr",space:i,elem:o}:d}return e.startsWith("texture_")?If(e,t,n):e==="sampler"?{kind:"sampler",comparison:!1}:e==="sampler_comparison"?{kind:"sampler",comparison:!0}:d}function Nf(e){if(e==="true"||e==="false")return N;const t=e[e.length-1];if(t==="i")return S;if(t==="u")return w;const n=e[0]==="0"&&(e[1]==="x"||e[1]==="X"),r=!n||/[pP]/.test(e);return t==="h"&&r?R:t==="f"&&r?v:n?/[pP.]/.test(e)?U:L:/[.eE]/.test(e)?U:L}function vi(e){switch(e.kind){case"array":case"vector":return e.elem;case"matrix":return h(e.rows,e.elem);case"ptr":return vi(e.elem);default:return d}}function yi(e,t,n){return e.kind==="struct"?e.members.find(r=>r.name===t)?.type??d:e.kind==="vector"&&hi(t)?t.length===1?e.elem:h(t.length,e.elem):e.kind==="ptr"?yi(e.elem,t):d}function Mf(e,t){const n=e.operator.value;if(n==="&"){const s=C(e.expression,t);return s.kind==="unknown"?d:{kind:"ptr",space:Pf(e.expression,t),elem:s}}const r=C(e.expression,t);return n==="*"?r.kind==="ptr"?r.elem:d:r}function $f(e,t){const n=e.operator.value;if(n==="&&"||n==="||")return N;const r=C(e.left,t),s=C(e.right,t);return mi.includes(n)?r.kind==="vector"?h(r.size,N):s.kind==="vector"?h(s.size,N):r.kind==="unknown"||s.kind==="unknown"?d:N:n==="<<"||n===">>"?r:_f(n,r,s)}function Bf(e,t){const n=ie(yn(e.function),t.bindings);return n?Ff(n,t):Df(e,t)}function Cf(e,t){const n=D(e.members,t.conditions??{}).map(r=>({name:r.name.name,type:V(r.typeRef,t)}));return{kind:"struct",name:e.name.ident.originalName,members:n,structElem:e}}function wn(e,t,n,r){if(e.typeRef)return V(e.typeRef,n);if(!t)return d;const s=C(t,n);return r?rt(s):s}function Ti(e,t){const n=/^vec([234])([fhiu])?$/.exec(e);if(n){const s=Number(n[1]),i=n[2]?bi[n[2]]:t();return i?h(s,i):d}const r=/^mat([234])x([234])([fh])?$/.exec(e);if(r){const s=Number(r[1]),i=Number(r[2]),o=r[3]?bi[r[3]]:t();return o?Se(s,i,o):d}}function Sn(e,t){const n=e&&ot(e,t);return n?.kind==="scalar"?n:void 0}function ot(e,t){if(e.kind==="type")return V(e,t);if(e.kind==="ref"){const n=ie(e.ident,t.bindings);return n?me(n,t):Tn(e.ident.originalName,void 0,t)}}function Af(e,t){const n=O(e,t),r=n&&Ie(n);if(r!=null)return Number.isInteger(r)&&r>0?r:void 0}function at(e){if(e?.kind==="ref")return e.ident.originalName;if(e?.kind==="type"&&!e.templateParams)return e.name.originalName}function If(e,t,n){return e.startsWith("texture_storage_")?{kind:"texture",name:e,format:at(t?.[0]),access:at(t?.[1])}:e.startsWith("texture_depth")||e==="texture_external"?{kind:"texture",name:e}:{kind:"texture",name:e,sampled:Sn(t?.[0],n)}}function Pf(e,t){let n=e;for(;;)if(n.kind==="parenthesized-expression")n=n.expression;else if(n.kind==="component-expression")n=n.base;else if(n.kind==="component-member-expression")n=n.base;else if(n.kind==="unary-expression"&&n.operator.value==="*"){const s=C(n.expression,t);return s.kind==="ptr"?s.space:"function"}else break;if(n.kind!=="ref")return"function";const r=ie(n.ident,t.bindings);if(r?.declElem?.kind==="gvar")return r.declElem.template?.[0]?.name??"private";if(r){const s=me(r,t);if(s.kind==="ptr")return s.space}return"function"}function _f(e,t,n){if(e==="*"){const r=Rf(t,n);if(r)return r}return t.kind==="matrix"&&n.kind==="matrix"?Ee(t,_(t.elem,n.elem)):t.kind==="matrix"&&n.kind==="scalar"?Ee(t,_(t.elem,n)):t.kind==="scalar"&&n.kind==="matrix"?Ee(n,_(t,n.elem)):t.kind==="scalar"&&n.kind==="scalar"?_(t,n)??d:t.kind==="vector"&&n.kind==="scalar"?Ee(t,_(t.elem,n)):t.kind==="scalar"&&n.kind==="vector"?Ee(n,_(t,n.elem)):t.kind==="vector"&&n.kind==="vector"?t.size!==n.size?d:Ee(t,_(t.elem,n.elem)):d}function Ff(e,t){const n=e.declElem;return n?.kind!=="fn"?me(e,t):n.returnType?V(n.returnType,t):Ce}function Df(e,t){const n=e.function,r=yn(n).originalName;if(r==="bitcast"){const i=(n.kind==="type"?n.templateParams:e.templateArgs)?.[0];return(i&&ot(i,t))??d}if(n.kind==="type"){const i=e.arguments.length;return Lf(r,n.templateParams,i,t)}const s=e.arguments.map(i=>C(i,t));return Of(r,s)??pn(r,s)}function Rf(e,t){if(e.kind==="matrix"&&t.kind==="matrix"){const n=_(e.elem,t.elem);return n?.kind!=="scalar"?d:Se(t.cols,e.rows,n)}if(e.kind==="matrix"&&t.kind==="vector"){const n=_(e.elem,t.elem);return n?.kind==="scalar"?h(e.rows,n):d}if(e.kind==="vector"&&t.kind==="matrix"){const n=_(e.elem,t.elem);return n?.kind==="scalar"?h(t.cols,n):d}}function Ee(e,t){return t?.kind!=="scalar"?d:e.kind==="vector"?h(e.size,t):e.kind==="matrix"?Se(e.cols,e.rows,t):d}function Lf(e,t,n,r){const s=Tn(e,t,r);return s.kind==="array"&&s.count===void 0&&n?Ae(s.elem,n):s}function Of(e,t){const n=ki[e];if(n)return n;const s=Ti(e,()=>t.length?Vf(t):zf(e));if(s)return s;if(e==="array"){if(!t.length)return d;const i=t.reduce((o,a)=>o&&_(o,a),t[0]);return i?Ae(i,t.length):d}}function Vf(e){let t;for(const n of e){const r=ee(n);if(!r||(t=t?_(t,r):r,!t))return}return t?.kind==="scalar"?t:void 0}function zf(e){return e.startsWith("vec")?L:U}function Wf(e,t){return t.kind==="unknown"?e:Us(e,t)?t:e}function ut(e,t,n){const r=Wf(C(e,n),t);return n.bindings.checkedTypes.set(e,r),r}function jf(e,t){return t.bindings.checkedTypes.get(e)??C(e,t)}function qf(e,t){for(const n of e.decls)Uf(n,t)}function wi(e,t){const n=e.returnType?V(e.returnType,t):void 0;ne(e.body.body,n,t)}function Uf(e,t){switch(e.kind){case"const":case"gvar":case"override":case"var":Si(e,t);break;case"fn":wi(e,t);break;case"do":ne(e.body.body,void 0,t);break}}function ne(e,t,n){for(const r of e)ct(r,t,n)}function Si(e,t){const{typeRef:n}=e.name;n&&e.init&&ut(e.init,V(n,t),t)}function ct(e,t,n){switch(e.kind){case"const":case"let":case"var":Si(e,n);break;case"return":e.value&&t&&ut(e.value,t,n);break;case"assign":Xf(e,n);break;case"block":ne(e.body,t,n);break;case"if":ne(e.body.body,t,n),e.else&&ct(e.else,t,n);break;case"for":e.init&&ct(e.init,t,n),e.update&&ct(e.update,t,n),ne(e.body.body,t,n);break;case"while":ne(e.body.body,t,n);break;case"loop":ne(e.body.body,t,n),e.continuing&&ne(e.continuing.body.body,t,n);break;case"switch":for(const r of e.clauses)ne(r.body.body,t,n);break}}function Xf(e,t){if(e.op.value!=="="||e.lhs.kind==="phony")return;const n=C(e.lhs,t);n.kind!=="unknown"&&ut(e.rhs,n,t)}function Kf(e,t,n){if(!("injectError"in t))return t.createShaderModule({...n,code:e.dest});t.pushErrorScope("validation");const r=t.createShaderModule({...n,code:e.dest});t.popErrorScope();const{promise:s,resolve:i}=Promise.withResolvers();return t.injectError("validation",s),r.getCompilationInfo().then(o=>{if(o.messages.length===0){i(null);return}const a=Ei(e,o),u=Gf(a,r);z(u!==null);const l=new GPUValidationError(u);l.cause=new Error("createShaderModule failed"),l.compilationInfo=a,i(l)}),r}function Ei(e,t){return{__brand:t.__brand,messages:t.messages.map(n=>Jf(e.sourceMap,n))}}function Gf(e,t){if(e.messages.length===0)return null;let n=`Compilation log for [Invalid ShaderModule (${t.label||"unlabled"})]:
`;const r=e.messages.filter(s=>s.type==="error").length;r>0&&(n+=`${r} error(s) generated while compiling the shader:
`);for(const s of e.messages){const{lineNum:i,linePos:o}=s;n+=`${s.module.url}:${i}:${o}`,n+=` ${s.type}: ${s.message}
`;const a=s.module.text;a&&(n+=mt(a,[s.offset,s.offset+s.length]).join(`
`))}return n}function Jf(e,t){const n=e.destToSrc(t.offset),{src:r,position:s}=n;let i=0;if(t.length>0){const u=t.offset+t.length,l=e._destToSrcEnd(n,u);l!==void 0&&(i=Math.max(0,l-s))}const[o,a]=De(s,r.text);return{__brand:t.__brand,type:t.type,message:t.message,offset:s,length:i,lineNum:o,linePos:a,module:{url:r.path??"",text:r.text}}}async function Yf(e,t){if(!e)throw new Error("No GPU adapter");return e.requestDevice(t).then(xi)}function xi(e){const t=[];e.injectError=(r,s)=>{const i=t.findLast(o=>o.filter===r);i!==void 0?i.errors.push(s):s.then(o=>{o!==null&&n(o)})};function n(r){e.addEventListener("uncapturederror",s=>{if(!s.defaultPrevented)if("compilationInfo"in s.error){const i=s.error;if(i.compilationInfo)for(const o of i.compilationInfo.messages)Cn({url:o.module.url,text:o.module.text??null,lineNumber:o.lineNum,lineColumn:o.linePos,length:o.length,offset:o.offset,error:new Error(o.type+": "+o.message)});else console.error(s.error.message)}else console.error(s.error.message)},{once:!0}),e.dispatchEvent(new GPUUncapturedErrorEvent("uncapturederror",{error:r}))}return e.pushErrorScope=(r=>function(s){return t.push({filter:s,errors:[]}),r.call(this,s)})(e.pushErrorScope),e.popErrorScope=(r=>function(){const s=t.pop();if(s===void 0)throw new DOMException("popErrorScope called on empty error scope stack","OperationError");return s.errors.push(r.call(this)),Promise.all(s.errors).then(i=>i.find(o=>o!==null)??null)})(e.popErrorScope),e}export{Bs as BundleResolver,$s as CompositeResolver,Es as ConstantsResolver,on as LinkedWesl,$ as ParseError,Ms as RecordResolver,Fs as SrcMap,an as SrcMapBuilder,Ps as TrackingResolver,Rs as VirtualLibraryResolver,Jt as WeslParseError,ms as WeslStream,Os as _linkSync,U as abstractFloat,L as abstractInt,Nc as addAttributes,Ae as arrayType,It as astToString,Vn as atomicMinMaxFns,cr as attributeToString,Vs as bindAndTransform,nn as bindIdents,Te as bindIdentsRecursive,N as boolType,pn as builtinFnType,pt as caretLine,ut as checkExpr,wi as checkFn,qf as checkModule,jf as checkedTypeOf,Oe as childElems,Yi as childIdent,Le as childScope,_ as commonType,Cs as composeResolvers,rt as concretize,Rn as containsScope,X as conversionRank,K as convertValue,Us as convertible,Ss as createConstantsResolver,As as createLibraryResolvers,Kf as createShaderModule,Ds as createVirtualLibraryResolver,Li as debug,vt as declsOfKind,Ls as defaultRootModule,gr as diagnosticToString,Lc as discoverModules,ee as elemScalar,bt as emptyScope,ye as errorDiagnostic,mt as errorHighlight,O as evalConstExpr,R as f16Type,Un as f16Types,v as f32Type,rn as fileToModulePath,ft as filterMap,D as filterValidElements,et as findAllRootDecls,dt as findMap,Rc as findUnboundIdents,Is as findUnboundRefs,Qe as findValidRootDecls,hr as firstError,Zt as getValidRootDecls,Ii as groupBy,Ai as grouped,S as i32Type,Zi as identElemLog,ve as identToString,de as isAbstract,qs as isFloatScalar,js as isIntegerScalar,rl as isNumericScalar,pr as isWeslFile,lt as last,xc as lengthPrefixMangle,Fe as lineIndexOf,_e as lineStarts,Zc as link,un as linkRegistry,Hc as linkWithResolver,bs as liveDeclsToString,he as log,tt as makeLiveDecls,nt as makeRootLiveDecls,xi as makeWeslDevice,_i as mapForward,Ei as mapGPUCompilationInfo,Ri as mapValues,Se as matType,Gi as mergeScope,Qt as minimalMangle,vs as minimallyMangledName,mr as modulePartsToRelativePath,Dt as moduleToRelativePath,$i as multiKeySet,jn as multisampledTextureTypes,tn as newLinkBindings,kt as nextIdentId,Ns as noSuffix,xs as normalize,Lt as normalizeDebugRoot,cn as normalizeModuleName,Wc as npmNameVariations,De as offsetToLineNumber,ys as outputName,Fi as overlapTail,zn as packed4x8Fns,Be as parseSrcModule,En as partition,kc as publicDecl,ie as refDecl,en as refTarget,Ci as replaceWords,Yf as requestWeslDevice,Ji as resetScopeIds,Rt as resolveModulePath,V as resolveTypeRef,te as sameType,Wn as sampledTextureTypes,Oc as sanitizePackageName,Ie as scalarToNumber,we as scalarType,Pi as scan,_t as scopeToString,Do as scopeToStringLong,ht as srcLog,oo as stdEnumerant,St as stdEnumerants,io as stdFn,yt as stdFns,so as stdType,wt as stdTypes,xt as stdWgsl,On as subgroupFns,Tt as texelFormats,qn as textureStorageTypes,Yt as throwOnParseError,me as typeOfDecl,C as typeOfExpr,fe as typeToString,w as u32Type,Ec as underscoreMangle,d as unknownType,zc as validWgslIdent,Oi as validation,h as vecType,Ln as visitAst,Ce as voidType,Ft as weslFileRegex,Et as wgslStandardAttributes,Vi as withLoggerAsync};
//# sourceMappingURL=/sm/ade8c47a859d6ff4c799e92b04d87c1f71f57f669aa021fc7f904d60a93f9c6a.map