@pexip/media-processor 22.0.0 → 22.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/api-docs/README.mdx +3 -1
  3. package/api-docs/functions/avg.mdx +1 -1
  4. package/api-docs/functions/createAnalyzerGraphNode.mdx +3 -1
  5. package/api-docs/functions/createAnalyzerSubscribableGraphNode.mdx +3 -1
  6. package/api-docs/functions/createAsyncCallbackLoop.mdx +6 -6
  7. package/api-docs/functions/createAudioDestinationGraphNode.mdx +1 -1
  8. package/api-docs/functions/createAudioSignalDetector.mdx +4 -4
  9. package/api-docs/functions/createAudioStats.mdx +1 -1
  10. package/api-docs/functions/createChannelMergerGraphNode.mdx +1 -1
  11. package/api-docs/functions/createChannelSplitterGraphNode.mdx +1 -1
  12. package/api-docs/functions/createDelayGraphNode.mdx +1 -1
  13. package/api-docs/functions/createDenoiseWorkletGraphNode.mdx +2 -2
  14. package/api-docs/functions/createFrameCallbackRequest.mdx +3 -3
  15. package/api-docs/functions/createGainGraphNode.mdx +3 -1
  16. package/api-docs/functions/createMediaElementSourceGraphNode.mdx +1 -1
  17. package/api-docs/functions/createReadWritableStreamFallbackInputProcessAdaptor.mdx +1 -1
  18. package/api-docs/functions/createSegmenter.mdx +1 -1
  19. package/api-docs/functions/createStreamDestinationGraphNode.mdx +1 -1
  20. package/api-docs/functions/createStreamSourceGraphNode.mdx +1 -1
  21. package/api-docs/functions/createVADetector.mdx +3 -3
  22. package/api-docs/functions/createVoiceDetectorFromProbability.mdx +1 -1
  23. package/api-docs/functions/createVoiceDetectorFromTimeData.mdx +3 -1
  24. package/api-docs/functions/createWindowedStats.mdx +2 -2
  25. package/api-docs/functions/getBezierCurveControlPoints.mdx +3 -1
  26. package/api-docs/functions/labelComponents.mdx +3 -1
  27. package/api-docs/functions/loadScript.mdx +1 -1
  28. package/api-docs/functions/loadWasms.mdx +1 -1
  29. package/api-docs/functions/nearestPowerOfTwo.mdx +1 -1
  30. package/api-docs/functions/playVideo.mdx +6 -4
  31. package/api-docs/functions/processAverageVolume.mdx +1 -1
  32. package/api-docs/functions/rms.mdx +1 -1
  33. package/api-docs/functions/subscribeWorkletNode.mdx +1 -1
  34. package/api-docs/functions/sum.mdx +1 -1
  35. package/api-docs/interfaces/AnalyzerSubscribableOptions.mdx +5 -3
  36. package/api-docs/interfaces/AudioGraph.mdx +2 -2
  37. package/api-docs/interfaces/AudioNodeInit.mdx +10 -6
  38. package/api-docs/interfaces/AudioNodeProps.mdx +3 -3
  39. package/api-docs/interfaces/Benchmark.mdx +3 -1
  40. package/api-docs/interfaces/Clock.mdx +1 -1
  41. package/api-docs/interfaces/Denoise.mdx +2 -2
  42. package/api-docs/interfaces/InputProcessAdaptor.mdx +6 -2
  43. package/api-docs/interfaces/MPMask.mdx +1 -1
  44. package/api-docs/interfaces/Process.mdx +5 -5
  45. package/api-docs/interfaces/ProcessWorkerDebugMessage.mdx +1 -1
  46. package/api-docs/interfaces/ProcessWorkerEventClosed.mdx +5 -0
  47. package/api-docs/interfaces/ProcessorEvent.mdx +2 -1
  48. package/api-docs/interfaces/ProcessorProcessOptions.mdx +2 -2
  49. package/api-docs/interfaces/ProcessorUpdateOptions.mdx +3 -1
  50. package/api-docs/interfaces/ReadWritableStream.mdx +2 -2
  51. package/api-docs/interfaces/RenderEventHandlers.mdx +3 -3
  52. package/api-docs/interfaces/Renderer.mdx +3 -1
  53. package/api-docs/interfaces/RendererOptions.mdx +5 -5
  54. package/api-docs/interfaces/Runner.mdx +3 -3
  55. package/api-docs/interfaces/Segmentation.mdx +1 -1
  56. package/api-docs/interfaces/Segmenter.mdx +39 -19
  57. package/api-docs/interfaces/VideoFrameLike.mdx +1 -1
  58. package/api-docs/interfaces/VideoProcessor.mdx +7 -7
  59. package/api-docs/interfaces/WorkletMessagePortOptions.mdx +2 -2
  60. package/api-docs/type-aliases/AsyncCallback.mdx +1 -1
  61. package/api-docs/type-aliases/Callback.mdx +2 -2
  62. package/api-docs/type-aliases/ExtractMessageEventType.mdx +1 -1
  63. package/api-docs/type-aliases/IncludeMessageEventDataType.mdx +1 -1
  64. package/api-docs/type-aliases/Logger.mdx +12 -0
  65. package/api-docs/type-aliases/OptionalKeys.mdx +1 -1
  66. package/api-docs/type-aliases/ProcessWorkerEvents.mdx +1 -0
  67. package/api-docs/type-aliases/RunnerCreator.mdx +3 -3
  68. package/api-docs/type-aliases/TupleOf.mdx +1 -1
  69. package/api-docs/variables/cloneImageRecord.mdx +3 -1
  70. package/api-docs/variables/createLazyProps.mdx +1 -1
  71. package/api-docs/variables/createObjectUpdater.mdx +2 -2
  72. package/api-docs/variables/createRemoteImageBitmap.mdx +5 -5
  73. package/api-docs/variables/handleWebGLContextLoss.mdx +1 -1
  74. package/api-docs/variables/urls.mdx +2 -2
  75. package/dist/common/tsconfig.tsbuildinfo +1 -1
  76. package/dist/common/types/messageEvents.d.ts +4 -1
  77. package/dist/common/types/processor.d.ts +1 -0
  78. package/dist/main/tsconfig.tsbuildinfo +1 -1
  79. package/dist/main/video/segmenter.d.ts +8 -1
  80. package/dist/main/video/segmenter.js +44 -29
  81. package/dist/main/video/types.d.ts +1 -1
  82. package/dist/main/video/video.d.ts +1 -1
  83. package/dist/main/video/video.js +22 -11
  84. package/dist/workers/mediaWorker.js +23 -23
  85. package/dist/workers/tsconfig.tsbuildinfo +1 -1
  86. package/package.json +3 -3
@@ -1,18 +1,18 @@
1
- var Fr=typeof self<"u"?self:{};function Nc(t,e){t=t.split(".");var r,n=Fr;for((t[0]in n)||n.execScript===void 0||n.execScript("var "+t[0]);t.length&&(r=t.shift());)t.length||e===void 0?n=n[r]&&n[r]!==Object.prototype[r]?n[r]:n[r]={}:n[r]=e}function Rr(){throw Error("Invalid UTF8")}function Eu(t,e){return e=String.fromCharCode.apply(null,e),t==null?e:t+e}var is,Vo,jh=typeof TextDecoder<"u",Yh,qh=typeof TextEncoder<"u";function Gc(t){if(qh)t=(Yh||(Yh=new TextEncoder)).encode(t);else{let r=0,n=new Uint8Array(3*t.length);for(let s=0;s<t.length;s++){var e=t.charCodeAt(s);if(e<128)n[r++]=e;else{if(e<2048)n[r++]=e>>6|192;else{if(e>=55296&&e<=57343){if(e<=56319&&s<t.length){let o=t.charCodeAt(++s);if(o>=56320&&o<=57343){e=1024*(e-55296)+o-56320+65536,n[r++]=e>>18|240,n[r++]=e>>12&63|128,n[r++]=e>>6&63|128,n[r++]=63&e|128;continue}s--}e=65533}n[r++]=e>>12|224,n[r++]=e>>6&63|128}n[r++]=63&e|128}}t=r===n.length?n:n.subarray(0,r)}return t}var wa,bs;e:{for(Wo=["CLOSURE_FLAGS"],us=Fr,cs=0;cs<Wo.length;cs++)if((us=us[Wo[cs]])==null){bs=null;break e}bs=us}var Wo,us,cs,Mn,Au=bs&&bs[610401301];wa=Au!=null&&Au;var Ru=Fr.navigator;function ta(t){return!!wa&&!!Mn&&Mn.brands.some(({brand:e})=>e&&e.indexOf(t)!=-1)}function bt(t){var e;return(e=Fr.navigator)&&(e=e.userAgent)||(e=""),e.indexOf(t)!=-1}function fr(){return!!wa&&!!Mn&&Mn.brands.length>0}function $o(){return fr()?ta("Chromium"):(bt("Chrome")||bt("CriOS"))&&!(!fr()&&bt("Edge"))||bt("Silk")}function Ta(t){return Ta[" "](t),t}Mn=Ru&&Ru.userAgentData||null,Ta[" "]=function(){};var Kh=!fr()&&(bt("Trident")||bt("MSIE"));!bt("Android")||$o(),$o(),bt("Safari")&&($o()||!fr()&&bt("Coast")||!fr()&&bt("Opera")||!fr()&&bt("Edge")||(fr()?ta("Microsoft Edge"):bt("Edg/"))||fr()&&ta("Opera"));var Vc={},Bn=null;function Zh(t){let e=t.length,r=3*e/4;r%3?r=Math.floor(r):"=.".indexOf(t[e-1])!=-1&&(r="=.".indexOf(t[e-2])!=-1?r-2:r-1);let n=new Uint8Array(r),s=0;return function(o,a){function i(l){for(;u<o.length;){let c=o.charAt(u++),f=Bn[c];if(f!=null)return f;if(!/^[\s\xa0]*$/.test(c))throw Error("Unknown base64 encoding at char: "+c)}return l}Wc();let u=0;for(;;){let l=i(-1),c=i(0),f=i(64),m=i(64);if(m===64&&l===-1)break;a(l<<2|c>>4),f!=64&&(a(c<<4&240|f>>2),m!=64&&a(f<<6&192|m))}}(t,function(o){n[s++]=o}),s!==r?n.subarray(0,s):n}function Wc(){if(!Bn){Bn={};var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split(""),e=["+/=","+/","-_=","-_.","-_"];for(let r=0;r<5;r++){let n=t.concat(e[r].split(""));Vc[r]=n;for(let s=0;s<n.length;s++){let o=n[s];Bn[o]===void 0&&(Bn[o]=s)}}}}var $c=typeof Uint8Array<"u",zc=!Kh&&typeof btoa=="function";function Iu(t){if(!zc){var e;e===void 0&&(e=0),Wc(),e=Vc[e];var r=Array(Math.floor(t.length/3)),n=e[64]||"";let u=0,l=0;for(;u<t.length-2;u+=3){var s=t[u],o=t[u+1],a=t[u+2],i=e[s>>2];s=e[(3&s)<<4|o>>4],o=e[(15&o)<<2|a>>6],a=e[63&a],r[l++]=i+s+o+a}switch(i=0,a=n,t.length-u){case 2:a=e[(15&(i=t[u+1]))<<2]||n;case 1:t=t[u],r[l]=e[t>>2]+e[(3&t)<<4|i>>4]+a+n}return r.join("")}for(e="",r=0,n=t.length-10240;r<n;)e+=String.fromCharCode.apply(null,t.subarray(r,r+=10240));return e+=String.fromCharCode.apply(null,r?t.subarray(r):t),btoa(e)}var Su=/[-_.]/g,Jh={"-":"+",_:"/",".":"="};function Qh(t){return Jh[t]||""}function Hc(t){if(!zc)return Zh(t);Su.test(t)&&(t=t.replace(Su,Qh)),t=atob(t);let e=new Uint8Array(t.length);for(let r=0;r<t.length;r++)e[r]=t.charCodeAt(r);return e}function $n(t){return $c&&t!=null&&t instanceof Uint8Array}var Xr={};function Br(){return ed||(ed=new tr(null,Xr))}function ka(t){Xc(Xr);var e=t.g;return(e=e==null||$n(e)?e:typeof e=="string"?Hc(e):null)==null?e:t.g=e}var tr=class{h(){return new Uint8Array(ka(this)||0)}constructor(t,e){if(Xc(e),this.g=t,t!=null&&t.length===0)throw Error("ByteString should be constructed with non-empty values")}},ed,td;function Xc(t){if(t!==Xr)throw Error("illegal external caller")}function jc(t,e){t.__closure__error__context__984382||(t.__closure__error__context__984382={}),t.__closure__error__context__984382.severity=e}function Yc(){let t=Error();jc(t,"incident"),function(e){Fr.setTimeout(()=>{throw e},0)}(t)}function ra(t){return jc(t=Error(t),"warning"),t}function Ea(){return typeof BigInt=="function"}function ct(t){return Array.prototype.slice.call(t)}var en=typeof Symbol=="function"&&typeof Symbol()=="symbol";function Fs(t){return typeof Symbol=="function"&&typeof Symbol()=="symbol"?Symbol():t}var zn=Fs(),Cu=Fs("0di"),zo=Fs("2ex"),Rn=Fs("1oa"),Bs=en?(t,e)=>{t[zn]|=e}:(t,e)=>{t.G!==void 0?t.G|=e:Object.defineProperties(t,{G:{value:e,configurable:!0,writable:!0,enumerable:!1}})},na=en?(t,e)=>{t[zn]&=~e}:(t,e)=>{t.G!==void 0&&(t.G&=~e)},Re=en?t=>0|t[zn]:t=>0|t.G,oe=en?t=>t[zn]:t=>t.G,Be=en?(t,e)=>{t[zn]=e}:(t,e)=>{t.G!==void 0?t.G=e:Object.defineProperties(t,{G:{value:e,configurable:!0,writable:!0,enumerable:!1}})};function tn(t){return Bs(t,34),t}function rd(t,e){Be(e,-30975&(0|t))}function sa(t,e){Be(e,-30941&(34|t))}var Aa,Hn={},qc={};function Fu(t){return!(!t||typeof t!="object"||t.Ia!==qc)}function Ra(t){return t!==null&&typeof t=="object"&&!Array.isArray(t)&&t.constructor===Object}function Ia(t,e){if(t!=null){if(typeof t=="string")t=t?new tr(t,Xr):Br();else if(t.constructor!==tr)if($n(t))t=t.length?new tr(new Uint8Array(t),Xr):Br();else{if(!e)throw Error();t=void 0}}return t}function vs(t){return!(!Array.isArray(t)||t.length)&&!!(1&Re(t))}var Bu=[];function vr(t){if(2&t)throw Error()}Be(Bu,55),Aa=Object.freeze(Bu);var ws=class t{constructor(e,r,n){this.l=0,this.g=e,this.h=r,this.m=n}next(){if(this.l<this.g.length){let e=this.g[this.l++];return{done:!1,value:this.h?this.h.call(this.m,e):e}}return{done:!0,value:void 0}}[Symbol.iterator](){return new t(this.g,this.h,this.m)}},dr;function Kc(t,e){(e=dr?e[dr]:void 0)&&(t[dr]=ct(e))}var nd=Object.freeze({});function Us(t){return t.Pa=!0,t}var sd=Us(t=>typeof t=="number"),Uu=Us(t=>typeof t=="string"),od=Us(t=>typeof t=="boolean"),Ls=typeof Fr.BigInt=="function"&&typeof Fr.BigInt(0)=="bigint",oa=Us(t=>Ls?t>=id&&t<=cd:t[0]==="-"?Lu(t,ad):Lu(t,ud)),ad=Number.MIN_SAFE_INTEGER.toString(),id=Ls?BigInt(Number.MIN_SAFE_INTEGER):void 0,ud=Number.MAX_SAFE_INTEGER.toString(),cd=Ls?BigInt(Number.MAX_SAFE_INTEGER):void 0;function Lu(t,e){if(t.length>e.length)return!1;if(t.length<e.length||t===e)return!0;for(let r=0;r<t.length;r++){let n=t[r],s=e[r];if(n>s)return!1;if(n<s)return!0}}var ld=typeof Uint8Array.prototype.slice=="function",Zc,ie=0,Te=0;function Pu(t){let e=t>>>0;ie=e,Te=(t-e)/4294967296>>>0}function jr(t){if(t<0){Pu(-t);let[e,r]=Ba(ie,Te);ie=e>>>0,Te=r>>>0}else Pu(t)}function Sa(t){let e=Zc||(Zc=new DataView(new ArrayBuffer(8)));e.setFloat32(0,+t,!0),Te=0,ie=e.getUint32(0,!0)}function Ca(t,e){let r=4294967296*e+(t>>>0);return Number.isSafeInteger(r)?r:Nn(t,e)}function Fa(t,e){let r=2147483648&e;return r&&(e=~e>>>0,(t=1+~t>>>0)==0&&(e=e+1>>>0)),typeof(t=Ca(t,e))=="number"?r?-t:t:r?"-"+t:t}function Nn(t,e){if(t>>>=0,(e>>>=0)<=2097151)var r=""+(4294967296*e+t);else Ea()?r=""+(BigInt(e)<<BigInt(32)|BigInt(t)):(t=(16777215&t)+6777216*(r=16777215&(t>>>24|e<<8))+6710656*(e=e>>16&65535),r+=8147497*e,e*=2,t>=1e7&&(r+=t/1e7>>>0,t%=1e7),r>=1e7&&(e+=r/1e7>>>0,r%=1e7),r=e+Ou(r)+Ou(t));return r}function Ou(t){return t=String(t),"0000000".slice(t.length)+t}function Ps(t){if(t.length<16)jr(Number(t));else if(Ea())t=BigInt(t),ie=Number(t&BigInt(4294967295))>>>0,Te=Number(t>>BigInt(32)&BigInt(4294967295));else{let e=+(t[0]==="-");Te=ie=0;let r=t.length;for(let n=e,s=(r-e)%6+e;s<=r;n=s,s+=6){let o=Number(t.slice(n,s));Te*=1e6,ie=1e6*ie+o,ie>=4294967296&&(Te+=Math.trunc(ie/4294967296),Te>>>=0,ie>>>=0)}if(e){let[n,s]=Ba(ie,Te);ie=n,Te=s}}}function Ba(t,e){return e=~e,t?t=1+~t:e+=1,[t,e]}function wr(t){return t==null||typeof t=="number"?t:t==="NaN"||t==="Infinity"||t==="-Infinity"?Number(t):void 0}function Jc(t){return t==null||typeof t=="boolean"?t:typeof t=="number"?!!t:void 0}var fd=/^-?([1-9][0-9]*|0)(\.[0-9]+)?$/;function Os(t){let e=typeof t;switch(e){case"bigint":return!0;case"number":return Number.isFinite(t)}return e==="string"&&fd.test(t)}function rn(t){if(t==null)return t;if(typeof t=="string"){if(!t)return;t=+t}return typeof t=="number"&&Number.isFinite(t)?0|t:void 0}function Qc(t){if(t==null)return t;if(typeof t=="string"){if(!t)return;t=+t}return typeof t=="number"&&Number.isFinite(t)?t>>>0:void 0}function Du(t){return t[0]!=="-"&&(t.length<20||t.length===20&&Number(t.substring(0,6))<184467)}function Ua(t){return t=Math.trunc(t),Number.isSafeInteger(t)||(jr(t),t=Fa(ie,Te)),t}function La(t){var e=Math.trunc(Number(t));if(Number.isSafeInteger(e))return String(e);if((e=t.indexOf("."))!==-1&&(t=t.substring(0,e)),!(t[0]==="-"?t.length<20||t.length===20&&Number(t.substring(0,7))>-922337:t.length<19||t.length===19&&Number(t.substring(0,6))<922337))if(Ps(t),t=ie,2147483648&(e=Te))if(Ea())t=""+(BigInt(0|e)<<BigInt(32)|BigInt(t>>>0));else{let[r,n]=Ba(t,e);t="-"+Nn(r,n)}else t=Nn(t,e);return t}function Ts(t){return t==null?t:typeof t=="bigint"?(oa(t)?t=Number(t):(t=BigInt.asIntN(64,t),t=oa(t)?Number(t):String(t)),t):Os(t)?typeof t=="number"?Ua(t):La(t):void 0}function hd(t){if(t==null)return t;var e=typeof t;if(e==="bigint")return String(BigInt.asUintN(64,t));if(Os(t)){if(e==="string")return e=Math.trunc(Number(t)),Number.isSafeInteger(e)&&e>=0?t=String(e):((e=t.indexOf("."))!==-1&&(t=t.substring(0,e)),Du(t)||(Ps(t),t=Nn(ie,Te))),t;if(e==="number")return(t=Math.trunc(t))>=0&&Number.isSafeInteger(t)?t:function(r){if(r<0){jr(r);var n=Nn(ie,Te);return r=Number(n),Number.isSafeInteger(r)?r:n}return Du(n=String(r))?n:(jr(r),Ca(ie,Te))}(t)}}function el(t){if(typeof t!="string")throw Error();return t}function nn(t){if(t!=null&&typeof t!="string")throw Error();return t}function mr(t){return t==null||typeof t=="string"?t:void 0}function Pa(t,e,r,n){if(t!=null&&typeof t=="object"&&t.X===Hn)return t;if(!Array.isArray(t))return r?2&n?(t=e[Cu])?e=t:(tn((t=new e).u),e=e[Cu]=t):e=new e:e=void 0,e;let s=r=Re(t);return s===0&&(s|=32&n),s|=2&n,s!==r&&Be(t,s),new e(t)}function dd(t,e,r){if(e)e:{if(!Os(e=t))throw ra("int64");switch(typeof e){case"string":e=La(e);break e;case"bigint":if(t=e=BigInt.asIntN(64,e),Uu(t)){if(!/^\s*(?:-?[1-9]\d*|0)?\s*$/.test(t))throw Error(String(t))}else if(sd(t)&&!Number.isSafeInteger(t))throw Error(String(t));e=Ls?BigInt(e):od(e)?e?"1":"0":Uu(e)?e.trim()||"0":String(e);break e;default:e=Ua(e)}}else e=Ts(t);return typeof(r=(t=e)==null?r?0:void 0:t)=="string"&&(e=+r,Number.isSafeInteger(e))?e:r}function tl(t){var e;return In===void 0&&(In=typeof Proxy=="function"?Mu(Proxy):null),(e=!In)||(Sn===void 0&&(Sn=typeof WeakMap=="function"?Mu(WeakMap):null),e=!Sn),e?t:(e=Yr?.get(t))?e:Math.random()>.01?t:(function(r){if(Ho===void 0){let n=new In([],{});Ho=Array.prototype.concat.call([],n).length===1}Ho&&typeof Symbol=="function"&&Symbol.isConcatSpreadable&&(r[Symbol.isConcatSpreadable]=!0)}(t),function(r,n){(Yr||(Yr=new Sn)).set(r,n),(rl||(rl=new Sn)).set(n,r)}(t,e=new In(t,{set:(r,n,s)=>(Yc(),r[n]=s,!0)})),e)}var Yr,rl,In,Sn,Ho,ks,nl,md;function Mu(t){try{return t.toString().indexOf("[native code]")!==-1?t:null}catch{return null}}function pr(t,e,r){return t=sl(t,e[0],e[1],r?1:2),e!==nl&&r&&Bs(t,16384),t}function sl(t,e,r,n){if(n=n??0,t==null&&(t=ks),ks=void 0,t==null){var s=96;r?(t=[r],s|=512):t=[],e&&(s=-33521665&s|(1023&e)<<15)}else{if(!Array.isArray(t))throw Error("narr");if(2048&(s=Re(t)))throw Error("farr");if(64&s)return t;if(n===1||n===2||(s|=64),r&&(s|=512,r!==t[0]))throw Error("mid");e:{if(n=(r=t).length){let o=n-1;if(Ra(r[o])){if((e=o-(+!!(512&(s|=256))-1))>=1024)throw Error("pvtlmt");s=-33521665&s|(1023&e)<<15;break e}}if(e){if((e=Math.max(e,n-(+!!(512&s)-1)))>1024)throw Error("spvt");s=-33521665&s|(1023&e)<<15}}}return Be(t,s),t}var pd={},gd=function(){try{return Ta(new class extends Map{constructor(){super()}}),!1}catch{return!0}}(),Ln=class{constructor(){this.g=new Map}get(e){return this.g.get(e)}set(e,r){return this.g.set(e,r),this.size=this.g.size,this}delete(e){return e=this.g.delete(e),this.size=this.g.size,e}clear(){this.g.clear(),this.size=this.g.size}has(e){return this.g.has(e)}entries(){return this.g.entries()}keys(){return this.g.keys()}values(){return this.g.values()}forEach(e,r){return this.g.forEach(e,r)}[Symbol.iterator](){return this.entries()}},xd=gd?(Object.setPrototypeOf(Ln.prototype,Map.prototype),Object.defineProperties(Ln.prototype,{size:{value:0,configurable:!0,enumerable:!0,writable:!0}}),Ln):class extends Map{constructor(){super()}};function Nu(t){return t}function Xo(t){if(2&t.M)throw Error("Cannot mutate an immutable Map")}var wt=class extends xd{constructor(t,e,r=Nu,n=Nu){super();let s=Re(t);s|=64,Be(t,s),this.M=s,this.T=e,this.S=r,this.Z=this.T?yd:n;for(let o=0;o<t.length;o++){let a=t[o],i=r(a[0],!1,!0),u=a[1];e?u===void 0&&(u=null):u=n(a[1],!1,!0,void 0,void 0,s),super.set(i,u)}}oa(t=Gu){if(this.size!==0)return this.Y(t)}Y(t=Gu){let e=[],r=super.entries();for(var n;!(n=r.next()).done;)(n=n.value)[0]=t(n[0]),n[1]=t(n[1]),e.push(n);return e}clear(){Xo(this),super.clear()}delete(t){return Xo(this),super.delete(this.S(t,!0,!1))}entries(){var t=this.na();return new ws(t,_d,this)}keys(){return this.Ha()}values(){var t=this.na();return new ws(t,wt.prototype.get,this)}forEach(t,e){super.forEach((r,n)=>{t.call(e,this.get(n),n,this)})}set(t,e){return Xo(this),(t=this.S(t,!0,!1))==null?this:e==null?(super.delete(t),this):super.set(t,this.Z(e,!0,!0,this.T,!1,this.M))}Na(t){let e=this.S(t[0],!1,!0);t=t[1],t=this.T?t===void 0?null:t:this.Z(t,!1,!0,void 0,!1,this.M),super.set(e,t)}has(t){return super.has(this.S(t,!1,!1))}get(t){t=this.S(t,!1,!1);let e=super.get(t);if(e!==void 0){var r=this.T;return r?((r=this.Z(e,!1,!0,r,this.sa,this.M))!==e&&super.set(t,r),r):e}}na(){return Array.from(super.keys())}Ha(){return super.keys()}[Symbol.iterator](){return this.entries()}};function yd(t,e,r,n,s,o){return t=Pa(t,n,r,o),s&&(t=Ms(t)),t}function Gu(t){return t}function _d(t){return[t,this.get(t)]}var bd;function Vu(){return bd||(bd=new wt(tn([]),void 0,void 0,void 0,pd))}function Oa(t,e,r,n,s){if(t!=null){if(Array.isArray(t))t=vs(t)?void 0:s&&2&Re(t)?t:Ds(t,e,r,n!==void 0,s);else if(Ra(t)){let o={};for(let a in t)o[a]=Oa(t[a],e,r,n,s);t=o}else t=e(t,n);return t}}function Ds(t,e,r,n,s){let o=n||r?Re(t):0;n=n?!!(32&o):void 0;let a=ct(t);for(let i=0;i<a.length;i++)a[i]=Oa(a[i],e,r,n,s);return r&&(Kc(a,t),r(o,a)),a}function vd(t){return Oa(t,Da,void 0,void 0,!1)}function Da(t){return t.X===Hn?t.toJSON():t instanceof wt?t.oa(vd):function(e){switch(typeof e){case"number":return isFinite(e)?e:String(e);case"bigint":return oa(e)?Number(e):String(e);case"boolean":return e?1:0;case"object":if(e)if(Array.isArray(e)){if(vs(e))return}else{if($n(e))return Iu(e);if(e instanceof tr){let r=e.g;return r==null?"":typeof r=="string"?r:e.g=Iu(r)}if(e instanceof wt)return e.oa()}}return e}(t)}function aa(t,e,r=sa){if(t!=null){if($c&&t instanceof Uint8Array)return e?t:new Uint8Array(t);if(Array.isArray(t)){var n=Re(t);return 2&n?t:(e&&(e=n===0||!!(32&n)&&!(64&n||!(16&n))),e?(Be(t,-12293&(34|n)),t):Ds(t,aa,4&n?sa:r,!0,!0))}return t.X===Hn?(r=t.u,t=2&(n=oe(r))?t:Ma(t,r,n,!0)):t instanceof wt&&!(2&t.M)&&(r=tn(t.Y(aa)),t=new wt(r,t.T,t.S,t.Z)),t}}function Ma(t,e,r,n){return t=t.constructor,ks=e=ol(e,r,n),e=new t(e),ks=void 0,e}function ol(t,e,r){let n=r||2&e?sa:rd,s=!!(32&e);return t=function(o,a,i){let u=ct(o);var l=u.length;let c=256&a?u[l-1]:void 0;for(l+=c?-1:0,a=512&a?1:0;a<l;a++)u[a]=i(u[a]);if(c){a=u[a]={};for(let f in c)a[f]=i(c[f])}return Kc(u,o),u}(t,e,o=>aa(o,s,n)),Bs(t,32|(r?2:0)),t}function Ms(t){let e=t.u,r=oe(e);return 2&r?Ma(t,e,r,!1):t}function xr(t,e){return or(t=t.u,oe(t),e)}function Wu(t,e,r,n){if(!((e=n+(+!!(512&e)-1))<0||e>=t.length||e>=r))return t[e]}function or(t,e,r,n){if(r===-1)return null;let s=e>>15&1023||536870912;if(!(r>=s)){var o=t.length;return n&&256&e&&(n=t[o-1][r])!=null?(Wu(t,e,s,r)&&zo!=null&&((e=(t=td??(td={}))[zo]||0)>=4||(t[zo]=e+1,Yc())),n):Wu(t,e,s,r)}return 256&e?t[t.length-1][r]:void 0}function ce(t,e,r){let n=t.u,s=oe(n);return vr(s),be(n,s,e,r),t}function be(t,e,r,n){let s=e>>15&1023||536870912;if(r>=s){let o,a=e;if(256&e)o=t[t.length-1];else{if(n==null)return a;o=t[s+(+!!(512&e)-1)]={},a|=256}return o[r]=n,r<s&&(t[r+(+!!(512&e)-1)]=void 0),a!==e&&Be(t,a),a}return t[r+(+!!(512&e)-1)]=n,256&e&&r in(t=t[t.length-1])&&delete t[r],e}function ms(t,e){t=t.u;let r=oe(t),n=or(t,r,e),s=wr(n);return s!=null&&s!==n&&be(t,r,e,s),s}function al(t){t=t.u;let e=oe(t),r=or(t,e,1),n=Ia(r,!0);return n!=null&&n!==r&&be(t,e,1,n),n}function Ir(){return nd===void 0?2:4}function Sr(t,e,r,n,s){let o=t.u,a=2&(t=oe(o))?1:n;s=!!s,n=Na(o,t,e);var i=Re(n);if(!(4&i)){4&i&&(n=ct(n),i=rr(i,t),t=be(o,t,e,n));let l=0,c=0;for(;l<n.length;l++){let f=r(n[l]);f!=null&&(n[c++]=f)}c<l&&(n.length=c),i=-4097&(20|(i=Ga(i,t))),Be(n,i&=-8193),2&i&&Object.freeze(n)}let u;return a===1||a===4&&32&i?Ft(i)||(s=i,(i|=2)!==s&&Be(n,i),Object.freeze(n)):(r=a===5&&(!!(32&i)||Ft(i)||!!Yr?.get(n)),(a===2||r)&&Ft(i)&&(n=ct(n),i=gr(i=rr(i,t),t,s),Be(n,i),t=be(o,t,e,n)),Ft(i)||(e=i,(i=gr(i,t,s))!==e&&Be(n,i)),r?u=tl(n):a!==2||s||Yr?.delete(n)),u||n}function Na(t,e,r,n){return t=or(t,e,r,n),Array.isArray(t)?t:Aa}function Ga(t,e){return t===0&&(t=rr(t,e)),1|t}function Ft(t){return!!(2&t)&&!!(4&t)||!!(2048&t)}function il(t){t=ct(t);for(let e=0;e<t.length;e++){let r=t[e]=ct(t[e]);Array.isArray(r[1])&&(r[1]=tn(r[1]))}return t}function ia(t,e,r,n){t=t.u;let s=oe(t);vr(s),be(t,s,e,(n==="0"?Number(r)===0:r===n)?void 0:r)}function sn(t,e,r,n,s){vr(e);var o=!(!(64&e)&&16384&e);let a=(s=Na(t,e,r,s))!==Aa;if(o||!a){let i=o=a?Re(s):0;(!a||2&i||Ft(i)||4&i&&!(32&i))&&(s=ct(s),i=rr(i,e),e=be(t,e,r,s)),i=-13&Ga(i,e),i=gr(n?-17&i:16|i,e,!0),i!==o&&Be(s,i)}return s}function jo(t,e){var r=Kl;return Wa(Va(t=t.u),t,oe(t),r)===e?e:-1}function Va(t){if(en)return t[Rn]??(t[Rn]=new Map);if(Rn in t)return t[Rn];let e=new Map;return Object.defineProperty(t,Rn,{value:e}),e}function ul(t,e,r,n){let s=Va(t),o=Wa(s,t,e,r);return o!==n&&(o&&(e=be(t,e,o)),s.set(r,n)),e}function Wa(t,e,r,n){let s=t.get(n);if(s!=null)return s;s=0;for(let o=0;o<n.length;o++){let a=n[o];or(e,r,a)!=null&&(s!==0&&(r=be(e,r,s)),s=a)}return t.set(n,s),s}function $a(t,e,r,n){let s,o=oe(t);if((n=or(t,o,r,n))!=null&&n.X===Hn)return(e=Ms(n))!==n&&be(t,o,r,e),e.u;if(Array.isArray(n)){let a=Re(n);s=2&a?pr(ol(n,a,!1),e,!0):64&a?n:pr(s,e,!0)}else s=pr(void 0,e,!0);return s!==n&&be(t,o,r,s),s}function cl(t,e,r,n){t=t.u;let s=oe(t);return(e=Pa(n=or(t,s,r,n),e,!1,s))!==n&&e!=null&&be(t,s,r,e),e}function Y(t,e,r,n=!1){if((e=cl(t,e,r,n))==null)return e;if(t=t.u,!(2&(n=oe(t)))){let s=Ms(e);s!==e&&be(t,n,r,e=s)}return e}function ll(t,e,r,n,s,o,a){t=t.u;var i=!!(2&e);s=i?1:s,o=!!o,a&&(a=!i),i=Na(t,e,n);var u=Re(i),l=!!(4&u);if(!l){var c=i,f=e;let p=!!(2&(u=Ga(u,e)));p&&(f|=2);let w=!p,A=!0,v=0,C=0;for(;v<c.length;v++){let k=Pa(c[v],r,!1,f);if(k instanceof r){if(!p){let T=!!(2&Re(k.u));w&&(w=!T),A&&(A=T)}c[C++]=k}}C<v&&(c.length=C),u|=4,u=A?16|u:-17&u,Be(c,u=w?8|u:-9&u),p&&Object.freeze(c)}if(a&&!(8&u||!i.length&&(s===1||s===4&&32&u))){for(Ft(u)&&(i=ct(i),u=rr(u,e),e=be(t,e,n,i)),r=i,a=u,c=0;c<r.length;c++)(u=r[c])!==(f=Ms(u))&&(r[c]=f);a|=8,a=r.length?-17&a:16|a,Be(r,a),u=a}let m;return s===1||s===4&&32&u?Ft(u)||(e=u,(u|=!i.length||16&u&&(!l||32&u)?2:2048)!==e&&Be(i,u),Object.freeze(i)):(l=s===5&&(!!(32&u)||Ft(u)||!!Yr?.get(i)),(s===2||l)&&Ft(u)&&(i=ct(i),u=gr(u=rr(u,e),e,o),Be(i,u),e=be(t,e,n,i)),Ft(u)||(n=u,(u=gr(u,e,o))!==n&&Be(i,u)),l?m=tl(i):s!==2||o||Yr?.delete(i)),m||i}function nr(t,e,r){let n=oe(t.u);return ll(t,n,e,r,Ir(),!1,!(2&n))}function $(t,e,r,n){return n==null&&(n=void 0),ce(t,r,n)}function Pn(t,e,r,n){n==null&&(n=void 0);e:{t=t.u;let s=oe(t);if(vr(s),n==null){let o=Va(t);if(Wa(o,t,s,r)!==e)break e;o.set(r,0)}else s=ul(t,s,r,e);be(t,s,e,n)}}function rr(t,e){return-2049&(t=32|(2&e?2|t:-3&t))}function gr(t,e,r){return 32&e&&r||(t&=-33),t}function Es(t,e,r,n){let s=oe(t.u);vr(s),t=ll(t,s,r,e,2,!0),n=n??new r,t.push(n),2&Re(n.u)?na(t,8):na(t,16)}function Bt(t,e){return t??e}function vt(t,e){return rn(xr(t,e))}function Ae(t,e){return Bt(ms(t,e),0)}function Xt(t,e){return Bt(mr(xr(t,e)),"")}function Gn(t,e,r){if(r!=null&&typeof r!="boolean")throw t=typeof r,Error(`Expected boolean but got ${t!="object"?t:r?Array.isArray(r)?"array":t:"null"}: ${r}`);ce(t,e,r)}function jt(t,e,r){if(r!=null){if(typeof r!="number"||!Number.isFinite(r))throw ra("int32");r|=0}ce(t,e,r)}function G(t,e,r){if(r!=null&&typeof r!="number")throw Error(`Value of float/double field must be a number, found ${typeof r}: ${r}`);ce(t,e,r)}function As(t,e,r){{let a=t.u,i=oe(a);if(vr(i),r==null)be(a,i,e);else{r=rl?.get(r)||r;var n=t=Re(r),s=Ft(t),o=s||Object.isFrozen(r);for(s||(t=0),o||(r=ct(r),n=0,t=gr(t=rr(t,i),i,!0),o=!1),t|=21,s=0;s<r.length;s++){let u=r[s],l=el(u);Object.is(u,l)||(o&&(r=ct(r),n=0,t=gr(t=rr(t,i),i,!0),o=!1),r[s]=l)}t!==n&&(o&&(r=ct(r),t=gr(t=rr(t,i),i,!0)),Be(r,t)),be(a,i,e,r)}}}function Ns(t,e,r){vr(oe(t.u)),Sr(t,e,mr,2,!0).push(el(r))}function fl(t,e){return Error(`Invalid wire type: ${t} (at position ${e})`)}function za(){return Error("Failed to read varint, encoding is invalid.")}function hl(t,e){return Error(`Tried to read past the end of the data ${e} > ${t}`)}function Ha(t){if(typeof t=="string")return{buffer:Hc(t),O:!1};if(Array.isArray(t))return{buffer:new Uint8Array(t),O:!1};if(t.constructor===Uint8Array)return{buffer:t,O:!1};if(t.constructor===ArrayBuffer)return{buffer:new Uint8Array(t),O:!1};if(t.constructor===tr)return{buffer:ka(t)||new Uint8Array(0),O:!0};if(t instanceof Uint8Array)return{buffer:new Uint8Array(t.buffer,t.byteOffset,t.byteLength),O:!1};throw Error("Type not convertible to a Uint8Array, expected a Uint8Array, an ArrayBuffer, a base64 encoded string, a ByteString or an Array of numbers")}function Xa(t,e){let r,n=0,s=0,o=0,a=t.h,i=t.g;do r=a[i++],n|=(127&r)<<o,o+=7;while(o<32&&128&r);for(o>32&&(s|=(127&r)>>4),o=3;o<32&&128&r;o+=7)r=a[i++],s|=(127&r)<<o;if(Cr(t,i),r<128)return e(n>>>0,s>>>0);throw za()}function ja(t){let e=0,r=t.g,n=r+10,s=t.h;for(;r<n;){let o=s[r++];if(e|=o,(128&o)==0)return Cr(t,r),!!(127&e)}throw za()}function yr(t){let e=t.h,r=t.g,n=e[r++],s=127&n;if(128&n&&(n=e[r++],s|=(127&n)<<7,128&n&&(n=e[r++],s|=(127&n)<<14,128&n&&(n=e[r++],s|=(127&n)<<21,128&n&&(n=e[r++],s|=n<<28,128&n&&128&e[r++]&&128&e[r++]&&128&e[r++]&&128&e[r++]&&128&e[r++])))))throw za();return Cr(t,r),s}function sr(t){return yr(t)>>>0}function ua(t){var e=t.h;let r=t.g,n=e[r],s=e[r+1],o=e[r+2];return e=e[r+3],Cr(t,t.g+4),(n<<0|s<<8|o<<16|e<<24)>>>0}function ca(t){var e=ua(t);t=2*(e>>31)+1;let r=e>>>23&255;return e&=8388607,r==255?e?NaN:t*(1/0):r==0?1401298464324817e-60*t*e:t*Math.pow(2,r-150)*(e+8388608)}function wd(t){return yr(t)}function Yo(t,e,{ca:r=!1}={}){t.ca=r,e&&(e=Ha(e),t.h=e.buffer,t.m=e.O,t.j=0,t.l=t.h.length,t.g=t.j)}function Cr(t,e){if(t.g=e,e>t.l)throw hl(t.l,e)}function dl(t,e){if(e<0)throw Error(`Tried to read a negative byte length: ${e}`);let r=t.g,n=r+e;if(n>t.l)throw hl(e,t.l-r);return t.g=n,r}function ml(t,e){if(e==0)return Br();var r=dl(t,e);return t.ca&&t.m?r=t.h.subarray(r,r+e):(t=t.h,r=r===(e=r+e)?new Uint8Array(0):ld?t.slice(r,e):new Uint8Array(t.subarray(r,e))),r.length==0?Br():new tr(r,Xr)}wt.prototype.toJSON=void 0,wt.prototype.Ia=qc;var $u=[];function pl(t){var e=t.g;if(e.g==e.l)return!1;t.l=t.g.g;var r=sr(t.g);if(e=r>>>3,!((r&=7)>=0&&r<=5))throw fl(r,t.l);if(e<1)throw Error(`Invalid field number: ${e} (at position ${t.l})`);return t.m=e,t.h=r,!0}function ps(t){switch(t.h){case 0:t.h!=0?ps(t):ja(t.g);break;case 1:Cr(t=t.g,t.g+8);break;case 2:if(t.h!=2)ps(t);else{var e=sr(t.g);Cr(t=t.g,t.g+e)}break;case 5:Cr(t=t.g,t.g+4);break;case 3:for(e=t.m;;){if(!pl(t))throw Error("Unmatched start-group tag: stream EOF");if(t.h==4){if(t.m!=e)throw Error("Unmatched end-group tag");break}ps(t)}break;default:throw fl(t.h,t.l)}}function Xn(t,e,r){let n=t.g.l,s=sr(t.g),o=t.g.g+s,a=o-n;if(a<=0&&(t.g.l=o,r(e,t,void 0,void 0,void 0),a=o-t.g.g),a)throw Error(`Message parsing ended unexpectedly. Expected to read ${s} bytes, instead read ${s-a} bytes, either the data ended unexpectedly or the message misreported its own length`);return t.g.g=o,t.g.l=n,e}function Ya(t){var e=sr(t.g),r=dl(t=t.g,e);if(t=t.h,jh){var n,s=t;(n=Vo)||(n=Vo=new TextDecoder("utf-8",{fatal:!0})),e=r+e,s=r===0&&e===s.length?s:s.subarray(r,e);try{var o=n.decode(s)}catch(i){if(is===void 0){try{n.decode(new Uint8Array([128]))}catch{}try{n.decode(new Uint8Array([97])),is=!0}catch{is=!1}}throw!is&&(Vo=void 0),i}}else{e=(o=r)+e,r=[];let i,u=null;for(;o<e;){var a=t[o++];a<128?r.push(a):a<224?o>=e?Rr():(i=t[o++],a<194||(192&i)!=128?(o--,Rr()):r.push((31&a)<<6|63&i)):a<240?o>=e-1?Rr():(i=t[o++],(192&i)!=128||a===224&&i<160||a===237&&i>=160||(192&(n=t[o++]))!=128?(o--,Rr()):r.push((15&a)<<12|(63&i)<<6|63&n)):a<=244?o>=e-2?Rr():(i=t[o++],(192&i)!=128||i-144+(a<<28)>>30!=0||(192&(n=t[o++]))!=128||(192&(s=t[o++]))!=128?(o--,Rr()):(a=(7&a)<<18|(63&i)<<12|(63&n)<<6|63&s,a-=65536,r.push(55296+(a>>10&1023),56320+(1023&a)))):Rr(),r.length>=8192&&(u=Eu(u,r),r.length=0)}o=Eu(u,r)}return o}function gl(t){let e=sr(t.g);return ml(t.g,e)}function Gs(t,e,r){var n=sr(t.g);for(n=t.g.g+n;t.g.g<n;)r.push(e(t.g))}var ls=[],Rs;function Lt(t,e,r){e.g?e.m(t,e.g,e.h,r,!0):e.m(t,e.h,r,!0)}var M=class{constructor(t,e){this.u=sl(t,e)}toJSON(){return xl(this)}l(){var t=nm;return t.g?t.l(this,t.g,t.h,!0):t.l(this,t.h,t.defaultValue,!0)}clone(){let t=this.u;return Ma(this,t,oe(t),!1)}O(){return!!(2&Re(this.u))}};function xl(t){t=t.u,t=Rs?t:Ds(t,Da,void 0,void 0,!1);{var e=!Rs;let l=t.length;if(l){var r=t[l-1],n=Ra(r);n?l--:r=void 0;var s=t;if(n){e:{var o,a=r,i=!1;if(a)for(let c in a)isNaN(+c)?(o??(o={}))[c]=a[c]:(n=a[c],Array.isArray(n)&&(vs(n)||Fu(n)&&n.size===0)&&(n=null),n==null&&(i=!0),n!=null&&((o??(o={}))[c]=n));if(i||(o=a),o)for(let c in o){i=o;break e}i=null}a=i==null?r!=null:i!==r}for(;l>0&&((o=s[l-1])==null||vs(o)||Fu(o)&&o.size===0);l--)var u=!0;(s!==t||a||u)&&(e?(u||a||i)&&(s.length=l):s=Array.prototype.slice.call(s,0,l),i&&s.push(i)),u=s}else u=t}return u}function zu(t){return t?/^\d+$/.test(t)?(Ps(t),new la(ie,Te)):null:Td||(Td=new la(0,0))}M.prototype.X=Hn,M.prototype.toString=function(){try{return Rs=!0,xl(this).toString()}finally{Rs=!1}};var la=class{constructor(t,e){this.h=t>>>0,this.g=e>>>0}},Td;function Hu(t){return t?/^-?\d+$/.test(t)?(Ps(t),new fa(ie,Te)):null:kd||(kd=new fa(0,0))}var fa=class{constructor(t,e){this.h=t>>>0,this.g=e>>>0}},kd;function $r(t,e,r){for(;r>0||e>127;)t.g.push(127&e|128),e=(e>>>7|r<<25)>>>0,r>>>=7;t.g.push(e)}function on(t,e){for(;e>127;)t.g.push(127&e|128),e>>>=7;t.g.push(e)}function Vs(t,e){if(e>=0)on(t,e);else{for(let r=0;r<9;r++)t.g.push(127&e|128),e>>=7;t.g.push(1)}}function Vn(t,e){t.g.push(e>>>0&255),t.g.push(e>>>8&255),t.g.push(e>>>16&255),t.g.push(e>>>24&255)}function qr(t,e){e.length!==0&&(t.l.push(e),t.h+=e.length)}function ft(t,e,r){on(t.g,8*e+r)}function qa(t,e){return ft(t,e,2),e=t.g.end(),qr(t,e),e.push(t.h),e}function Ka(t,e){var r=e.pop();for(r=t.h+t.g.length()-r;r>127;)e.push(127&r|128),r>>>=7,t.h++;e.push(r),t.h++}function Ws(t,e,r){ft(t,e,2),on(t.g,r.length),qr(t,t.g.end()),qr(t,r)}function Is(t,e,r,n){r!=null&&(e=qa(t,e),n(r,t),Ka(t,e))}function Pt(){let t=class{constructor(){throw Error()}};return Object.setPrototypeOf(t,t.prototype),t}var Za=Pt(),yl=Pt(),Ja=Pt(),Qa=Pt(),_l=Pt(),bl=Pt(),ei=Pt(),vl=Pt(),wl=Pt(),an=class{constructor(t,e,r){this.g=t,this.h=e,t=Za,this.l=!!t&&r===t||!1}};function $s(t,e){return new an(t,e,Za)}function Tl(t,e,r,n,s){Is(t,r,Rl(e,n),s)}var Ed=$s(function(t,e,r,n,s){return t.h===2&&(Xn(t,$a(e,n,r),s),!0)},Tl),Ad=$s(function(t,e,r,n,s){return t.h===2&&(Xn(t,$a(e,n,r,!0),s),!0)},Tl),zs=Symbol(),ti=Symbol(),Xu=Symbol(),ju=Symbol(),kl,El;function Ur(t,e,r,n){var s=n[t];if(s)return s;(s={}).W=function(f){switch(typeof f){case"boolean":return nl||(nl=[0,void 0,!0]);case"number":return f>0?void 0:f===0?md||(md=[0,void 0]):[-f,void 0];case"string":return[0,f];case"object":return f}}(n[0]);var o=n[1];let a=1;o&&o.constructor===Object&&(s.ha=o,typeof(o=n[++a])=="function"&&(s.ma=!0,kl??(kl=o),El??(El=n[a+1]),o=n[a+=2]));let i={};for(;o&&Array.isArray(o)&&o.length&&typeof o[0]=="number"&&o[0]>0;){for(var u=0;u<o.length;u++)i[o[u]]=o;o=n[++a]}for(u=1;o!==void 0;){let f;typeof o=="number"&&(u+=o,o=n[++a]);var l=void 0;if(o instanceof an?f=o:(f=Ed,a--),f?.l){o=n[++a],l=n;var c=a;typeof o=="function"&&(o=o(),l[c]=o),l=o}for(c=u+1,typeof(o=n[++a])=="number"&&o<0&&(c-=o,o=n[++a]);u<c;u++){let m=i[u];l?r(s,u,f,l,m):e(s,u,f,m)}}return n[t]=s}function Al(t){return Array.isArray(t)?t[0]instanceof an?t:[Ad,t]:[t,void 0]}function Rl(t,e){return t instanceof M?t.u:Array.isArray(t)?pr(t,e,!1):void 0}function ri(t,e,r,n){let s=r.g;t[e]=n?(o,a,i)=>s(o,a,i,n):s}function ni(t,e,r,n,s){let o=r.g,a,i;t[e]=(u,l,c)=>o(u,l,c,i||(i=Ur(ti,ri,ni,n).W),a||(a=si(n)),s)}function si(t){let e=t[Xu];if(e!=null)return e;let r=Ur(ti,ri,ni,t);return e=r.ma?(n,s)=>kl(n,s,r):(n,s)=>{let o=oe(n);for(;pl(s)&&s.h!=4;){var a=s.m,i=r[a];if(i==null){var u=r.ha;u&&(u=u[a])&&(u=Rd(u))!=null&&(i=r[a]=u)}i!=null&&i(s,n,a)||(a=(i=s).l,ps(i),i.ga?i=void 0:(u=i.g.g-a,i.g.g=a,i=ml(i.g,u)),a=n,i&&(dr||(dr=Symbol()),(u=a[dr])?u.push(i):a[dr]=[i]))}return 16384&o&&tn(n),!0},t[Xu]=e}function Rd(t){let e=(t=Al(t))[0].g;if(t=t[1]){let r=si(t),n=Ur(ti,ri,ni,t).W;return(s,o,a)=>e(s,o,a,n,r)}return e}function Hs(t,e,r){t[e]=r.h}function Xs(t,e,r,n){let s,o,a=r.h;t[e]=(i,u,l)=>a(i,u,l,o||(o=Ur(zs,Hs,Xs,n).W),s||(s=Il(n)))}function Il(t){let e=t[ju];if(!e){let r=Ur(zs,Hs,Xs,t);e=(n,s)=>Sl(n,s,r),t[ju]=e}return e}function Sl(t,e,r){for(var n=Re(t),s=+!!(512&n)-1,o=t.length,a=512&n?1:0,i=o+(256&n?-1:0);a<i;a++){let u=t[a];if(u==null)continue;let l=a-s,c=Yu(r,l);c&&c(e,u,l)}if(256&n){n=t[o-1];for(let u in n)s=+u,Number.isNaN(s)||(o=n[s])!=null&&(i=Yu(r,s))&&i(e,o,s)}if(t=dr?t[dr]:void 0)for(qr(e,e.g.end()),r=0;r<t.length;r++)qr(e,ka(t[r])||new Uint8Array(0))}function Yu(t,e){var r=t[e];if(r)return r;if((r=t.ha)&&(r=r[e])){var n=(r=Al(r))[0].h;if(r=r[1]){let s=Il(r),o=Ur(zs,Hs,Xs,r).W;r=t.ma?El(o,s):(a,i,u)=>n(a,i,u,o,s)}else r=n;return t[e]=r}}function un(t,e){if(Array.isArray(e)){var r=Re(e);if(4&r)return e;for(var n=0,s=0;n<e.length;n++){let o=t(e[n]);o!=null&&(e[s++]=o)}return s<n&&(e.length=s),Be(e,-12289&(5|r)),2&r&&Object.freeze(e),e}}function Ke(t,e,r){return new an(t,e,r)}function cn(t,e,r){return new an(t,e,r)}function Ze(t,e,r){be(t,oe(t),e,r)}var Id=$s(function(t,e,r,n,s){return t.h===2&&(t=Xn(t,pr([void 0,void 0],n,!0),s),vr(n=oe(e)),(s=or(e,n,r))instanceof wt?(2&s.M)!=0?((s=s.Y()).push(t),be(e,n,r,s)):s.Na(t):Array.isArray(s)?(2&Re(s)&&be(e,n,r,s=il(s)),s.push(t)):be(e,n,r,[t]),!0)},function(t,e,r,n,s){if(e instanceof wt)e.forEach((o,a)=>{Is(t,r,pr([a,o],n,!1),s)});else if(Array.isArray(e))for(let o=0;o<e.length;o++){let a=e[o];Array.isArray(a)&&Is(t,r,pr(a,n,!1),s)}});function Cl(t,e,r){if(e=function(n){if(n==null)return n;let s=typeof n;if(s==="bigint")return String(BigInt.asIntN(64,n));if(Os(n)){if(s==="string")return La(n);if(s==="number")return Ua(n)}}(e),e!=null&&(typeof e=="string"&&Hu(e),e!=null))switch(ft(t,r,0),typeof e){case"number":t=t.g,jr(e),$r(t,ie,Te);break;case"bigint":r=BigInt.asUintN(64,e),r=new fa(Number(r&BigInt(4294967295)),Number(r>>BigInt(32))),$r(t.g,r.h,r.g);break;default:r=Hu(e),$r(t.g,r.h,r.g)}}function Fl(t,e,r){(e=rn(e))!=null&&e!=null&&(ft(t,r,0),Vs(t.g,e))}function Bl(t,e,r){(e=Jc(e))!=null&&(ft(t,r,0),t.g.g.push(e?1:0))}function Ul(t,e,r){(e=mr(e))!=null&&Ws(t,r,Gc(e))}function Ll(t,e,r,n,s){Is(t,r,Rl(e,n),s)}function Pl(t,e,r){(e=e==null||typeof e=="string"||$n(e)||e instanceof tr?e:void 0)!=null&&Ws(t,r,Ha(e).buffer)}function Ol(t,e,r){return(t.h===5||t.h===2)&&(e=sn(e,oe(e),r,!1,!1),t.h==2?Gs(t,ca,e):e.push(ca(t.g)),!0)}var Qt=Ke(function(t,e,r){if(t.h!==1)return!1;var n=t.g;t=ua(n);let s=ua(n);n=2*(s>>31)+1;let o=s>>>20&2047;return t=4294967296*(1048575&s)+t,Ze(e,r,o==2047?t?NaN:n*(1/0):o==0?5e-324*n*t:n*Math.pow(2,o-1075)*(t+4503599627370496)),!0},function(t,e,r){(e=wr(e))!=null&&(ft(t,r,1),t=t.g,(r=Zc||(Zc=new DataView(new ArrayBuffer(8)))).setFloat64(0,+e,!0),ie=r.getUint32(0,!0),Te=r.getUint32(4,!0),Vn(t,ie),Vn(t,Te))},Pt()),De=Ke(function(t,e,r){return t.h===5&&(Ze(e,r,ca(t.g)),!0)},function(t,e,r){(e=wr(e))!=null&&(ft(t,r,5),t=t.g,Sa(e),Vn(t,ie))},ei),Sd=cn(Ol,function(t,e,r){if((e=un(wr,e))!=null)for(let a=0;a<e.length;a++){var n=t,s=r,o=e[a];o!=null&&(ft(n,s,5),n=n.g,Sa(o),Vn(n,ie))}},ei),oi=cn(Ol,function(t,e,r){if((e=un(wr,e))!=null&&e.length){ft(t,r,2),on(t.g,4*e.length);for(let n=0;n<e.length;n++)r=t.g,Sa(e[n]),Vn(r,ie)}},ei),_r=Ke(function(t,e,r){return t.h===0&&(Ze(e,r,Xa(t.g,Fa)),!0)},Cl,bl),qo=Ke(function(t,e,r){return t.h===0&&(Ze(e,r,(t=Xa(t.g,Fa))===0?void 0:t),!0)},Cl,bl),Cd=Ke(function(t,e,r){return t.h===0&&(Ze(e,r,Xa(t.g,Ca)),!0)},function(t,e,r){if((e=hd(e))!=null&&(typeof e=="string"&&zu(e),e!=null))switch(ft(t,r,0),typeof e){case"number":t=t.g,jr(e),$r(t,ie,Te);break;case"bigint":r=BigInt.asUintN(64,e),r=new la(Number(r&BigInt(4294967295)),Number(r>>BigInt(32))),$r(t.g,r.h,r.g);break;default:r=zu(e),$r(t.g,r.h,r.g)}},Pt()),ke=Ke(function(t,e,r){return t.h===0&&(Ze(e,r,yr(t.g)),!0)},Fl,Qa),js=cn(function(t,e,r){return(t.h===0||t.h===2)&&(e=sn(e,oe(e),r,!1,!1),t.h==2?Gs(t,yr,e):e.push(yr(t.g)),!0)},function(t,e,r){if((e=un(rn,e))!=null&&e.length){r=qa(t,r);for(let n=0;n<e.length;n++)Vs(t.g,e[n]);Ka(t,r)}},Qa),Wr=Ke(function(t,e,r){return t.h===0&&(Ze(e,r,(t=yr(t.g))===0?void 0:t),!0)},Fl,Qa),_e=Ke(function(t,e,r){return t.h===0&&(Ze(e,r,ja(t.g)),!0)},Bl,yl),zr=Ke(function(t,e,r){return t.h===0&&(Ze(e,r,(t=ja(t.g))===!1?void 0:t),!0)},Bl,yl),He=cn(function(t,e,r){return t.h===2&&(t=Ya(t),sn(e,oe(e),r,!1).push(t),!0)},function(t,e,r){if((e=un(mr,e))!=null)for(let a=0;a<e.length;a++){var n=t,s=r,o=e[a];o!=null&&Ws(n,s,Gc(o))}},Ja),hr=Ke(function(t,e,r){return t.h===2&&(Ze(e,r,(t=Ya(t))===""?void 0:t),!0)},Ul,Ja),ne=Ke(function(t,e,r){return t.h===2&&(Ze(e,r,Ya(t)),!0)},Ul,Ja),Oe=function(t,e,r=Za){return new an(t,e,r)}(function(t,e,r,n,s){return t.h===2&&(n=pr(void 0,n,!0),sn(e,oe(e),r,!0).push(n),Xn(t,n,s),!0)},function(t,e,r,n,s){if(Array.isArray(e))for(let o=0;o<e.length;o++)Ll(t,e[o],r,n,s)}),se=$s(function(t,e,r,n,s,o){return t.h===2&&(ul(e,Re(e),o,r),Xn(t,e=$a(e,n,r),s),!0)},Ll),Dl=Ke(function(t,e,r){return t.h===2&&(Ze(e,r,gl(t)),!0)},Pl,vl),Fd=cn(function(t,e,r){return(t.h===0||t.h===2)&&(e=sn(e,oe(e),r,!1,!1),t.h==2?Gs(t,sr,e):e.push(sr(t.g)),!0)},function(t,e,r){if((e=un(Qc,e))!=null)for(let a=0;a<e.length;a++){var n=t,s=r,o=e[a];o!=null&&(ft(n,s,0),on(n.g,o))}},_l),Bd=Ke(function(t,e,r){return t.h===0&&(Ze(e,r,(t=sr(t.g))===0?void 0:t),!0)},function(t,e,r){(e=Qc(e))!=null&&e!=null&&(ft(t,r,0),on(t.g,e))},_l),Ut=Ke(function(t,e,r){return t.h===0&&(Ze(e,r,yr(t.g)),!0)},function(t,e,r){(e=rn(e))!=null&&(e=parseInt(e,10),ft(t,r,0),Vs(t.g,e))},wl),ha=class{constructor(e,r){this.h=e,this.g=r,this.l=Y,this.m=$,this.defaultValue=void 0}};function Ot(t,e){return new ha(t,e)}function Tr(t,e){return(r,n)=>{if(ls.length){let o=ls.pop();o.o(n),Yo(o.g,r,n),r=o}else r=new class{constructor(o,a){if($u.length){let i=$u.pop();Yo(i,o,a),o=i}else o=new class{constructor(i,u){this.h=null,this.m=!1,this.g=this.l=this.j=0,Yo(this,i,u)}clear(){this.h=null,this.m=!1,this.g=this.l=this.j=0,this.ca=!1}}(o,a);this.g=o,this.l=this.g.g,this.h=this.m=-1,this.o(a)}o({ga:o=!1}={}){this.ga=o}}(r,n);try{let o=new t,a=o.u;si(e)(a,r);var s=o}finally{r.g.clear(),r.m=-1,r.h=-1,ls.length<100&&ls.push(r)}return s}}function Ys(t){return function(){let e=new class{constructor(){this.l=[],this.h=0,this.g=new class{constructor(){this.g=[]}length(){return this.g.length}end(){let a=this.g;return this.g=[],a}}}};Sl(this.u,e,Ur(zs,Hs,Xs,t)),qr(e,e.g.end());let r=new Uint8Array(e.h),n=e.l,s=n.length,o=0;for(let a=0;a<s;a++){let i=n[a];r.set(i,o),o+=i.length}return e.l=[r],r}}var qu=class extends M{constructor(t){super(t)}},Ku=[0,hr,Ke(function(t,e,r){return t.h===2&&(Ze(e,r,(t=gl(t))===Br()?void 0:t),!0)},function(t,e,r){if(e!=null){if(e instanceof M){let n=e.Qa;return void(n&&(e=n(e),e!=null&&Ws(t,r,Ha(e).buffer)))}if(Array.isArray(e))return}Pl(t,e,r)},vl)],Ko,Zu=globalThis.trustedTypes;function Ju(t){Ko===void 0&&(Ko=function(){let r=null;if(!Zu)return r;try{let n=s=>s;r=Zu.createPolicy("goog#html",{createHTML:n,createScript:n,createScriptURL:n})}catch{}return r}());var e=Ko;return new class{constructor(r){this.g=r}toString(){return this.g+""}}(e?e.createScriptURL(t):t)}function Ud(t,...e){if(e.length===0)return Ju(t[0]);let r=t[0];for(let n=0;n<e.length;n++)r+=encodeURIComponent(e[n])+t[n+1];return Ju(r)}var Ml=[0,ke,Ut,_e,-1,js,Ut,-1],Ld=class extends M{constructor(){super()}},Nl=[0,_e,ne,_e,Ut,-1,cn(function(t,e,r){return(t.h===0||t.h===2)&&(e=sn(e,oe(e),r,!1,!1),t.h==2?Gs(t,wd,e):e.push(yr(t.g)),!0)},function(t,e,r){if((e=un(rn,e))!=null&&e.length){r=qa(t,r);for(let n=0;n<e.length;n++)Vs(t.g,e[n]);Ka(t,r)}},wl),ne,-1,[0,_e,-1],Ut,_e,-1],Gl=[0,ne,-2],Qu=class extends M{constructor(){super()}},Vl=[0],Wl=[0,ke,_e,1,_e,-3],lt=class extends M{constructor(t){super(t,2)}},Ue={};Ue[336783863]=[0,ne,_e,-1,ke,[0,[1,2,3,4,5,6,7],se,Vl,se,Nl,se,Gl,se,Wl,se,Ml,se,[0,ne,-2],se,[0,ne,Ut]],[0,ne],_e,[0,[1,3],[2,4],se,[0,js],-1,se,[0,He],-1,Oe,[0,ne,-1]],ne];var ec=[0,qo,-1,zr,-3,qo,js,hr,Wr,qo,-1,zr,Wr,zr,-2,hr];function ht(t,e){ia(t,2,nn(e),"")}function le(t,e){Ns(t,3,e)}function j(t,e){Ns(t,4,e)}var qe=class extends M{constructor(t){super(t,500)}o(t){return $(this,0,7,t)}},On=[-1,{}],tc=[0,ne,1,On],rc=[0,ne,He,On];function dt(t,e){Es(t,1,qe,e)}function ge(t,e){Ns(t,10,e)}function Z(t,e){Ns(t,15,e)}var nt=class extends M{constructor(t){super(t,500)}o(t){return $(this,0,1001,t)}},$l=[-500,Oe,[-500,hr,-1,He,-3,[-2,Ue,_e],Oe,Ku,Wr,-1,tc,rc,Oe,[0,hr,zr],hr,ec,Wr,He,987,He],4,Oe,[-500,ne,-1,[-1,{}],998,ne],Oe,[-500,ne,He,-1,[-2,{},_e],997,He,-1],Wr,Oe,[-500,ne,He,On,998,He],He,Wr,tc,rc,Oe,[0,hr,-1,On],He,-2,ec,hr,-1,zr,[0,zr,Bd],978,On,Oe,Ku];nt.prototype.g=Ys($l);var Pd=Tr(nt,$l),Od=class extends M{constructor(t){super(t)}},zl=class extends M{constructor(t){super(t)}g(){return nr(this,Od,1)}},Hl=[0,Oe,[0,ke,De,ne,-1]],qs=Tr(zl,Hl),Dd=class extends M{constructor(t){super(t)}},Md=class extends M{constructor(t){super(t)}},Zo=class extends M{constructor(t){super(t)}h(){return Y(this,Dd,2)}g(){return nr(this,Md,5)}},Xl=Tr(class extends M{constructor(t){super(t)}},[0,He,js,oi,[0,Ut,[0,ke,-3],[0,De,-3],[0,ke,-1,[0,Oe,[0,ke,-2]]],Oe,[0,De,-1,ne,De]],ne,-1,_r,Oe,[0,ke,De],He,_r]),jl=class extends M{constructor(t){super(t)}},Hr=Tr(class extends M{constructor(t){super(t)}},[0,Oe,[0,De,-4]]),Yl=class extends M{constructor(t){super(t)}},jn=Tr(class extends M{constructor(t){super(t)}},[0,Oe,[0,De,-4]]),Nd=class extends M{constructor(t){super(t)}},Gd=[0,ke,-1,oi,Ut],ql=class extends M{constructor(){super()}};ql.prototype.g=Ys([0,De,-4,_r]);var Vd=class extends M{constructor(t){super(t)}},Wd=Tr(class extends M{constructor(t){super(t)}},[0,Oe,[0,1,ke,ne,Hl],_r]),nc=class extends M{constructor(t){super(t)}},$d=class extends M{constructor(t){super(t)}pa(){let t=al(this);return t??Br()}},zd=class extends M{constructor(t){super(t)}},Kl=[1,2],Hd=Tr(class extends M{constructor(t){super(t)}},[0,Oe,[0,Kl,se,[0,oi],se,[0,Dl],ke,ne],_r]),ai=class extends M{constructor(t){super(t)}},Zl=[0,ne,ke,De,He,-1],sc=class extends M{constructor(t){super(t)}},Xd=[0,_e,-1],oc=class extends M{constructor(t){super(t)}},gs=[1,2,3,4,5],Ss=class extends M{constructor(t){super(t)}g(){return al(this)!=null}h(){return mr(xr(this,2))!=null}},ye=class extends M{constructor(t){super(t)}g(){return Jc(xr(this,2))??!1}},Jl=[0,Dl,ne,[0,ke,_r,-1],[0,Cd,_r]],Ie=[0,Jl,_e,[0,gs,se,Wl,se,Nl,se,Ml,se,Vl,se,Gl],Ut],Ks=class extends M{constructor(t){super(t)}},ii=[0,Ie,De,-1,ke],jd=Ot(502141897,Ks);Ue[502141897]=ii;var Yd=Tr(class extends M{constructor(t){super(t)}},[0,[0,Ut,-1,Sd,Fd],Gd]),Ql=class extends M{constructor(t){super(t)}},ef=class extends M{constructor(t){super(t)}},ui=[0,Ie,De,[0,Ie],_e],tf=[0,Ie,ii,ui,De,[0,[0,Jl]]],qd=Ot(508968150,ef);Ue[508968150]=tf,Ue[508968149]=ui;var rf=class extends M{constructor(t){super(t)}},Kd=Ot(513916220,rf);Ue[513916220]=[0,Ie,tf,ke];var Gr=class extends M{constructor(t){super(t)}h(){return Y(this,ai,2)}g(){ce(this,2)}},nf=[0,Ie,Zl];Ue[478825465]=nf;var Zd=class extends M{constructor(t){super(t)}},sf=class extends M{constructor(t){super(t)}},ci=class extends M{constructor(t){super(t)}},li=class extends M{constructor(t){super(t)}},of=class extends M{constructor(t){super(t)}},ac=[0,Ie,[0,Ie],nf,-1],af=[0,Ie,De,ke],fi=[0,Ie,De],uf=[0,Ie,af,fi,De],Jd=Ot(479097054,of);Ue[479097054]=[0,Ie,uf,ac],Ue[463370452]=ac,Ue[464864288]=af;var Qd=Ot(462713202,li);Ue[462713202]=uf,Ue[474472470]=fi;var em=class extends M{constructor(t){super(t)}},cf=class extends M{constructor(t){super(t)}},lf=class extends M{constructor(t){super(t)}},ff=class extends M{constructor(){super()}},hi=[0,Ie,De,-1,ke],da=[0,Ie,De,_e];ff.prototype.g=Ys([0,Ie,fi,[0,Ie],ii,ui,hi,da]);var hf=class extends M{constructor(t){super(t)}},tm=Ot(456383383,hf);Ue[456383383]=[0,Ie,Zl];var df=class extends M{constructor(t){super(t)}},rm=Ot(476348187,df);Ue[476348187]=[0,Ie,Xd];var mf=class extends M{constructor(t){super(t)}},ic=class extends M{constructor(t){super(t)}},pf=[0,Ut,-1],nm=Ot(458105876,class extends M{constructor(t){super(t)}g(){var t=this.u;let e=oe(t),r=2&e;return t=function(n,s,o){var a=ic;let i=2&s,u=!1;if(o==null){if(i)return Vu();o=[]}else if(o.constructor===wt){if((2&o.M)==0||i)return o;o=o.Y()}else Array.isArray(o)?u=!!(2&Re(o)):o=[];if(i){if(!o.length)return Vu();u||(u=!0,tn(o))}else u&&(u=!1,o=il(o));return u||(64&Re(o)?na(o,32):32&s&&Bs(o,32)),be(n,s,2,a=new wt(o,a,dd,void 0)),a}(t,e,or(t,e,2)),!r&&ic&&(t.sa=!0),t}});Ue[458105876]=[0,pf,Id,[!0,_r,[0,ne,-1,He]]];var di=class extends M{constructor(t){super(t)}},gf=Ot(458105758,di);Ue[458105758]=[0,Ie,ne,pf];var xf=class extends M{constructor(t){super(t)}},sm=Ot(443442058,xf);Ue[443442058]=[0,Ie,ne,ke,De,He,-1],Ue[514774813]=hi;var yf=class extends M{constructor(t){super(t)}},om=Ot(516587230,yf);function ma(t,e){return e=e?e.clone():new ai,t.displayNamesLocale!==void 0?ce(e,1,nn(t.displayNamesLocale)):t.displayNamesLocale===void 0&&ce(e,1),t.maxResults!==void 0?jt(e,2,t.maxResults):"maxResults"in t&&ce(e,2),t.scoreThreshold!==void 0?G(e,3,t.scoreThreshold):"scoreThreshold"in t&&ce(e,3),t.categoryAllowlist!==void 0?As(e,4,t.categoryAllowlist):"categoryAllowlist"in t&&ce(e,4),t.categoryDenylist!==void 0?As(e,5,t.categoryDenylist):"categoryDenylist"in t&&ce(e,5),e}function mi(t,e=-1,r=""){return{categories:t.map(n=>({index:Bt(vt(n,1),0)??-1,score:Ae(n,2)??0,categoryName:Xt(n,3)??"",displayName:Xt(n,4)??""})),headIndex:e,headName:r}}function _f(t){var e=Sr(t,3,wr,Ir()),r=Sr(t,2,rn,Ir()),n=Sr(t,1,mr,Ir()),s=Sr(t,9,mr,Ir());let o={categories:[],keypoints:[]};for(let a=0;a<e.length;a++)o.categories.push({score:e[a],index:r[a]??-1,categoryName:n[a]??"",displayName:s[a]??""});if((e=Y(t,Zo,4)?.h())&&(o.boundingBox={originX:vt(e,1)??0,originY:vt(e,2)??0,width:vt(e,3)??0,height:vt(e,4)??0,angle:0}),Y(t,Zo,4)?.g().length)for(let a of Y(t,Zo,4).g())o.keypoints.push({x:ms(a,1)??0,y:ms(a,2)??0,score:ms(a,4)??0,label:mr(xr(a,3))??""});return o}function Zs(t){let e=[];for(let r of nr(t,Yl,1))e.push({x:Ae(r,1)??0,y:Ae(r,2)??0,z:Ae(r,3)??0,visibility:Ae(r,4)??0});return e}function Dn(t){let e=[];for(let r of nr(t,jl,1))e.push({x:Ae(r,1)??0,y:Ae(r,2)??0,z:Ae(r,3)??0,visibility:Ae(r,4)??0});return e}function uc(t){return Array.from(t,e=>e>127?e-256:e)}function cc(t,e){if(t.length!==e.length)throw Error(`Cannot compute cosine similarity between embeddings of different sizes (${t.length} vs. ${e.length}).`);let r=0,n=0,s=0;for(let o=0;o<t.length;o++)r+=t[o]*e[o],n+=t[o]*t[o],s+=e[o]*e[o];if(n<=0||s<=0)throw Error("Cannot compute cosine similarity on embedding with 0 norm.");return r/Math.sqrt(n*s)}var fs;Ue[516587230]=[0,Ie,hi,da,De],Ue[518928384]=da;var am=new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11]);async function bf(){if(fs===void 0)try{await WebAssembly.instantiate(am),fs=!0}catch{fs=!1}return fs}async function Cn(t,e=Ud``){let r=await bf()?"wasm_internal":"wasm_nosimd_internal";return{wasmLoaderPath:`${e}/${t}_${r}.js`,wasmBinaryPath:`${e}/${t}_${r}.wasm`}}var lr=class{};function vf(){var t=navigator;return typeof OffscreenCanvas<"u"&&(!function(e=navigator){return(e=e.userAgent).includes("Safari")&&!e.includes("Chrome")}(t)||!!((t=t.userAgent.match(/Version\/([\d]+).*Safari/))&&t.length>=1&&Number(t[1])>=17))}async function lc(t){if(typeof importScripts!="function"){let e=document.createElement("script");return e.src=t.toString(),e.crossOrigin="anonymous",new Promise((r,n)=>{e.addEventListener("load",()=>{r()},!1),e.addEventListener("error",s=>{n(s)},!1),document.body.appendChild(e)})}importScripts(t.toString())}function wf(t){return t.videoWidth!==void 0?[t.videoWidth,t.videoHeight]:t.naturalWidth!==void 0?[t.naturalWidth,t.naturalHeight]:t.displayWidth!==void 0?[t.displayWidth,t.displayHeight]:[t.width,t.height]}function W(t,e,r){t.m||console.error("No wasm multistream support detected: ensure dependency inclusion of :gl_graph_runner_internal_multi_input target"),r(e=t.i.stringToNewUTF8(e)),t.i._free(e)}function fc(t,e,r){if(!t.i.canvas)throw Error("No OpenGL canvas configured.");if(r?t.i._bindTextureToStream(r):t.i._bindTextureToCanvas(),!(r=t.i.canvas.getContext("webgl2")||t.i.canvas.getContext("webgl")))throw Error("Failed to obtain WebGL context from the provided canvas. `getContext()` should only be invoked with `webgl` or `webgl2`.");t.i.gpuOriginForWebTexturesIsBottomLeft&&r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,!0),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,r.RGBA,r.UNSIGNED_BYTE,e),t.i.gpuOriginForWebTexturesIsBottomLeft&&r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,!1);let[n,s]=wf(e);return!t.l||n===t.i.canvas.width&&s===t.i.canvas.height||(t.i.canvas.width=n,t.i.canvas.height=s),[n,s]}function hc(t,e,r){t.m||console.error("No wasm multistream support detected: ensure dependency inclusion of :gl_graph_runner_internal_multi_input target");let n=new Uint32Array(e.length);for(let s=0;s<e.length;s++)n[s]=t.i.stringToNewUTF8(e[s]);e=t.i._malloc(4*n.length),t.i.HEAPU32.set(n,e>>2),r(e);for(let s of n)t.i._free(s);t.i._free(e)}function Wt(t,e,r){t.i.simpleListeners=t.i.simpleListeners||{},t.i.simpleListeners[e]=r}function cr(t,e,r){let n=[];t.i.simpleListeners=t.i.simpleListeners||{},t.i.simpleListeners[e]=(s,o,a)=>{o?(r(n,a),n=[]):n.push(s)}}lr.forVisionTasks=function(t){return Cn("vision",t)},lr.forTextTasks=function(t){return Cn("text",t)},lr.forGenAiExperimentalTasks=function(t){return Cn("genai_experimental",t)},lr.forGenAiTasks=function(t){return Cn("genai",t)},lr.forAudioTasks=function(t){return Cn("audio",t)},lr.isSimdSupported=function(){return bf()};async function im(t,e,r,n){return t=await(async(s,o,a,i,u)=>{if(o&&await lc(o),!self.ModuleFactory||a&&(await lc(a),!self.ModuleFactory))throw Error("ModuleFactory not set.");return self.Module&&u&&((o=self.Module).locateFile=u.locateFile,u.mainScriptUrlOrBlob&&(o.mainScriptUrlOrBlob=u.mainScriptUrlOrBlob)),u=await self.ModuleFactory(self.Module||u),self.ModuleFactory=self.Module=void 0,new s(u,i)})(t,r.wasmLoaderPath,r.assetLoaderPath,e,{locateFile:s=>s.endsWith(".wasm")?r.wasmBinaryPath.toString():r.assetBinaryPath&&s.endsWith(".data")?r.assetBinaryPath.toString():s}),await t.o(n),t}function Jo(t,e){let r=Y(t.baseOptions,Ss,1)||new Ss;typeof e=="string"?(ce(r,2,nn(e)),ce(r,1)):e instanceof Uint8Array&&(ce(r,1,Ia(e,!1)),ce(r,2)),$(t.baseOptions,0,1,r)}function dc(t){try{let e=t.H.length;if(e===1)throw Error(t.H[0].message);if(e>1)throw Error("Encountered multiple errors: "+t.H.map(r=>r.message).join(", "))}finally{t.H=[]}}function D(t,e){t.B=Math.max(t.B,e)}function Js(t,e){t.A=new qe,ht(t.A,"PassThroughCalculator"),le(t.A,"free_memory"),j(t.A,"free_memory_unused_out"),ge(e,"free_memory"),dt(e,t.A)}function Kr(t,e){le(t.A,e),j(t.A,e+"_unused_out")}function Qs(t){t.g.addBoolToStream(!0,"free_memory",t.B)}var xs=class{constructor(t){this.g=t,this.H=[],this.B=0,this.g.setAutoRenderToScreen(!1)}l(t,e=!0){if(e){let r=t.baseOptions||{};if(t.baseOptions?.modelAssetBuffer&&t.baseOptions?.modelAssetPath)throw Error("Cannot set both baseOptions.modelAssetPath and baseOptions.modelAssetBuffer");if(!(Y(this.baseOptions,Ss,1)?.g()||Y(this.baseOptions,Ss,1)?.h()||t.baseOptions?.modelAssetBuffer||t.baseOptions?.modelAssetPath))throw Error("Either baseOptions.modelAssetPath or baseOptions.modelAssetBuffer must be set");if(function(n,s){let o=Y(n.baseOptions,oc,3);if(!o){var a=o=new oc,i=new Qu;Pn(a,4,gs,i)}"delegate"in s&&(s.delegate==="GPU"?(s=o,a=new Ld,Pn(s,2,gs,a)):(s=o,a=new Qu,Pn(s,4,gs,a))),$(n.baseOptions,0,3,o)}(this,r),r.modelAssetPath)return fetch(r.modelAssetPath.toString()).then(n=>{if(n.ok)return n.arrayBuffer();throw Error(`Failed to fetch model: ${r.modelAssetPath} (${n.status})`)}).then(n=>{try{this.g.i.FS_unlink("/model.dat")}catch{}this.g.i.FS_createDataFile("/","model.dat",new Uint8Array(n),!0,!1,!1),Jo(this,"/model.dat"),this.m(),this.J()});if(r.modelAssetBuffer instanceof Uint8Array)Jo(this,r.modelAssetBuffer);else if(r.modelAssetBuffer)return async function(n){let s=[];for(var o=0;;){let{done:a,value:i}=await n.read();if(a)break;s.push(i),o+=i.length}if(s.length===0)return new Uint8Array(0);if(s.length===1)return s[0];n=new Uint8Array(o),o=0;for(let a of s)n.set(a,o),o+=a.length;return n}(r.modelAssetBuffer).then(n=>{Jo(this,n),this.m(),this.J()})}return this.m(),this.J(),Promise.resolve()}J(){}ea(){let t;if(this.g.ea(e=>{t=Pd(e)}),!t)throw Error("Failed to retrieve CalculatorGraphConfig");return t}setGraph(t,e){this.g.attachErrorListener((r,n)=>{this.H.push(Error(n))}),this.g.La(),this.g.setGraph(t,e),this.A=void 0,dc(this)}finishProcessing(){this.g.finishProcessing(),dc(this)}close(){this.A=void 0,this.g.closeGraph()}};function Ye(t,e){if(!t)throw Error(`Unable to obtain required WebGL resource: ${e}`);return t}xs.prototype.close=xs.prototype.close,Nc("TaskRunner",xs);var pa=class{constructor(e,r,n,s){this.g=e,this.h=r,this.m=n,this.l=s}bind(){this.g.bindVertexArray(this.h)}close(){this.g.deleteVertexArray(this.h),this.g.deleteBuffer(this.m),this.g.deleteBuffer(this.l)}};function mc(t,e,r){let n=t.g;if(r=Ye(n.createShader(r),"Failed to create WebGL shader"),n.shaderSource(r,e),n.compileShader(r),!n.getShaderParameter(r,n.COMPILE_STATUS))throw Error(`Could not compile WebGL shader: ${n.getShaderInfoLog(r)}`);return n.attachShader(t.h,r),r}function pc(t,e){let r=t.g,n=Ye(r.createVertexArray(),"Failed to create vertex array");r.bindVertexArray(n);let s=Ye(r.createBuffer(),"Failed to create buffer");r.bindBuffer(r.ARRAY_BUFFER,s),r.enableVertexAttribArray(t.P),r.vertexAttribPointer(t.P,2,r.FLOAT,!1,0,0),r.bufferData(r.ARRAY_BUFFER,new Float32Array([-1,-1,-1,1,1,1,1,-1]),r.STATIC_DRAW);let o=Ye(r.createBuffer(),"Failed to create buffer");return r.bindBuffer(r.ARRAY_BUFFER,o),r.enableVertexAttribArray(t.J),r.vertexAttribPointer(t.J,2,r.FLOAT,!1,0,0),r.bufferData(r.ARRAY_BUFFER,new Float32Array(e?[0,1,0,0,1,0,1,1]:[0,0,0,1,1,1,1,0]),r.STATIC_DRAW),r.bindBuffer(r.ARRAY_BUFFER,null),r.bindVertexArray(null),new pa(r,n,s,o)}function pi(t,e){if(t.g){if(e!==t.g)throw Error("Cannot change GL context once initialized")}else t.g=e}function Yn(t,e,r,n){return pi(t,e),t.h||(t.m(),t.C()),r?(t.s||(t.s=pc(t,!0)),r=t.s):(t.v||(t.v=pc(t,!1)),r=t.v),e.useProgram(t.h),r.bind(),t.l(),t=n(),r.g.bindVertexArray(null),t}function br(t,e,r){return pi(t,e),t=Ye(e.createTexture(),"Failed to create texture"),e.bindTexture(e.TEXTURE_2D,t),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,r??e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,r??e.LINEAR),e.bindTexture(e.TEXTURE_2D,null),t}function eo(t,e,r){pi(t,e),t.A||(t.A=Ye(e.createFramebuffer(),"Failed to create framebuffe.")),e.bindFramebuffer(e.FRAMEBUFFER,t.A),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,r,0)}function gi(t){t.g?.bindFramebuffer(t.g.FRAMEBUFFER,null)}var ln=class{H(){return`
1
+ var Br=typeof self<"u"?self:{};function Gc(t,e){t=t.split(".");var r,n=Br;for((t[0]in n)||n.execScript===void 0||n.execScript("var "+t[0]);t.length&&(r=t.shift());)t.length||e===void 0?n=n[r]&&n[r]!==Object.prototype[r]?n[r]:n[r]={}:n[r]=e}function Ir(){throw Error("Invalid UTF8")}function Au(t,e){return e=String.fromCharCode.apply(null,e),t==null?e:t+e}var is,zo,Yh=typeof TextDecoder<"u",qh,Kh=typeof TextEncoder<"u";function Vc(t){if(Kh)t=(qh||(qh=new TextEncoder)).encode(t);else{let r=0,n=new Uint8Array(3*t.length);for(let s=0;s<t.length;s++){var e=t.charCodeAt(s);if(e<128)n[r++]=e;else{if(e<2048)n[r++]=e>>6|192;else{if(e>=55296&&e<=57343){if(e<=56319&&s<t.length){let o=t.charCodeAt(++s);if(o>=56320&&o<=57343){e=1024*(e-55296)+o-56320+65536,n[r++]=e>>18|240,n[r++]=e>>12&63|128,n[r++]=e>>6&63|128,n[r++]=63&e|128;continue}s--}e=65533}n[r++]=e>>12|224,n[r++]=e>>6&63|128}n[r++]=63&e|128}}t=r===n.length?n:n.subarray(0,r)}return t}var Ea,bs;e:{for(Ho=["CLOSURE_FLAGS"],us=Br,cs=0;cs<Ho.length;cs++)if((us=us[Ho[cs]])==null){bs=null;break e}bs=us}var Ho,us,cs,Mn,Ru=bs&&bs[610401301];Ea=Ru!=null&&Ru;var Iu=Br.navigator;function sa(t){return!!Ea&&!!Mn&&Mn.brands.some(({brand:e})=>e&&e.indexOf(t)!=-1)}function vt(t){var e;return(e=Br.navigator)&&(e=e.userAgent)||(e=""),e.indexOf(t)!=-1}function hr(){return!!Ea&&!!Mn&&Mn.brands.length>0}function Xo(){return hr()?sa("Chromium"):(vt("Chrome")||vt("CriOS"))&&!(!hr()&&vt("Edge"))||vt("Silk")}function Aa(t){return Aa[" "](t),t}Mn=Iu&&Iu.userAgentData||null,Aa[" "]=function(){};var Zh=!hr()&&(vt("Trident")||vt("MSIE"));!vt("Android")||Xo(),Xo(),vt("Safari")&&(Xo()||!hr()&&vt("Coast")||!hr()&&vt("Opera")||!hr()&&vt("Edge")||(hr()?sa("Microsoft Edge"):vt("Edg/"))||hr()&&sa("Opera"));var Wc={},Bn=null;function Jh(t){let e=t.length,r=3*e/4;r%3?r=Math.floor(r):"=.".indexOf(t[e-1])!=-1&&(r="=.".indexOf(t[e-2])!=-1?r-2:r-1);let n=new Uint8Array(r),s=0;return function(o,a){function i(l){for(;u<o.length;){let c=o.charAt(u++),f=Bn[c];if(f!=null)return f;if(!/^[\s\xa0]*$/.test(c))throw Error("Unknown base64 encoding at char: "+c)}return l}$c();let u=0;for(;;){let l=i(-1),c=i(0),f=i(64),d=i(64);if(d===64&&l===-1)break;a(l<<2|c>>4),f!=64&&(a(c<<4&240|f>>2),d!=64&&a(f<<6&192|d))}}(t,function(o){n[s++]=o}),s!==r?n.subarray(0,s):n}function $c(){if(!Bn){Bn={};var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split(""),e=["+/=","+/","-_=","-_.","-_"];for(let r=0;r<5;r++){let n=t.concat(e[r].split(""));Wc[r]=n;for(let s=0;s<n.length;s++){let o=n[s];Bn[o]===void 0&&(Bn[o]=s)}}}}var zc=typeof Uint8Array<"u",Hc=!Zh&&typeof btoa=="function";function Su(t){if(!Hc){var e;e===void 0&&(e=0),$c(),e=Wc[e];var r=Array(Math.floor(t.length/3)),n=e[64]||"";let u=0,l=0;for(;u<t.length-2;u+=3){var s=t[u],o=t[u+1],a=t[u+2],i=e[s>>2];s=e[(3&s)<<4|o>>4],o=e[(15&o)<<2|a>>6],a=e[63&a],r[l++]=i+s+o+a}switch(i=0,a=n,t.length-u){case 2:a=e[(15&(i=t[u+1]))<<2]||n;case 1:t=t[u],r[l]=e[t>>2]+e[(3&t)<<4|i>>4]+a+n}return r.join("")}for(e="",r=0,n=t.length-10240;r<n;)e+=String.fromCharCode.apply(null,t.subarray(r,r+=10240));return e+=String.fromCharCode.apply(null,r?t.subarray(r):t),btoa(e)}var Fu=/[-_.]/g,Qh={"-":"+",_:"/",".":"="};function ed(t){return Qh[t]||""}function Xc(t){if(!Hc)return Jh(t);Fu.test(t)&&(t=t.replace(Fu,ed)),t=atob(t);let e=new Uint8Array(t.length);for(let r=0;r<t.length;r++)e[r]=t.charCodeAt(r);return e}function $n(t){return zc&&t!=null&&t instanceof Uint8Array}var qr={};function Ur(){return td||(td=new rr(null,qr))}function Ra(t){jc(qr);var e=t.g;return(e=e==null||$n(e)?e:typeof e=="string"?Xc(e):null)==null?e:t.g=e}var rr=class{h(){return new Uint8Array(Ra(this)||0)}constructor(t,e){if(jc(e),this.g=t,t!=null&&t.length===0)throw Error("ByteString should be constructed with non-empty values")}},td,rd;function jc(t){if(t!==qr)throw Error("illegal external caller")}function Yc(t,e){t.__closure__error__context__984382||(t.__closure__error__context__984382={}),t.__closure__error__context__984382.severity=e}function qc(){let t=Error();Yc(t,"incident"),function(e){Br.setTimeout(()=>{throw e},0)}(t)}function oa(t){return Yc(t=Error(t),"warning"),t}function Ia(){return typeof BigInt=="function"}function ct(t){return Array.prototype.slice.call(t)}var nn=typeof Symbol=="function"&&typeof Symbol()=="symbol";function Cs(t){return typeof Symbol=="function"&&typeof Symbol()=="symbol"?Symbol():t}var zn=Cs(),Cu=Cs("0di"),jo=Cs("2ex"),Rn=Cs("1oa"),Bs=nn?(t,e)=>{t[zn]|=e}:(t,e)=>{t.G!==void 0?t.G|=e:Object.defineProperties(t,{G:{value:e,configurable:!0,writable:!0,enumerable:!1}})},aa=nn?(t,e)=>{t[zn]&=~e}:(t,e)=>{t.G!==void 0&&(t.G&=~e)},Fe=nn?t=>0|t[zn]:t=>0|t.G,oe=nn?t=>t[zn]:t=>t.G,Le=nn?(t,e)=>{t[zn]=e}:(t,e)=>{t.G!==void 0?t.G=e:Object.defineProperties(t,{G:{value:e,configurable:!0,writable:!0,enumerable:!1}})};function sn(t){return Bs(t,34),t}function nd(t,e){Le(e,-30975&(0|t))}function ia(t,e){Le(e,-30941&(34|t))}var Sa,Hn={},Kc={};function Bu(t){return!(!t||typeof t!="object"||t.Ia!==Kc)}function Fa(t){return t!==null&&typeof t=="object"&&!Array.isArray(t)&&t.constructor===Object}function Ca(t,e){if(t!=null){if(typeof t=="string")t=t?new rr(t,qr):Ur();else if(t.constructor!==rr)if($n(t))t=t.length?new rr(new Uint8Array(t),qr):Ur();else{if(!e)throw Error();t=void 0}}return t}function vs(t){return!(!Array.isArray(t)||t.length)&&!!(1&Fe(t))}var Uu=[];function wr(t){if(2&t)throw Error()}Le(Uu,55),Sa=Object.freeze(Uu);var ws=class t{constructor(e,r,n){this.l=0,this.g=e,this.h=r,this.m=n}next(){if(this.l<this.g.length){let e=this.g[this.l++];return{done:!1,value:this.h?this.h.call(this.m,e):e}}return{done:!0,value:void 0}}[Symbol.iterator](){return new t(this.g,this.h,this.m)}},mr;function Zc(t,e){(e=mr?e[mr]:void 0)&&(t[mr]=ct(e))}var sd=Object.freeze({});function Us(t){return t.Pa=!0,t}var od=Us(t=>typeof t=="number"),Lu=Us(t=>typeof t=="string"),ad=Us(t=>typeof t=="boolean"),Ls=typeof Br.BigInt=="function"&&typeof Br.BigInt(0)=="bigint",ua=Us(t=>Ls?t>=ud&&t<=ld:t[0]==="-"?Pu(t,id):Pu(t,cd)),id=Number.MIN_SAFE_INTEGER.toString(),ud=Ls?BigInt(Number.MIN_SAFE_INTEGER):void 0,cd=Number.MAX_SAFE_INTEGER.toString(),ld=Ls?BigInt(Number.MAX_SAFE_INTEGER):void 0;function Pu(t,e){if(t.length>e.length)return!1;if(t.length<e.length||t===e)return!0;for(let r=0;r<t.length;r++){let n=t[r],s=e[r];if(n>s)return!1;if(n<s)return!0}}var fd=typeof Uint8Array.prototype.slice=="function",Jc,ie=0,Te=0;function Ou(t){let e=t>>>0;ie=e,Te=(t-e)/4294967296>>>0}function Kr(t){if(t<0){Ou(-t);let[e,r]=Pa(ie,Te);ie=e>>>0,Te=r>>>0}else Ou(t)}function Ba(t){let e=Jc||(Jc=new DataView(new ArrayBuffer(8)));e.setFloat32(0,+t,!0),Te=0,ie=e.getUint32(0,!0)}function Ua(t,e){let r=4294967296*e+(t>>>0);return Number.isSafeInteger(r)?r:Nn(t,e)}function La(t,e){let r=2147483648&e;return r&&(e=~e>>>0,(t=1+~t>>>0)==0&&(e=e+1>>>0)),typeof(t=Ua(t,e))=="number"?r?-t:t:r?"-"+t:t}function Nn(t,e){if(t>>>=0,(e>>>=0)<=2097151)var r=""+(4294967296*e+t);else Ia()?r=""+(BigInt(e)<<BigInt(32)|BigInt(t)):(t=(16777215&t)+6777216*(r=16777215&(t>>>24|e<<8))+6710656*(e=e>>16&65535),r+=8147497*e,e*=2,t>=1e7&&(r+=t/1e7>>>0,t%=1e7),r>=1e7&&(e+=r/1e7>>>0,r%=1e7),r=e+Du(r)+Du(t));return r}function Du(t){return t=String(t),"0000000".slice(t.length)+t}function Ps(t){if(t.length<16)Kr(Number(t));else if(Ia())t=BigInt(t),ie=Number(t&BigInt(4294967295))>>>0,Te=Number(t>>BigInt(32)&BigInt(4294967295));else{let e=+(t[0]==="-");Te=ie=0;let r=t.length;for(let n=e,s=(r-e)%6+e;s<=r;n=s,s+=6){let o=Number(t.slice(n,s));Te*=1e6,ie=1e6*ie+o,ie>=4294967296&&(Te+=Math.trunc(ie/4294967296),Te>>>=0,ie>>>=0)}if(e){let[n,s]=Pa(ie,Te);ie=n,Te=s}}}function Pa(t,e){return e=~e,t?t=1+~t:e+=1,[t,e]}function Tr(t){return t==null||typeof t=="number"?t:t==="NaN"||t==="Infinity"||t==="-Infinity"?Number(t):void 0}function Qc(t){return t==null||typeof t=="boolean"?t:typeof t=="number"?!!t:void 0}var hd=/^-?([1-9][0-9]*|0)(\.[0-9]+)?$/;function Os(t){let e=typeof t;switch(e){case"bigint":return!0;case"number":return Number.isFinite(t)}return e==="string"&&hd.test(t)}function on(t){if(t==null)return t;if(typeof t=="string"){if(!t)return;t=+t}return typeof t=="number"&&Number.isFinite(t)?0|t:void 0}function el(t){if(t==null)return t;if(typeof t=="string"){if(!t)return;t=+t}return typeof t=="number"&&Number.isFinite(t)?t>>>0:void 0}function Mu(t){return t[0]!=="-"&&(t.length<20||t.length===20&&Number(t.substring(0,6))<184467)}function Oa(t){return t=Math.trunc(t),Number.isSafeInteger(t)||(Kr(t),t=La(ie,Te)),t}function Da(t){var e=Math.trunc(Number(t));if(Number.isSafeInteger(e))return String(e);if((e=t.indexOf("."))!==-1&&(t=t.substring(0,e)),!(t[0]==="-"?t.length<20||t.length===20&&Number(t.substring(0,7))>-922337:t.length<19||t.length===19&&Number(t.substring(0,6))<922337))if(Ps(t),t=ie,2147483648&(e=Te))if(Ia())t=""+(BigInt(0|e)<<BigInt(32)|BigInt(t>>>0));else{let[r,n]=Pa(t,e);t="-"+Nn(r,n)}else t=Nn(t,e);return t}function Ts(t){return t==null?t:typeof t=="bigint"?(ua(t)?t=Number(t):(t=BigInt.asIntN(64,t),t=ua(t)?Number(t):String(t)),t):Os(t)?typeof t=="number"?Oa(t):Da(t):void 0}function dd(t){if(t==null)return t;var e=typeof t;if(e==="bigint")return String(BigInt.asUintN(64,t));if(Os(t)){if(e==="string")return e=Math.trunc(Number(t)),Number.isSafeInteger(e)&&e>=0?t=String(e):((e=t.indexOf("."))!==-1&&(t=t.substring(0,e)),Mu(t)||(Ps(t),t=Nn(ie,Te))),t;if(e==="number")return(t=Math.trunc(t))>=0&&Number.isSafeInteger(t)?t:function(r){if(r<0){Kr(r);var n=Nn(ie,Te);return r=Number(n),Number.isSafeInteger(r)?r:n}return Mu(n=String(r))?n:(Kr(r),Ua(ie,Te))}(t)}}function tl(t){if(typeof t!="string")throw Error();return t}function an(t){if(t!=null&&typeof t!="string")throw Error();return t}function pr(t){return t==null||typeof t=="string"?t:void 0}function Ma(t,e,r,n){if(t!=null&&typeof t=="object"&&t.X===Hn)return t;if(!Array.isArray(t))return r?2&n?(t=e[Cu])?e=t:(sn((t=new e).u),e=e[Cu]=t):e=new e:e=void 0,e;let s=r=Fe(t);return s===0&&(s|=32&n),s|=2&n,s!==r&&Le(t,s),new e(t)}function md(t,e,r){if(e)e:{if(!Os(e=t))throw oa("int64");switch(typeof e){case"string":e=Da(e);break e;case"bigint":if(t=e=BigInt.asIntN(64,e),Lu(t)){if(!/^\s*(?:-?[1-9]\d*|0)?\s*$/.test(t))throw Error(String(t))}else if(od(t)&&!Number.isSafeInteger(t))throw Error(String(t));e=Ls?BigInt(e):ad(e)?e?"1":"0":Lu(e)?e.trim()||"0":String(e);break e;default:e=Oa(e)}}else e=Ts(t);return typeof(r=(t=e)==null?r?0:void 0:t)=="string"&&(e=+r,Number.isSafeInteger(e))?e:r}function rl(t){var e;return In===void 0&&(In=typeof Proxy=="function"?Nu(Proxy):null),(e=!In)||(Sn===void 0&&(Sn=typeof WeakMap=="function"?Nu(WeakMap):null),e=!Sn),e?t:(e=Zr?.get(t))?e:Math.random()>.01?t:(function(r){if(Yo===void 0){let n=new In([],{});Yo=Array.prototype.concat.call([],n).length===1}Yo&&typeof Symbol=="function"&&Symbol.isConcatSpreadable&&(r[Symbol.isConcatSpreadable]=!0)}(t),function(r,n){(Zr||(Zr=new Sn)).set(r,n),(nl||(nl=new Sn)).set(n,r)}(t,e=new In(t,{set:(r,n,s)=>(qc(),r[n]=s,!0)})),e)}var Zr,nl,In,Sn,Yo,ks,sl,pd;function Nu(t){try{return t.toString().indexOf("[native code]")!==-1?t:null}catch{return null}}function gr(t,e,r){return t=ol(t,e[0],e[1],r?1:2),e!==sl&&r&&Bs(t,16384),t}function ol(t,e,r,n){if(n=n??0,t==null&&(t=ks),ks=void 0,t==null){var s=96;r?(t=[r],s|=512):t=[],e&&(s=-33521665&s|(1023&e)<<15)}else{if(!Array.isArray(t))throw Error("narr");if(2048&(s=Fe(t)))throw Error("farr");if(64&s)return t;if(n===1||n===2||(s|=64),r&&(s|=512,r!==t[0]))throw Error("mid");e:{if(n=(r=t).length){let o=n-1;if(Fa(r[o])){if((e=o-(+!!(512&(s|=256))-1))>=1024)throw Error("pvtlmt");s=-33521665&s|(1023&e)<<15;break e}}if(e){if((e=Math.max(e,n-(+!!(512&s)-1)))>1024)throw Error("spvt");s=-33521665&s|(1023&e)<<15}}}return Le(t,s),t}var gd={},xd=function(){try{return Aa(new class extends Map{constructor(){super()}}),!1}catch{return!0}}(),Ln=class{constructor(){this.g=new Map}get(e){return this.g.get(e)}set(e,r){return this.g.set(e,r),this.size=this.g.size,this}delete(e){return e=this.g.delete(e),this.size=this.g.size,e}clear(){this.g.clear(),this.size=this.g.size}has(e){return this.g.has(e)}entries(){return this.g.entries()}keys(){return this.g.keys()}values(){return this.g.values()}forEach(e,r){return this.g.forEach(e,r)}[Symbol.iterator](){return this.entries()}},yd=xd?(Object.setPrototypeOf(Ln.prototype,Map.prototype),Object.defineProperties(Ln.prototype,{size:{value:0,configurable:!0,enumerable:!0,writable:!0}}),Ln):class extends Map{constructor(){super()}};function Gu(t){return t}function qo(t){if(2&t.M)throw Error("Cannot mutate an immutable Map")}var Tt=class extends yd{constructor(t,e,r=Gu,n=Gu){super();let s=Fe(t);s|=64,Le(t,s),this.M=s,this.T=e,this.S=r,this.Z=this.T?_d:n;for(let o=0;o<t.length;o++){let a=t[o],i=r(a[0],!1,!0),u=a[1];e?u===void 0&&(u=null):u=n(a[1],!1,!0,void 0,void 0,s),super.set(i,u)}}oa(t=Vu){if(this.size!==0)return this.Y(t)}Y(t=Vu){let e=[],r=super.entries();for(var n;!(n=r.next()).done;)(n=n.value)[0]=t(n[0]),n[1]=t(n[1]),e.push(n);return e}clear(){qo(this),super.clear()}delete(t){return qo(this),super.delete(this.S(t,!0,!1))}entries(){var t=this.na();return new ws(t,bd,this)}keys(){return this.Ha()}values(){var t=this.na();return new ws(t,Tt.prototype.get,this)}forEach(t,e){super.forEach((r,n)=>{t.call(e,this.get(n),n,this)})}set(t,e){return qo(this),(t=this.S(t,!0,!1))==null?this:e==null?(super.delete(t),this):super.set(t,this.Z(e,!0,!0,this.T,!1,this.M))}Na(t){let e=this.S(t[0],!1,!0);t=t[1],t=this.T?t===void 0?null:t:this.Z(t,!1,!0,void 0,!1,this.M),super.set(e,t)}has(t){return super.has(this.S(t,!1,!1))}get(t){t=this.S(t,!1,!1);let e=super.get(t);if(e!==void 0){var r=this.T;return r?((r=this.Z(e,!1,!0,r,this.sa,this.M))!==e&&super.set(t,r),r):e}}na(){return Array.from(super.keys())}Ha(){return super.keys()}[Symbol.iterator](){return this.entries()}};function _d(t,e,r,n,s,o){return t=Ma(t,n,r,o),s&&(t=Ms(t)),t}function Vu(t){return t}function bd(t){return[t,this.get(t)]}var vd;function Wu(){return vd||(vd=new Tt(sn([]),void 0,void 0,void 0,gd))}function Na(t,e,r,n,s){if(t!=null){if(Array.isArray(t))t=vs(t)?void 0:s&&2&Fe(t)?t:Ds(t,e,r,n!==void 0,s);else if(Fa(t)){let o={};for(let a in t)o[a]=Na(t[a],e,r,n,s);t=o}else t=e(t,n);return t}}function Ds(t,e,r,n,s){let o=n||r?Fe(t):0;n=n?!!(32&o):void 0;let a=ct(t);for(let i=0;i<a.length;i++)a[i]=Na(a[i],e,r,n,s);return r&&(Zc(a,t),r(o,a)),a}function wd(t){return Na(t,Ga,void 0,void 0,!1)}function Ga(t){return t.X===Hn?t.toJSON():t instanceof Tt?t.oa(wd):function(e){switch(typeof e){case"number":return isFinite(e)?e:String(e);case"bigint":return ua(e)?Number(e):String(e);case"boolean":return e?1:0;case"object":if(e)if(Array.isArray(e)){if(vs(e))return}else{if($n(e))return Su(e);if(e instanceof rr){let r=e.g;return r==null?"":typeof r=="string"?r:e.g=Su(r)}if(e instanceof Tt)return e.oa()}}return e}(t)}function ca(t,e,r=ia){if(t!=null){if(zc&&t instanceof Uint8Array)return e?t:new Uint8Array(t);if(Array.isArray(t)){var n=Fe(t);return 2&n?t:(e&&(e=n===0||!!(32&n)&&!(64&n||!(16&n))),e?(Le(t,-12293&(34|n)),t):Ds(t,ca,4&n?ia:r,!0,!0))}return t.X===Hn?(r=t.u,t=2&(n=oe(r))?t:Va(t,r,n,!0)):t instanceof Tt&&!(2&t.M)&&(r=sn(t.Y(ca)),t=new Tt(r,t.T,t.S,t.Z)),t}}function Va(t,e,r,n){return t=t.constructor,ks=e=al(e,r,n),e=new t(e),ks=void 0,e}function al(t,e,r){let n=r||2&e?ia:nd,s=!!(32&e);return t=function(o,a,i){let u=ct(o);var l=u.length;let c=256&a?u[l-1]:void 0;for(l+=c?-1:0,a=512&a?1:0;a<l;a++)u[a]=i(u[a]);if(c){a=u[a]={};for(let f in c)a[f]=i(c[f])}return Zc(u,o),u}(t,e,o=>ca(o,s,n)),Bs(t,32|(r?2:0)),t}function Ms(t){let e=t.u,r=oe(e);return 2&r?Va(t,e,r,!1):t}function yr(t,e){return ar(t=t.u,oe(t),e)}function $u(t,e,r,n){if(!((e=n+(+!!(512&e)-1))<0||e>=t.length||e>=r))return t[e]}function ar(t,e,r,n){if(r===-1)return null;let s=e>>15&1023||536870912;if(!(r>=s)){var o=t.length;return n&&256&e&&(n=t[o-1][r])!=null?($u(t,e,s,r)&&jo!=null&&((e=(t=rd??(rd={}))[jo]||0)>=4||(t[jo]=e+1,qc())),n):$u(t,e,s,r)}return 256&e?t[t.length-1][r]:void 0}function ce(t,e,r){let n=t.u,s=oe(n);return wr(s),be(n,s,e,r),t}function be(t,e,r,n){let s=e>>15&1023||536870912;if(r>=s){let o,a=e;if(256&e)o=t[t.length-1];else{if(n==null)return a;o=t[s+(+!!(512&e)-1)]={},a|=256}return o[r]=n,r<s&&(t[r+(+!!(512&e)-1)]=void 0),a!==e&&Le(t,a),a}return t[r+(+!!(512&e)-1)]=n,256&e&&r in(t=t[t.length-1])&&delete t[r],e}function ms(t,e){t=t.u;let r=oe(t),n=ar(t,r,e),s=Tr(n);return s!=null&&s!==n&&be(t,r,e,s),s}function il(t){t=t.u;let e=oe(t),r=ar(t,e,1),n=Ca(r,!0);return n!=null&&n!==r&&be(t,e,1,n),n}function Sr(){return sd===void 0?2:4}function Fr(t,e,r,n,s){let o=t.u,a=2&(t=oe(o))?1:n;s=!!s,n=Wa(o,t,e);var i=Fe(n);if(!(4&i)){4&i&&(n=ct(n),i=nr(i,t),t=be(o,t,e,n));let l=0,c=0;for(;l<n.length;l++){let f=r(n[l]);f!=null&&(n[c++]=f)}c<l&&(n.length=c),i=-4097&(20|(i=$a(i,t))),Le(n,i&=-8193),2&i&&Object.freeze(n)}let u;return a===1||a===4&&32&i?Bt(i)||(s=i,(i|=2)!==s&&Le(n,i),Object.freeze(n)):(r=a===5&&(!!(32&i)||Bt(i)||!!Zr?.get(n)),(a===2||r)&&Bt(i)&&(n=ct(n),i=xr(i=nr(i,t),t,s),Le(n,i),t=be(o,t,e,n)),Bt(i)||(e=i,(i=xr(i,t,s))!==e&&Le(n,i)),r?u=rl(n):a!==2||s||Zr?.delete(n)),u||n}function Wa(t,e,r,n){return t=ar(t,e,r,n),Array.isArray(t)?t:Sa}function $a(t,e){return t===0&&(t=nr(t,e)),1|t}function Bt(t){return!!(2&t)&&!!(4&t)||!!(2048&t)}function ul(t){t=ct(t);for(let e=0;e<t.length;e++){let r=t[e]=ct(t[e]);Array.isArray(r[1])&&(r[1]=sn(r[1]))}return t}function la(t,e,r,n){t=t.u;let s=oe(t);wr(s),be(t,s,e,(n==="0"?Number(r)===0:r===n)?void 0:r)}function un(t,e,r,n,s){wr(e);var o=!(!(64&e)&&16384&e);let a=(s=Wa(t,e,r,s))!==Sa;if(o||!a){let i=o=a?Fe(s):0;(!a||2&i||Bt(i)||4&i&&!(32&i))&&(s=ct(s),i=nr(i,e),e=be(t,e,r,s)),i=-13&$a(i,e),i=xr(n?-17&i:16|i,e,!0),i!==o&&Le(s,i)}return s}function Ko(t,e){var r=Zl;return Ha(za(t=t.u),t,oe(t),r)===e?e:-1}function za(t){if(nn)return t[Rn]??(t[Rn]=new Map);if(Rn in t)return t[Rn];let e=new Map;return Object.defineProperty(t,Rn,{value:e}),e}function cl(t,e,r,n){let s=za(t),o=Ha(s,t,e,r);return o!==n&&(o&&(e=be(t,e,o)),s.set(r,n)),e}function Ha(t,e,r,n){let s=t.get(n);if(s!=null)return s;s=0;for(let o=0;o<n.length;o++){let a=n[o];ar(e,r,a)!=null&&(s!==0&&(r=be(e,r,s)),s=a)}return t.set(n,s),s}function Xa(t,e,r,n){let s,o=oe(t);if((n=ar(t,o,r,n))!=null&&n.X===Hn)return(e=Ms(n))!==n&&be(t,o,r,e),e.u;if(Array.isArray(n)){let a=Fe(n);s=2&a?gr(al(n,a,!1),e,!0):64&a?n:gr(s,e,!0)}else s=gr(void 0,e,!0);return s!==n&&be(t,o,r,s),s}function ll(t,e,r,n){t=t.u;let s=oe(t);return(e=Ma(n=ar(t,s,r,n),e,!1,s))!==n&&e!=null&&be(t,s,r,e),e}function Y(t,e,r,n=!1){if((e=ll(t,e,r,n))==null)return e;if(t=t.u,!(2&(n=oe(t)))){let s=Ms(e);s!==e&&be(t,n,r,e=s)}return e}function fl(t,e,r,n,s,o,a){t=t.u;var i=!!(2&e);s=i?1:s,o=!!o,a&&(a=!i),i=Wa(t,e,n);var u=Fe(i),l=!!(4&u);if(!l){var c=i,f=e;let p=!!(2&(u=$a(u,e)));p&&(f|=2);let v=!p,A=!0,w=0,S=0;for(;w<c.length;w++){let k=Ma(c[w],r,!1,f);if(k instanceof r){if(!p){let E=!!(2&Fe(k.u));v&&(v=!E),A&&(A=E)}c[S++]=k}}S<w&&(c.length=S),u|=4,u=A?16|u:-17&u,Le(c,u=v?8|u:-9&u),p&&Object.freeze(c)}if(a&&!(8&u||!i.length&&(s===1||s===4&&32&u))){for(Bt(u)&&(i=ct(i),u=nr(u,e),e=be(t,e,n,i)),r=i,a=u,c=0;c<r.length;c++)(u=r[c])!==(f=Ms(u))&&(r[c]=f);a|=8,a=r.length?-17&a:16|a,Le(r,a),u=a}let d;return s===1||s===4&&32&u?Bt(u)||(e=u,(u|=!i.length||16&u&&(!l||32&u)?2:2048)!==e&&Le(i,u),Object.freeze(i)):(l=s===5&&(!!(32&u)||Bt(u)||!!Zr?.get(i)),(s===2||l)&&Bt(u)&&(i=ct(i),u=xr(u=nr(u,e),e,o),Le(i,u),e=be(t,e,n,i)),Bt(u)||(n=u,(u=xr(u,e,o))!==n&&Le(i,u)),l?d=rl(i):s!==2||o||Zr?.delete(i)),d||i}function sr(t,e,r){let n=oe(t.u);return fl(t,n,e,r,Sr(),!1,!(2&n))}function $(t,e,r,n){return n==null&&(n=void 0),ce(t,r,n)}function Pn(t,e,r,n){n==null&&(n=void 0);e:{t=t.u;let s=oe(t);if(wr(s),n==null){let o=za(t);if(Ha(o,t,s,r)!==e)break e;o.set(r,0)}else s=cl(t,s,r,e);be(t,s,e,n)}}function nr(t,e){return-2049&(t=32|(2&e?2|t:-3&t))}function xr(t,e,r){return 32&e&&r||(t&=-33),t}function Es(t,e,r,n){let s=oe(t.u);wr(s),t=fl(t,s,r,e,2,!0),n=n??new r,t.push(n),2&Fe(n.u)?aa(t,8):aa(t,16)}function Ut(t,e){return t??e}function wt(t,e){return on(yr(t,e))}function Se(t,e){return Ut(ms(t,e),0)}function jt(t,e){return Ut(pr(yr(t,e)),"")}function Gn(t,e,r){if(r!=null&&typeof r!="boolean")throw t=typeof r,Error(`Expected boolean but got ${t!="object"?t:r?Array.isArray(r)?"array":t:"null"}: ${r}`);ce(t,e,r)}function Yt(t,e,r){if(r!=null){if(typeof r!="number"||!Number.isFinite(r))throw oa("int32");r|=0}ce(t,e,r)}function G(t,e,r){if(r!=null&&typeof r!="number")throw Error(`Value of float/double field must be a number, found ${typeof r}: ${r}`);ce(t,e,r)}function As(t,e,r){{let a=t.u,i=oe(a);if(wr(i),r==null)be(a,i,e);else{r=nl?.get(r)||r;var n=t=Fe(r),s=Bt(t),o=s||Object.isFrozen(r);for(s||(t=0),o||(r=ct(r),n=0,t=xr(t=nr(t,i),i,!0),o=!1),t|=21,s=0;s<r.length;s++){let u=r[s],l=tl(u);Object.is(u,l)||(o&&(r=ct(r),n=0,t=xr(t=nr(t,i),i,!0),o=!1),r[s]=l)}t!==n&&(o&&(r=ct(r),t=xr(t=nr(t,i),i,!0)),Le(r,t)),be(a,i,e,r)}}}function Ns(t,e,r){wr(oe(t.u)),Fr(t,e,pr,2,!0).push(tl(r))}function hl(t,e){return Error(`Invalid wire type: ${t} (at position ${e})`)}function ja(){return Error("Failed to read varint, encoding is invalid.")}function dl(t,e){return Error(`Tried to read past the end of the data ${e} > ${t}`)}function Ya(t){if(typeof t=="string")return{buffer:Xc(t),O:!1};if(Array.isArray(t))return{buffer:new Uint8Array(t),O:!1};if(t.constructor===Uint8Array)return{buffer:t,O:!1};if(t.constructor===ArrayBuffer)return{buffer:new Uint8Array(t),O:!1};if(t.constructor===rr)return{buffer:Ra(t)||new Uint8Array(0),O:!0};if(t instanceof Uint8Array)return{buffer:new Uint8Array(t.buffer,t.byteOffset,t.byteLength),O:!1};throw Error("Type not convertible to a Uint8Array, expected a Uint8Array, an ArrayBuffer, a base64 encoded string, a ByteString or an Array of numbers")}function qa(t,e){let r,n=0,s=0,o=0,a=t.h,i=t.g;do r=a[i++],n|=(127&r)<<o,o+=7;while(o<32&&128&r);for(o>32&&(s|=(127&r)>>4),o=3;o<32&&128&r;o+=7)r=a[i++],s|=(127&r)<<o;if(Cr(t,i),r<128)return e(n>>>0,s>>>0);throw ja()}function Ka(t){let e=0,r=t.g,n=r+10,s=t.h;for(;r<n;){let o=s[r++];if(e|=o,(128&o)==0)return Cr(t,r),!!(127&e)}throw ja()}function _r(t){let e=t.h,r=t.g,n=e[r++],s=127&n;if(128&n&&(n=e[r++],s|=(127&n)<<7,128&n&&(n=e[r++],s|=(127&n)<<14,128&n&&(n=e[r++],s|=(127&n)<<21,128&n&&(n=e[r++],s|=n<<28,128&n&&128&e[r++]&&128&e[r++]&&128&e[r++]&&128&e[r++]&&128&e[r++])))))throw ja();return Cr(t,r),s}function or(t){return _r(t)>>>0}function fa(t){var e=t.h;let r=t.g,n=e[r],s=e[r+1],o=e[r+2];return e=e[r+3],Cr(t,t.g+4),(n<<0|s<<8|o<<16|e<<24)>>>0}function ha(t){var e=fa(t);t=2*(e>>31)+1;let r=e>>>23&255;return e&=8388607,r==255?e?NaN:t*(1/0):r==0?1401298464324817e-60*t*e:t*Math.pow(2,r-150)*(e+8388608)}function Td(t){return _r(t)}function Zo(t,e,{ca:r=!1}={}){t.ca=r,e&&(e=Ya(e),t.h=e.buffer,t.m=e.O,t.j=0,t.l=t.h.length,t.g=t.j)}function Cr(t,e){if(t.g=e,e>t.l)throw dl(t.l,e)}function ml(t,e){if(e<0)throw Error(`Tried to read a negative byte length: ${e}`);let r=t.g,n=r+e;if(n>t.l)throw dl(e,t.l-r);return t.g=n,r}function pl(t,e){if(e==0)return Ur();var r=ml(t,e);return t.ca&&t.m?r=t.h.subarray(r,r+e):(t=t.h,r=r===(e=r+e)?new Uint8Array(0):fd?t.slice(r,e):new Uint8Array(t.subarray(r,e))),r.length==0?Ur():new rr(r,qr)}Tt.prototype.toJSON=void 0,Tt.prototype.Ia=Kc;var zu=[];function gl(t){var e=t.g;if(e.g==e.l)return!1;t.l=t.g.g;var r=or(t.g);if(e=r>>>3,!((r&=7)>=0&&r<=5))throw hl(r,t.l);if(e<1)throw Error(`Invalid field number: ${e} (at position ${t.l})`);return t.m=e,t.h=r,!0}function ps(t){switch(t.h){case 0:t.h!=0?ps(t):Ka(t.g);break;case 1:Cr(t=t.g,t.g+8);break;case 2:if(t.h!=2)ps(t);else{var e=or(t.g);Cr(t=t.g,t.g+e)}break;case 5:Cr(t=t.g,t.g+4);break;case 3:for(e=t.m;;){if(!gl(t))throw Error("Unmatched start-group tag: stream EOF");if(t.h==4){if(t.m!=e)throw Error("Unmatched end-group tag");break}ps(t)}break;default:throw hl(t.h,t.l)}}function Xn(t,e,r){let n=t.g.l,s=or(t.g),o=t.g.g+s,a=o-n;if(a<=0&&(t.g.l=o,r(e,t,void 0,void 0,void 0),a=o-t.g.g),a)throw Error(`Message parsing ended unexpectedly. Expected to read ${s} bytes, instead read ${s-a} bytes, either the data ended unexpectedly or the message misreported its own length`);return t.g.g=o,t.g.l=n,e}function Za(t){var e=or(t.g),r=ml(t=t.g,e);if(t=t.h,Yh){var n,s=t;(n=zo)||(n=zo=new TextDecoder("utf-8",{fatal:!0})),e=r+e,s=r===0&&e===s.length?s:s.subarray(r,e);try{var o=n.decode(s)}catch(i){if(is===void 0){try{n.decode(new Uint8Array([128]))}catch{}try{n.decode(new Uint8Array([97])),is=!0}catch{is=!1}}throw!is&&(zo=void 0),i}}else{e=(o=r)+e,r=[];let i,u=null;for(;o<e;){var a=t[o++];a<128?r.push(a):a<224?o>=e?Ir():(i=t[o++],a<194||(192&i)!=128?(o--,Ir()):r.push((31&a)<<6|63&i)):a<240?o>=e-1?Ir():(i=t[o++],(192&i)!=128||a===224&&i<160||a===237&&i>=160||(192&(n=t[o++]))!=128?(o--,Ir()):r.push((15&a)<<12|(63&i)<<6|63&n)):a<=244?o>=e-2?Ir():(i=t[o++],(192&i)!=128||i-144+(a<<28)>>30!=0||(192&(n=t[o++]))!=128||(192&(s=t[o++]))!=128?(o--,Ir()):(a=(7&a)<<18|(63&i)<<12|(63&n)<<6|63&s,a-=65536,r.push(55296+(a>>10&1023),56320+(1023&a)))):Ir(),r.length>=8192&&(u=Au(u,r),r.length=0)}o=Au(u,r)}return o}function xl(t){let e=or(t.g);return pl(t.g,e)}function Gs(t,e,r){var n=or(t.g);for(n=t.g.g+n;t.g.g<n;)r.push(e(t.g))}var ls=[],Rs;function Pt(t,e,r){e.g?e.m(t,e.g,e.h,r,!0):e.m(t,e.h,r,!0)}var M=class{constructor(t,e){this.u=ol(t,e)}toJSON(){return yl(this)}l(){var t=sm;return t.g?t.l(this,t.g,t.h,!0):t.l(this,t.h,t.defaultValue,!0)}clone(){let t=this.u;return Va(this,t,oe(t),!1)}O(){return!!(2&Fe(this.u))}};function yl(t){t=t.u,t=Rs?t:Ds(t,Ga,void 0,void 0,!1);{var e=!Rs;let l=t.length;if(l){var r=t[l-1],n=Fa(r);n?l--:r=void 0;var s=t;if(n){e:{var o,a=r,i=!1;if(a)for(let c in a)isNaN(+c)?(o??(o={}))[c]=a[c]:(n=a[c],Array.isArray(n)&&(vs(n)||Bu(n)&&n.size===0)&&(n=null),n==null&&(i=!0),n!=null&&((o??(o={}))[c]=n));if(i||(o=a),o)for(let c in o){i=o;break e}i=null}a=i==null?r!=null:i!==r}for(;l>0&&((o=s[l-1])==null||vs(o)||Bu(o)&&o.size===0);l--)var u=!0;(s!==t||a||u)&&(e?(u||a||i)&&(s.length=l):s=Array.prototype.slice.call(s,0,l),i&&s.push(i)),u=s}else u=t}return u}function Hu(t){return t?/^\d+$/.test(t)?(Ps(t),new da(ie,Te)):null:kd||(kd=new da(0,0))}M.prototype.X=Hn,M.prototype.toString=function(){try{return Rs=!0,yl(this).toString()}finally{Rs=!1}};var da=class{constructor(t,e){this.h=t>>>0,this.g=e>>>0}},kd;function Xu(t){return t?/^-?\d+$/.test(t)?(Ps(t),new ma(ie,Te)):null:Ed||(Ed=new ma(0,0))}var ma=class{constructor(t,e){this.h=t>>>0,this.g=e>>>0}},Ed;function Xr(t,e,r){for(;r>0||e>127;)t.g.push(127&e|128),e=(e>>>7|r<<25)>>>0,r>>>=7;t.g.push(e)}function cn(t,e){for(;e>127;)t.g.push(127&e|128),e>>>=7;t.g.push(e)}function Vs(t,e){if(e>=0)cn(t,e);else{for(let r=0;r<9;r++)t.g.push(127&e|128),e>>=7;t.g.push(1)}}function Vn(t,e){t.g.push(e>>>0&255),t.g.push(e>>>8&255),t.g.push(e>>>16&255),t.g.push(e>>>24&255)}function Jr(t,e){e.length!==0&&(t.l.push(e),t.h+=e.length)}function ft(t,e,r){cn(t.g,8*e+r)}function Ja(t,e){return ft(t,e,2),e=t.g.end(),Jr(t,e),e.push(t.h),e}function Qa(t,e){var r=e.pop();for(r=t.h+t.g.length()-r;r>127;)e.push(127&r|128),r>>>=7,t.h++;e.push(r),t.h++}function Ws(t,e,r){ft(t,e,2),cn(t.g,r.length),Jr(t,t.g.end()),Jr(t,r)}function Is(t,e,r,n){r!=null&&(e=Ja(t,e),n(r,t),Qa(t,e))}function Ot(){let t=class{constructor(){throw Error()}};return Object.setPrototypeOf(t,t.prototype),t}var ei=Ot(),_l=Ot(),ti=Ot(),ri=Ot(),bl=Ot(),vl=Ot(),ni=Ot(),wl=Ot(),Tl=Ot(),ln=class{constructor(t,e,r){this.g=t,this.h=e,t=ei,this.l=!!t&&r===t||!1}};function $s(t,e){return new ln(t,e,ei)}function kl(t,e,r,n,s){Is(t,r,Il(e,n),s)}var Ad=$s(function(t,e,r,n,s){return t.h===2&&(Xn(t,Xa(e,n,r),s),!0)},kl),Rd=$s(function(t,e,r,n,s){return t.h===2&&(Xn(t,Xa(e,n,r,!0),s),!0)},kl),zs=Symbol(),si=Symbol(),ju=Symbol(),Yu=Symbol(),El,Al;function Lr(t,e,r,n){var s=n[t];if(s)return s;(s={}).W=function(f){switch(typeof f){case"boolean":return sl||(sl=[0,void 0,!0]);case"number":return f>0?void 0:f===0?pd||(pd=[0,void 0]):[-f,void 0];case"string":return[0,f];case"object":return f}}(n[0]);var o=n[1];let a=1;o&&o.constructor===Object&&(s.ha=o,typeof(o=n[++a])=="function"&&(s.ma=!0,El??(El=o),Al??(Al=n[a+1]),o=n[a+=2]));let i={};for(;o&&Array.isArray(o)&&o.length&&typeof o[0]=="number"&&o[0]>0;){for(var u=0;u<o.length;u++)i[o[u]]=o;o=n[++a]}for(u=1;o!==void 0;){let f;typeof o=="number"&&(u+=o,o=n[++a]);var l=void 0;if(o instanceof ln?f=o:(f=Ad,a--),f?.l){o=n[++a],l=n;var c=a;typeof o=="function"&&(o=o(),l[c]=o),l=o}for(c=u+1,typeof(o=n[++a])=="number"&&o<0&&(c-=o,o=n[++a]);u<c;u++){let d=i[u];l?r(s,u,f,l,d):e(s,u,f,d)}}return n[t]=s}function Rl(t){return Array.isArray(t)?t[0]instanceof ln?t:[Rd,t]:[t,void 0]}function Il(t,e){return t instanceof M?t.u:Array.isArray(t)?gr(t,e,!1):void 0}function oi(t,e,r,n){let s=r.g;t[e]=n?(o,a,i)=>s(o,a,i,n):s}function ai(t,e,r,n,s){let o=r.g,a,i;t[e]=(u,l,c)=>o(u,l,c,i||(i=Lr(si,oi,ai,n).W),a||(a=ii(n)),s)}function ii(t){let e=t[ju];if(e!=null)return e;let r=Lr(si,oi,ai,t);return e=r.ma?(n,s)=>El(n,s,r):(n,s)=>{let o=oe(n);for(;gl(s)&&s.h!=4;){var a=s.m,i=r[a];if(i==null){var u=r.ha;u&&(u=u[a])&&(u=Id(u))!=null&&(i=r[a]=u)}i!=null&&i(s,n,a)||(a=(i=s).l,ps(i),i.ga?i=void 0:(u=i.g.g-a,i.g.g=a,i=pl(i.g,u)),a=n,i&&(mr||(mr=Symbol()),(u=a[mr])?u.push(i):a[mr]=[i]))}return 16384&o&&sn(n),!0},t[ju]=e}function Id(t){let e=(t=Rl(t))[0].g;if(t=t[1]){let r=ii(t),n=Lr(si,oi,ai,t).W;return(s,o,a)=>e(s,o,a,n,r)}return e}function Hs(t,e,r){t[e]=r.h}function Xs(t,e,r,n){let s,o,a=r.h;t[e]=(i,u,l)=>a(i,u,l,o||(o=Lr(zs,Hs,Xs,n).W),s||(s=Sl(n)))}function Sl(t){let e=t[Yu];if(!e){let r=Lr(zs,Hs,Xs,t);e=(n,s)=>Fl(n,s,r),t[Yu]=e}return e}function Fl(t,e,r){for(var n=Fe(t),s=+!!(512&n)-1,o=t.length,a=512&n?1:0,i=o+(256&n?-1:0);a<i;a++){let u=t[a];if(u==null)continue;let l=a-s,c=qu(r,l);c&&c(e,u,l)}if(256&n){n=t[o-1];for(let u in n)s=+u,Number.isNaN(s)||(o=n[s])!=null&&(i=qu(r,s))&&i(e,o,s)}if(t=mr?t[mr]:void 0)for(Jr(e,e.g.end()),r=0;r<t.length;r++)Jr(e,Ra(t[r])||new Uint8Array(0))}function qu(t,e){var r=t[e];if(r)return r;if((r=t.ha)&&(r=r[e])){var n=(r=Rl(r))[0].h;if(r=r[1]){let s=Sl(r),o=Lr(zs,Hs,Xs,r).W;r=t.ma?Al(o,s):(a,i,u)=>n(a,i,u,o,s)}else r=n;return t[e]=r}}function fn(t,e){if(Array.isArray(e)){var r=Fe(e);if(4&r)return e;for(var n=0,s=0;n<e.length;n++){let o=t(e[n]);o!=null&&(e[s++]=o)}return s<n&&(e.length=s),Le(e,-12289&(5|r)),2&r&&Object.freeze(e),e}}function Je(t,e,r){return new ln(t,e,r)}function hn(t,e,r){return new ln(t,e,r)}function Qe(t,e,r){be(t,oe(t),e,r)}var Sd=$s(function(t,e,r,n,s){return t.h===2&&(t=Xn(t,gr([void 0,void 0],n,!0),s),wr(n=oe(e)),(s=ar(e,n,r))instanceof Tt?(2&s.M)!=0?((s=s.Y()).push(t),be(e,n,r,s)):s.Na(t):Array.isArray(s)?(2&Fe(s)&&be(e,n,r,s=ul(s)),s.push(t)):be(e,n,r,[t]),!0)},function(t,e,r,n,s){if(e instanceof Tt)e.forEach((o,a)=>{Is(t,r,gr([a,o],n,!1),s)});else if(Array.isArray(e))for(let o=0;o<e.length;o++){let a=e[o];Array.isArray(a)&&Is(t,r,gr(a,n,!1),s)}});function Cl(t,e,r){if(e=function(n){if(n==null)return n;let s=typeof n;if(s==="bigint")return String(BigInt.asIntN(64,n));if(Os(n)){if(s==="string")return Da(n);if(s==="number")return Oa(n)}}(e),e!=null&&(typeof e=="string"&&Xu(e),e!=null))switch(ft(t,r,0),typeof e){case"number":t=t.g,Kr(e),Xr(t,ie,Te);break;case"bigint":r=BigInt.asUintN(64,e),r=new ma(Number(r&BigInt(4294967295)),Number(r>>BigInt(32))),Xr(t.g,r.h,r.g);break;default:r=Xu(e),Xr(t.g,r.h,r.g)}}function Bl(t,e,r){(e=on(e))!=null&&e!=null&&(ft(t,r,0),Vs(t.g,e))}function Ul(t,e,r){(e=Qc(e))!=null&&(ft(t,r,0),t.g.g.push(e?1:0))}function Ll(t,e,r){(e=pr(e))!=null&&Ws(t,r,Vc(e))}function Pl(t,e,r,n,s){Is(t,r,Il(e,n),s)}function Ol(t,e,r){(e=e==null||typeof e=="string"||$n(e)||e instanceof rr?e:void 0)!=null&&Ws(t,r,Ya(e).buffer)}function Dl(t,e,r){return(t.h===5||t.h===2)&&(e=un(e,oe(e),r,!1,!1),t.h==2?Gs(t,ha,e):e.push(ha(t.g)),!0)}var er=Je(function(t,e,r){if(t.h!==1)return!1;var n=t.g;t=fa(n);let s=fa(n);n=2*(s>>31)+1;let o=s>>>20&2047;return t=4294967296*(1048575&s)+t,Qe(e,r,o==2047?t?NaN:n*(1/0):o==0?5e-324*n*t:n*Math.pow(2,o-1075)*(t+4503599627370496)),!0},function(t,e,r){(e=Tr(e))!=null&&(ft(t,r,1),t=t.g,(r=Jc||(Jc=new DataView(new ArrayBuffer(8)))).setFloat64(0,+e,!0),ie=r.getUint32(0,!0),Te=r.getUint32(4,!0),Vn(t,ie),Vn(t,Te))},Ot()),Me=Je(function(t,e,r){return t.h===5&&(Qe(e,r,ha(t.g)),!0)},function(t,e,r){(e=Tr(e))!=null&&(ft(t,r,5),t=t.g,Ba(e),Vn(t,ie))},ni),Fd=hn(Dl,function(t,e,r){if((e=fn(Tr,e))!=null)for(let a=0;a<e.length;a++){var n=t,s=r,o=e[a];o!=null&&(ft(n,s,5),n=n.g,Ba(o),Vn(n,ie))}},ni),ui=hn(Dl,function(t,e,r){if((e=fn(Tr,e))!=null&&e.length){ft(t,r,2),cn(t.g,4*e.length);for(let n=0;n<e.length;n++)r=t.g,Ba(e[n]),Vn(r,ie)}},ni),br=Je(function(t,e,r){return t.h===0&&(Qe(e,r,qa(t.g,La)),!0)},Cl,vl),Jo=Je(function(t,e,r){return t.h===0&&(Qe(e,r,(t=qa(t.g,La))===0?void 0:t),!0)},Cl,vl),Cd=Je(function(t,e,r){return t.h===0&&(Qe(e,r,qa(t.g,Ua)),!0)},function(t,e,r){if((e=dd(e))!=null&&(typeof e=="string"&&Hu(e),e!=null))switch(ft(t,r,0),typeof e){case"number":t=t.g,Kr(e),Xr(t,ie,Te);break;case"bigint":r=BigInt.asUintN(64,e),r=new da(Number(r&BigInt(4294967295)),Number(r>>BigInt(32))),Xr(t.g,r.h,r.g);break;default:r=Hu(e),Xr(t.g,r.h,r.g)}},Ot()),ke=Je(function(t,e,r){return t.h===0&&(Qe(e,r,_r(t.g)),!0)},Bl,ri),js=hn(function(t,e,r){return(t.h===0||t.h===2)&&(e=un(e,oe(e),r,!1,!1),t.h==2?Gs(t,_r,e):e.push(_r(t.g)),!0)},function(t,e,r){if((e=fn(on,e))!=null&&e.length){r=Ja(t,r);for(let n=0;n<e.length;n++)Vs(t.g,e[n]);Qa(t,r)}},ri),Hr=Je(function(t,e,r){return t.h===0&&(Qe(e,r,(t=_r(t.g))===0?void 0:t),!0)},Bl,ri),_e=Je(function(t,e,r){return t.h===0&&(Qe(e,r,Ka(t.g)),!0)},Ul,_l),jr=Je(function(t,e,r){return t.h===0&&(Qe(e,r,(t=Ka(t.g))===!1?void 0:t),!0)},Ul,_l),je=hn(function(t,e,r){return t.h===2&&(t=Za(t),un(e,oe(e),r,!1).push(t),!0)},function(t,e,r){if((e=fn(pr,e))!=null)for(let a=0;a<e.length;a++){var n=t,s=r,o=e[a];o!=null&&Ws(n,s,Vc(o))}},ti),dr=Je(function(t,e,r){return t.h===2&&(Qe(e,r,(t=Za(t))===""?void 0:t),!0)},Ll,ti),ne=Je(function(t,e,r){return t.h===2&&(Qe(e,r,Za(t)),!0)},Ll,ti),De=function(t,e,r=ei){return new ln(t,e,r)}(function(t,e,r,n,s){return t.h===2&&(n=gr(void 0,n,!0),un(e,oe(e),r,!0).push(n),Xn(t,n,s),!0)},function(t,e,r,n,s){if(Array.isArray(e))for(let o=0;o<e.length;o++)Pl(t,e[o],r,n,s)}),se=$s(function(t,e,r,n,s,o){return t.h===2&&(cl(e,Fe(e),o,r),Xn(t,e=Xa(e,n,r),s),!0)},Pl),Ml=Je(function(t,e,r){return t.h===2&&(Qe(e,r,xl(t)),!0)},Ol,wl),Bd=hn(function(t,e,r){return(t.h===0||t.h===2)&&(e=un(e,oe(e),r,!1,!1),t.h==2?Gs(t,or,e):e.push(or(t.g)),!0)},function(t,e,r){if((e=fn(el,e))!=null)for(let a=0;a<e.length;a++){var n=t,s=r,o=e[a];o!=null&&(ft(n,s,0),cn(n.g,o))}},bl),Ud=Je(function(t,e,r){return t.h===0&&(Qe(e,r,(t=or(t.g))===0?void 0:t),!0)},function(t,e,r){(e=el(e))!=null&&e!=null&&(ft(t,r,0),cn(t.g,e))},bl),Lt=Je(function(t,e,r){return t.h===0&&(Qe(e,r,_r(t.g)),!0)},function(t,e,r){(e=on(e))!=null&&(e=parseInt(e,10),ft(t,r,0),Vs(t.g,e))},Tl),pa=class{constructor(e,r){this.h=e,this.g=r,this.l=Y,this.m=$,this.defaultValue=void 0}};function Dt(t,e){return new pa(t,e)}function kr(t,e){return(r,n)=>{if(ls.length){let o=ls.pop();o.o(n),Zo(o.g,r,n),r=o}else r=new class{constructor(o,a){if(zu.length){let i=zu.pop();Zo(i,o,a),o=i}else o=new class{constructor(i,u){this.h=null,this.m=!1,this.g=this.l=this.j=0,Zo(this,i,u)}clear(){this.h=null,this.m=!1,this.g=this.l=this.j=0,this.ca=!1}}(o,a);this.g=o,this.l=this.g.g,this.h=this.m=-1,this.o(a)}o({ga:o=!1}={}){this.ga=o}}(r,n);try{let o=new t,a=o.u;ii(e)(a,r);var s=o}finally{r.g.clear(),r.m=-1,r.h=-1,ls.length<100&&ls.push(r)}return s}}function Ys(t){return function(){let e=new class{constructor(){this.l=[],this.h=0,this.g=new class{constructor(){this.g=[]}length(){return this.g.length}end(){let a=this.g;return this.g=[],a}}}};Fl(this.u,e,Lr(zs,Hs,Xs,t)),Jr(e,e.g.end());let r=new Uint8Array(e.h),n=e.l,s=n.length,o=0;for(let a=0;a<s;a++){let i=n[a];r.set(i,o),o+=i.length}return e.l=[r],r}}var Ku=class extends M{constructor(t){super(t)}},Zu=[0,dr,Je(function(t,e,r){return t.h===2&&(Qe(e,r,(t=xl(t))===Ur()?void 0:t),!0)},function(t,e,r){if(e!=null){if(e instanceof M){let n=e.Qa;return void(n&&(e=n(e),e!=null&&Ws(t,r,Ya(e).buffer)))}if(Array.isArray(e))return}Ol(t,e,r)},wl)],Qo,Ju=globalThis.trustedTypes;function Qu(t){Qo===void 0&&(Qo=function(){let r=null;if(!Ju)return r;try{let n=s=>s;r=Ju.createPolicy("goog#html",{createHTML:n,createScript:n,createScriptURL:n})}catch{}return r}());var e=Qo;return new class{constructor(r){this.g=r}toString(){return this.g+""}}(e?e.createScriptURL(t):t)}function Ld(t,...e){if(e.length===0)return Qu(t[0]);let r=t[0];for(let n=0;n<e.length;n++)r+=encodeURIComponent(e[n])+t[n+1];return Qu(r)}var Nl=[0,ke,Lt,_e,-1,js,Lt,-1],Pd=class extends M{constructor(){super()}},Gl=[0,_e,ne,_e,Lt,-1,hn(function(t,e,r){return(t.h===0||t.h===2)&&(e=un(e,oe(e),r,!1,!1),t.h==2?Gs(t,Td,e):e.push(_r(t.g)),!0)},function(t,e,r){if((e=fn(on,e))!=null&&e.length){r=Ja(t,r);for(let n=0;n<e.length;n++)Vs(t.g,e[n]);Qa(t,r)}},Tl),ne,-1,[0,_e,-1],Lt,_e,-1],Vl=[0,ne,-2],ec=class extends M{constructor(){super()}},Wl=[0],$l=[0,ke,_e,1,_e,-3],lt=class extends M{constructor(t){super(t,2)}},Pe={};Pe[336783863]=[0,ne,_e,-1,ke,[0,[1,2,3,4,5,6,7],se,Wl,se,Gl,se,Vl,se,$l,se,Nl,se,[0,ne,-2],se,[0,ne,Lt]],[0,ne],_e,[0,[1,3],[2,4],se,[0,js],-1,se,[0,je],-1,De,[0,ne,-1]],ne];var tc=[0,Jo,-1,jr,-3,Jo,js,dr,Hr,Jo,-1,jr,Hr,jr,-2,dr];function ht(t,e){la(t,2,an(e),"")}function le(t,e){Ns(t,3,e)}function j(t,e){Ns(t,4,e)}var Ze=class extends M{constructor(t){super(t,500)}o(t){return $(this,0,7,t)}},On=[-1,{}],rc=[0,ne,1,On],nc=[0,ne,je,On];function dt(t,e){Es(t,1,Ze,e)}function ge(t,e){Ns(t,10,e)}function Z(t,e){Ns(t,15,e)}var nt=class extends M{constructor(t){super(t,500)}o(t){return $(this,0,1001,t)}},zl=[-500,De,[-500,dr,-1,je,-3,[-2,Pe,_e],De,Zu,Hr,-1,rc,nc,De,[0,dr,jr],dr,tc,Hr,je,987,je],4,De,[-500,ne,-1,[-1,{}],998,ne],De,[-500,ne,je,-1,[-2,{},_e],997,je,-1],Hr,De,[-500,ne,je,On,998,je],je,Hr,rc,nc,De,[0,dr,-1,On],je,-2,tc,dr,-1,jr,[0,jr,Ud],978,On,De,Zu];nt.prototype.g=Ys(zl);var Od=kr(nt,zl),Dd=class extends M{constructor(t){super(t)}},Hl=class extends M{constructor(t){super(t)}g(){return sr(this,Dd,1)}},Xl=[0,De,[0,ke,Me,ne,-1]],qs=kr(Hl,Xl),Md=class extends M{constructor(t){super(t)}},Nd=class extends M{constructor(t){super(t)}},ea=class extends M{constructor(t){super(t)}h(){return Y(this,Md,2)}g(){return sr(this,Nd,5)}},jl=kr(class extends M{constructor(t){super(t)}},[0,je,js,ui,[0,Lt,[0,ke,-3],[0,Me,-3],[0,ke,-1,[0,De,[0,ke,-2]]],De,[0,Me,-1,ne,Me]],ne,-1,br,De,[0,ke,Me],je,br]),Yl=class extends M{constructor(t){super(t)}},Yr=kr(class extends M{constructor(t){super(t)}},[0,De,[0,Me,-4]]),ql=class extends M{constructor(t){super(t)}},jn=kr(class extends M{constructor(t){super(t)}},[0,De,[0,Me,-4]]),Gd=class extends M{constructor(t){super(t)}},Vd=[0,ke,-1,ui,Lt],Kl=class extends M{constructor(){super()}};Kl.prototype.g=Ys([0,Me,-4,br]);var Wd=class extends M{constructor(t){super(t)}},$d=kr(class extends M{constructor(t){super(t)}},[0,De,[0,1,ke,ne,Xl],br]),sc=class extends M{constructor(t){super(t)}},zd=class extends M{constructor(t){super(t)}pa(){let t=il(this);return t??Ur()}},Hd=class extends M{constructor(t){super(t)}},Zl=[1,2],Xd=kr(class extends M{constructor(t){super(t)}},[0,De,[0,Zl,se,[0,ui],se,[0,Ml],ke,ne],br]),ci=class extends M{constructor(t){super(t)}},Jl=[0,ne,ke,Me,je,-1],oc=class extends M{constructor(t){super(t)}},jd=[0,_e,-1],ac=class extends M{constructor(t){super(t)}},gs=[1,2,3,4,5],Ss=class extends M{constructor(t){super(t)}g(){return il(this)!=null}h(){return pr(yr(this,2))!=null}},ye=class extends M{constructor(t){super(t)}g(){return Qc(yr(this,2))??!1}},Ql=[0,Ml,ne,[0,ke,br,-1],[0,Cd,br]],Ce=[0,Ql,_e,[0,gs,se,$l,se,Gl,se,Nl,se,Wl,se,Vl],Lt],Ks=class extends M{constructor(t){super(t)}},li=[0,Ce,Me,-1,ke],Yd=Dt(502141897,Ks);Pe[502141897]=li;var qd=kr(class extends M{constructor(t){super(t)}},[0,[0,Lt,-1,Fd,Bd],Vd]),ef=class extends M{constructor(t){super(t)}},tf=class extends M{constructor(t){super(t)}},fi=[0,Ce,Me,[0,Ce],_e],rf=[0,Ce,li,fi,Me,[0,[0,Ql]]],Kd=Dt(508968150,tf);Pe[508968150]=rf,Pe[508968149]=fi;var nf=class extends M{constructor(t){super(t)}},Zd=Dt(513916220,nf);Pe[513916220]=[0,Ce,rf,ke];var $r=class extends M{constructor(t){super(t)}h(){return Y(this,ci,2)}g(){ce(this,2)}},sf=[0,Ce,Jl];Pe[478825465]=sf;var Jd=class extends M{constructor(t){super(t)}},of=class extends M{constructor(t){super(t)}},hi=class extends M{constructor(t){super(t)}},di=class extends M{constructor(t){super(t)}},af=class extends M{constructor(t){super(t)}},ic=[0,Ce,[0,Ce],sf,-1],uf=[0,Ce,Me,ke],mi=[0,Ce,Me],cf=[0,Ce,uf,mi,Me],Qd=Dt(479097054,af);Pe[479097054]=[0,Ce,cf,ic],Pe[463370452]=ic,Pe[464864288]=uf;var em=Dt(462713202,di);Pe[462713202]=cf,Pe[474472470]=mi;var tm=class extends M{constructor(t){super(t)}},lf=class extends M{constructor(t){super(t)}},ff=class extends M{constructor(t){super(t)}},hf=class extends M{constructor(){super()}},pi=[0,Ce,Me,-1,ke],ga=[0,Ce,Me,_e];hf.prototype.g=Ys([0,Ce,mi,[0,Ce],li,fi,pi,ga]);var df=class extends M{constructor(t){super(t)}},rm=Dt(456383383,df);Pe[456383383]=[0,Ce,Jl];var mf=class extends M{constructor(t){super(t)}},nm=Dt(476348187,mf);Pe[476348187]=[0,Ce,jd];var pf=class extends M{constructor(t){super(t)}},uc=class extends M{constructor(t){super(t)}},gf=[0,Lt,-1],sm=Dt(458105876,class extends M{constructor(t){super(t)}g(){var t=this.u;let e=oe(t),r=2&e;return t=function(n,s,o){var a=uc;let i=2&s,u=!1;if(o==null){if(i)return Wu();o=[]}else if(o.constructor===Tt){if((2&o.M)==0||i)return o;o=o.Y()}else Array.isArray(o)?u=!!(2&Fe(o)):o=[];if(i){if(!o.length)return Wu();u||(u=!0,sn(o))}else u&&(u=!1,o=ul(o));return u||(64&Fe(o)?aa(o,32):32&s&&Bs(o,32)),be(n,s,2,a=new Tt(o,a,md,void 0)),a}(t,e,ar(t,e,2)),!r&&uc&&(t.sa=!0),t}});Pe[458105876]=[0,gf,Sd,[!0,br,[0,ne,-1,je]]];var gi=class extends M{constructor(t){super(t)}},xf=Dt(458105758,gi);Pe[458105758]=[0,Ce,ne,gf];var yf=class extends M{constructor(t){super(t)}},om=Dt(443442058,yf);Pe[443442058]=[0,Ce,ne,ke,Me,je,-1],Pe[514774813]=pi;var _f=class extends M{constructor(t){super(t)}},am=Dt(516587230,_f);function xa(t,e){return e=e?e.clone():new ci,t.displayNamesLocale!==void 0?ce(e,1,an(t.displayNamesLocale)):t.displayNamesLocale===void 0&&ce(e,1),t.maxResults!==void 0?Yt(e,2,t.maxResults):"maxResults"in t&&ce(e,2),t.scoreThreshold!==void 0?G(e,3,t.scoreThreshold):"scoreThreshold"in t&&ce(e,3),t.categoryAllowlist!==void 0?As(e,4,t.categoryAllowlist):"categoryAllowlist"in t&&ce(e,4),t.categoryDenylist!==void 0?As(e,5,t.categoryDenylist):"categoryDenylist"in t&&ce(e,5),e}function xi(t,e=-1,r=""){return{categories:t.map(n=>({index:Ut(wt(n,1),0)??-1,score:Se(n,2)??0,categoryName:jt(n,3)??"",displayName:jt(n,4)??""})),headIndex:e,headName:r}}function bf(t){var e=Fr(t,3,Tr,Sr()),r=Fr(t,2,on,Sr()),n=Fr(t,1,pr,Sr()),s=Fr(t,9,pr,Sr());let o={categories:[],keypoints:[]};for(let a=0;a<e.length;a++)o.categories.push({score:e[a],index:r[a]??-1,categoryName:n[a]??"",displayName:s[a]??""});if((e=Y(t,ea,4)?.h())&&(o.boundingBox={originX:wt(e,1)??0,originY:wt(e,2)??0,width:wt(e,3)??0,height:wt(e,4)??0,angle:0}),Y(t,ea,4)?.g().length)for(let a of Y(t,ea,4).g())o.keypoints.push({x:ms(a,1)??0,y:ms(a,2)??0,score:ms(a,4)??0,label:pr(yr(a,3))??""});return o}function Zs(t){let e=[];for(let r of sr(t,ql,1))e.push({x:Se(r,1)??0,y:Se(r,2)??0,z:Se(r,3)??0,visibility:Se(r,4)??0});return e}function Dn(t){let e=[];for(let r of sr(t,Yl,1))e.push({x:Se(r,1)??0,y:Se(r,2)??0,z:Se(r,3)??0,visibility:Se(r,4)??0});return e}function cc(t){return Array.from(t,e=>e>127?e-256:e)}function lc(t,e){if(t.length!==e.length)throw Error(`Cannot compute cosine similarity between embeddings of different sizes (${t.length} vs. ${e.length}).`);let r=0,n=0,s=0;for(let o=0;o<t.length;o++)r+=t[o]*e[o],n+=t[o]*t[o],s+=e[o]*e[o];if(n<=0||s<=0)throw Error("Cannot compute cosine similarity on embedding with 0 norm.");return r/Math.sqrt(n*s)}var fs;Pe[516587230]=[0,Ce,pi,ga,Me],Pe[518928384]=ga;var im=new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11]);async function vf(){if(fs===void 0)try{await WebAssembly.instantiate(im),fs=!0}catch{fs=!1}return fs}async function Fn(t,e=Ld``){let r=await vf()?"wasm_internal":"wasm_nosimd_internal";return{wasmLoaderPath:`${e}/${t}_${r}.js`,wasmBinaryPath:`${e}/${t}_${r}.wasm`}}var fr=class{};function wf(){var t=navigator;return typeof OffscreenCanvas<"u"&&(!function(e=navigator){return(e=e.userAgent).includes("Safari")&&!e.includes("Chrome")}(t)||!!((t=t.userAgent.match(/Version\/([\d]+).*Safari/))&&t.length>=1&&Number(t[1])>=17))}async function fc(t){if(typeof importScripts!="function"){let e=document.createElement("script");return e.src=t.toString(),e.crossOrigin="anonymous",new Promise((r,n)=>{e.addEventListener("load",()=>{r()},!1),e.addEventListener("error",s=>{n(s)},!1),document.body.appendChild(e)})}importScripts(t.toString())}function Tf(t){return t.videoWidth!==void 0?[t.videoWidth,t.videoHeight]:t.naturalWidth!==void 0?[t.naturalWidth,t.naturalHeight]:t.displayWidth!==void 0?[t.displayWidth,t.displayHeight]:[t.width,t.height]}function W(t,e,r){t.m||console.error("No wasm multistream support detected: ensure dependency inclusion of :gl_graph_runner_internal_multi_input target"),r(e=t.i.stringToNewUTF8(e)),t.i._free(e)}function hc(t,e,r){if(!t.i.canvas)throw Error("No OpenGL canvas configured.");if(r?t.i._bindTextureToStream(r):t.i._bindTextureToCanvas(),!(r=t.i.canvas.getContext("webgl2")||t.i.canvas.getContext("webgl")))throw Error("Failed to obtain WebGL context from the provided canvas. `getContext()` should only be invoked with `webgl` or `webgl2`.");t.i.gpuOriginForWebTexturesIsBottomLeft&&r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,!0),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,r.RGBA,r.UNSIGNED_BYTE,e),t.i.gpuOriginForWebTexturesIsBottomLeft&&r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,!1);let[n,s]=Tf(e);return!t.l||n===t.i.canvas.width&&s===t.i.canvas.height||(t.i.canvas.width=n,t.i.canvas.height=s),[n,s]}function dc(t,e,r){t.m||console.error("No wasm multistream support detected: ensure dependency inclusion of :gl_graph_runner_internal_multi_input target");let n=new Uint32Array(e.length);for(let s=0;s<e.length;s++)n[s]=t.i.stringToNewUTF8(e[s]);e=t.i._malloc(4*n.length),t.i.HEAPU32.set(n,e>>2),r(e);for(let s of n)t.i._free(s);t.i._free(e)}function $t(t,e,r){t.i.simpleListeners=t.i.simpleListeners||{},t.i.simpleListeners[e]=r}function lr(t,e,r){let n=[];t.i.simpleListeners=t.i.simpleListeners||{},t.i.simpleListeners[e]=(s,o,a)=>{o?(r(n,a),n=[]):n.push(s)}}fr.forVisionTasks=function(t){return Fn("vision",t)},fr.forTextTasks=function(t){return Fn("text",t)},fr.forGenAiExperimentalTasks=function(t){return Fn("genai_experimental",t)},fr.forGenAiTasks=function(t){return Fn("genai",t)},fr.forAudioTasks=function(t){return Fn("audio",t)},fr.isSimdSupported=function(){return vf()};async function um(t,e,r,n){return t=await(async(s,o,a,i,u)=>{if(o&&await fc(o),!self.ModuleFactory||a&&(await fc(a),!self.ModuleFactory))throw Error("ModuleFactory not set.");return self.Module&&u&&((o=self.Module).locateFile=u.locateFile,u.mainScriptUrlOrBlob&&(o.mainScriptUrlOrBlob=u.mainScriptUrlOrBlob)),u=await self.ModuleFactory(self.Module||u),self.ModuleFactory=self.Module=void 0,new s(u,i)})(t,r.wasmLoaderPath,r.assetLoaderPath,e,{locateFile:s=>s.endsWith(".wasm")?r.wasmBinaryPath.toString():r.assetBinaryPath&&s.endsWith(".data")?r.assetBinaryPath.toString():s}),await t.o(n),t}function ta(t,e){let r=Y(t.baseOptions,Ss,1)||new Ss;typeof e=="string"?(ce(r,2,an(e)),ce(r,1)):e instanceof Uint8Array&&(ce(r,1,Ca(e,!1)),ce(r,2)),$(t.baseOptions,0,1,r)}function mc(t){try{let e=t.H.length;if(e===1)throw Error(t.H[0].message);if(e>1)throw Error("Encountered multiple errors: "+t.H.map(r=>r.message).join(", "))}finally{t.H=[]}}function D(t,e){t.B=Math.max(t.B,e)}function Js(t,e){t.A=new Ze,ht(t.A,"PassThroughCalculator"),le(t.A,"free_memory"),j(t.A,"free_memory_unused_out"),ge(e,"free_memory"),dt(e,t.A)}function Qr(t,e){le(t.A,e),j(t.A,e+"_unused_out")}function Qs(t){t.g.addBoolToStream(!0,"free_memory",t.B)}var xs=class{constructor(t){this.g=t,this.H=[],this.B=0,this.g.setAutoRenderToScreen(!1)}l(t,e=!0){if(e){let r=t.baseOptions||{};if(t.baseOptions?.modelAssetBuffer&&t.baseOptions?.modelAssetPath)throw Error("Cannot set both baseOptions.modelAssetPath and baseOptions.modelAssetBuffer");if(!(Y(this.baseOptions,Ss,1)?.g()||Y(this.baseOptions,Ss,1)?.h()||t.baseOptions?.modelAssetBuffer||t.baseOptions?.modelAssetPath))throw Error("Either baseOptions.modelAssetPath or baseOptions.modelAssetBuffer must be set");if(function(n,s){let o=Y(n.baseOptions,ac,3);if(!o){var a=o=new ac,i=new ec;Pn(a,4,gs,i)}"delegate"in s&&(s.delegate==="GPU"?(s=o,a=new Pd,Pn(s,2,gs,a)):(s=o,a=new ec,Pn(s,4,gs,a))),$(n.baseOptions,0,3,o)}(this,r),r.modelAssetPath)return fetch(r.modelAssetPath.toString()).then(n=>{if(n.ok)return n.arrayBuffer();throw Error(`Failed to fetch model: ${r.modelAssetPath} (${n.status})`)}).then(n=>{try{this.g.i.FS_unlink("/model.dat")}catch{}this.g.i.FS_createDataFile("/","model.dat",new Uint8Array(n),!0,!1,!1),ta(this,"/model.dat"),this.m(),this.J()});if(r.modelAssetBuffer instanceof Uint8Array)ta(this,r.modelAssetBuffer);else if(r.modelAssetBuffer)return async function(n){let s=[];for(var o=0;;){let{done:a,value:i}=await n.read();if(a)break;s.push(i),o+=i.length}if(s.length===0)return new Uint8Array(0);if(s.length===1)return s[0];n=new Uint8Array(o),o=0;for(let a of s)n.set(a,o),o+=a.length;return n}(r.modelAssetBuffer).then(n=>{ta(this,n),this.m(),this.J()})}return this.m(),this.J(),Promise.resolve()}J(){}ea(){let t;if(this.g.ea(e=>{t=Od(e)}),!t)throw Error("Failed to retrieve CalculatorGraphConfig");return t}setGraph(t,e){this.g.attachErrorListener((r,n)=>{this.H.push(Error(n))}),this.g.La(),this.g.setGraph(t,e),this.A=void 0,mc(this)}finishProcessing(){this.g.finishProcessing(),mc(this)}close(){this.A=void 0,this.g.closeGraph()}};function Ke(t,e){if(!t)throw Error(`Unable to obtain required WebGL resource: ${e}`);return t}xs.prototype.close=xs.prototype.close,Gc("TaskRunner",xs);var ya=class{constructor(e,r,n,s){this.g=e,this.h=r,this.m=n,this.l=s}bind(){this.g.bindVertexArray(this.h)}close(){this.g.deleteVertexArray(this.h),this.g.deleteBuffer(this.m),this.g.deleteBuffer(this.l)}};function pc(t,e,r){let n=t.g;if(r=Ke(n.createShader(r),"Failed to create WebGL shader"),n.shaderSource(r,e),n.compileShader(r),!n.getShaderParameter(r,n.COMPILE_STATUS))throw Error(`Could not compile WebGL shader: ${n.getShaderInfoLog(r)}`);return n.attachShader(t.h,r),r}function gc(t,e){let r=t.g,n=Ke(r.createVertexArray(),"Failed to create vertex array");r.bindVertexArray(n);let s=Ke(r.createBuffer(),"Failed to create buffer");r.bindBuffer(r.ARRAY_BUFFER,s),r.enableVertexAttribArray(t.P),r.vertexAttribPointer(t.P,2,r.FLOAT,!1,0,0),r.bufferData(r.ARRAY_BUFFER,new Float32Array([-1,-1,-1,1,1,1,1,-1]),r.STATIC_DRAW);let o=Ke(r.createBuffer(),"Failed to create buffer");return r.bindBuffer(r.ARRAY_BUFFER,o),r.enableVertexAttribArray(t.J),r.vertexAttribPointer(t.J,2,r.FLOAT,!1,0,0),r.bufferData(r.ARRAY_BUFFER,new Float32Array(e?[0,1,0,0,1,0,1,1]:[0,0,0,1,1,1,1,0]),r.STATIC_DRAW),r.bindBuffer(r.ARRAY_BUFFER,null),r.bindVertexArray(null),new ya(r,n,s,o)}function yi(t,e){if(t.g){if(e!==t.g)throw Error("Cannot change GL context once initialized")}else t.g=e}function Yn(t,e,r,n){return yi(t,e),t.h||(t.m(),t.C()),r?(t.s||(t.s=gc(t,!0)),r=t.s):(t.v||(t.v=gc(t,!1)),r=t.v),e.useProgram(t.h),r.bind(),t.l(),t=n(),r.g.bindVertexArray(null),t}function vr(t,e,r){return yi(t,e),t=Ke(e.createTexture(),"Failed to create texture"),e.bindTexture(e.TEXTURE_2D,t),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,r??e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,r??e.LINEAR),e.bindTexture(e.TEXTURE_2D,null),t}function eo(t,e,r){yi(t,e),t.A||(t.A=Ke(e.createFramebuffer(),"Failed to create framebuffe.")),e.bindFramebuffer(e.FRAMEBUFFER,t.A),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,r,0)}function _i(t){t.g?.bindFramebuffer(t.g.FRAMEBUFFER,null)}var dn=class{H(){return`
2
2
  precision mediump float;
3
3
  varying vec2 vTex;
4
4
  uniform sampler2D inputTexture;
5
5
  void main() {
6
6
  gl_FragColor = texture2D(inputTexture, vTex);
7
7
  }
8
- `}m(){let t=this.g;if(this.h=Ye(t.createProgram(),"Failed to create WebGL program"),this.ba=mc(this,`
8
+ `}m(){let t=this.g;if(this.h=Ke(t.createProgram(),"Failed to create WebGL program"),this.ba=pc(this,`
9
9
  attribute vec2 aVertex;
10
10
  attribute vec2 aTex;
11
11
  varying vec2 vTex;
12
12
  void main(void) {
13
13
  gl_Position = vec4(aVertex, 0.0, 1.0);
14
14
  vTex = aTex;
15
- }`,t.VERTEX_SHADER),this.aa=mc(this,this.H(),t.FRAGMENT_SHADER),t.linkProgram(this.h),!t.getProgramParameter(this.h,t.LINK_STATUS))throw Error(`Error during program linking: ${t.getProgramInfoLog(this.h)}`);this.P=t.getAttribLocation(this.h,"aVertex"),this.J=t.getAttribLocation(this.h,"aTex")}C(){}l(){}close(){if(this.h){let t=this.g;t.deleteProgram(this.h),t.deleteShader(this.ba),t.deleteShader(this.aa)}this.A&&this.g.deleteFramebuffer(this.A),this.v&&this.v.close(),this.s&&this.s.close()}},um=class extends ln{H(){return`
15
+ }`,t.VERTEX_SHADER),this.aa=pc(this,this.H(),t.FRAGMENT_SHADER),t.linkProgram(this.h),!t.getProgramParameter(this.h,t.LINK_STATUS))throw Error(`Error during program linking: ${t.getProgramInfoLog(this.h)}`);this.P=t.getAttribLocation(this.h,"aVertex"),this.J=t.getAttribLocation(this.h,"aTex")}C(){}l(){}close(){if(this.h){let t=this.g;t.deleteProgram(this.h),t.deleteShader(this.ba),t.deleteShader(this.aa)}this.A&&this.g.deleteFramebuffer(this.A),this.v&&this.v.close(),this.s&&this.s.close()}},cm=class extends dn{H(){return`
16
16
  precision mediump float;
17
17
  uniform sampler2D backgroundTexture;
18
18
  uniform sampler2D maskTexture;
@@ -24,7 +24,7 @@ var Fr=typeof self<"u"?self:{};function Nc(t,e){t=t.split(".");var r,n=Fr;for((t
24
24
  vec4 categoryColor = texture2D(colorMappingTexture, vec2(category, 0.0));
25
25
  gl_FragColor = mix(backgroundColor, categoryColor, categoryColor.a);
26
26
  }
27
- `}C(){let t=this.g;t.activeTexture(t.TEXTURE1),this.B=br(this,t,t.LINEAR),t.activeTexture(t.TEXTURE2),this.j=br(this,t,t.NEAREST)}m(){super.m();let t=this.g;this.L=Ye(t.getUniformLocation(this.h,"backgroundTexture"),"Uniform location"),this.U=Ye(t.getUniformLocation(this.h,"colorMappingTexture"),"Uniform location"),this.K=Ye(t.getUniformLocation(this.h,"maskTexture"),"Uniform location")}l(){super.l();let t=this.g;t.uniform1i(this.K,0),t.uniform1i(this.L,1),t.uniform1i(this.U,2)}close(){this.B&&this.g.deleteTexture(this.B),this.j&&this.g.deleteTexture(this.j),super.close()}},cm=class extends ln{H(){return`
27
+ `}C(){let t=this.g;t.activeTexture(t.TEXTURE1),this.B=vr(this,t,t.LINEAR),t.activeTexture(t.TEXTURE2),this.j=vr(this,t,t.NEAREST)}m(){super.m();let t=this.g;this.L=Ke(t.getUniformLocation(this.h,"backgroundTexture"),"Uniform location"),this.U=Ke(t.getUniformLocation(this.h,"colorMappingTexture"),"Uniform location"),this.K=Ke(t.getUniformLocation(this.h,"maskTexture"),"Uniform location")}l(){super.l();let t=this.g;t.uniform1i(this.K,0),t.uniform1i(this.L,1),t.uniform1i(this.U,2)}close(){this.B&&this.g.deleteTexture(this.B),this.j&&this.g.deleteTexture(this.j),super.close()}},lm=class extends dn{H(){return`
28
28
  precision mediump float;
29
29
  uniform sampler2D maskTexture;
30
30
  uniform sampler2D defaultTexture;
@@ -38,38 +38,38 @@ var Fr=typeof self<"u"?self:{};function Nc(t,e){t=t.split(".");var r,n=Fr;for((t
38
38
  overlayColor = mix(defaultColor, overlayColor, overlayColor.a);
39
39
  gl_FragColor = mix(defaultColor, overlayColor, confidence);
40
40
  }
41
- `}C(){let t=this.g;t.activeTexture(t.TEXTURE1),this.j=br(this,t),t.activeTexture(t.TEXTURE2),this.B=br(this,t)}m(){super.m();let t=this.g;this.K=Ye(t.getUniformLocation(this.h,"defaultTexture"),"Uniform location"),this.L=Ye(t.getUniformLocation(this.h,"overlayTexture"),"Uniform location"),this.I=Ye(t.getUniformLocation(this.h,"maskTexture"),"Uniform location")}l(){super.l();let t=this.g;t.uniform1i(this.I,0),t.uniform1i(this.K,1),t.uniform1i(this.L,2)}close(){this.j&&this.g.deleteTexture(this.j),this.B&&this.g.deleteTexture(this.B),super.close()}};function er(t,e){switch(e){case 0:return t.g.find(r=>r instanceof Uint8Array);case 1:return t.g.find(r=>r instanceof Float32Array);case 2:return t.g.find(r=>typeof WebGLTexture<"u"&&r instanceof WebGLTexture);default:throw Error(`Type is not supported: ${e}`)}}function ga(t){var e=er(t,1);if(!e){if(e=er(t,0))e=new Float32Array(e).map(n=>n/255);else{e=new Float32Array(t.width*t.height);let n=Zr(t);var r=xi(t);if(eo(r,n,Tf(t)),"iPad Simulator;iPhone Simulator;iPod Simulator;iPad;iPhone;iPod".split(";").includes(navigator.platform)||navigator.userAgent.includes("Mac")&&"document"in self&&"ontouchend"in self.document){r=new Float32Array(t.width*t.height*4),n.readPixels(0,0,t.width,t.height,n.RGBA,n.FLOAT,r);for(let s=0,o=0;s<e.length;++s,o+=4)e[s]=r[o]}else n.readPixels(0,0,t.width,t.height,n.RED,n.FLOAT,e)}t.g.push(e)}return e}function Tf(t){let e=er(t,2);if(!e){let r=Zr(t);e=Ef(t);let n=ga(t),s=kf(t);r.texImage2D(r.TEXTURE_2D,0,s,t.width,t.height,0,r.RED,r.FLOAT,n),xa(t)}return e}function Zr(t){if(!t.canvas)throw Error("Conversion to different image formats require that a canvas is passed when initializing the image.");return t.h||(t.h=Ye(t.canvas.getContext("webgl2"),"You cannot use a canvas that is already bound to a different type of rendering context.")),t.h}function kf(t){if(t=Zr(t),!hs)if(t.getExtension("EXT_color_buffer_float")&&t.getExtension("OES_texture_float_linear")&&t.getExtension("EXT_float_blend"))hs=t.R32F;else{if(!t.getExtension("EXT_color_buffer_half_float"))throw Error("GPU does not fully support 4-channel float32 or float16 formats");hs=t.R16F}return hs}function xi(t){return t.l||(t.l=new ln),t.l}function Ef(t){let e=Zr(t);e.viewport(0,0,t.width,t.height),e.activeTexture(e.TEXTURE0);let r=er(t,2);return r||(r=br(xi(t),e,t.m?e.LINEAR:e.NEAREST),t.g.push(r),t.j=!0),e.bindTexture(e.TEXTURE_2D,r),r}function xa(t){t.h.bindTexture(t.h.TEXTURE_2D,null)}var hs,Pe=class{constructor(t,e,r,n,s,o,a){this.g=t,this.m=e,this.j=r,this.canvas=n,this.l=s,this.width=o,this.height=a,this.j&&--gc===0&&console.error("You seem to be creating MPMask instances without invoking .close(). This leaks resources.")}Ga(){return!!er(this,0)}ka(){return!!er(this,1)}R(){return!!er(this,2)}ja(){return(e=er(t=this,0))||(e=ga(t),e=new Uint8Array(e.map(r=>255*r)),t.g.push(e)),e;var t,e}ia(){return ga(this)}N(){return Tf(this)}clone(){let t=[];for(let e of this.g){let r;if(e instanceof Uint8Array)r=new Uint8Array(e);else if(e instanceof Float32Array)r=new Float32Array(e);else{if(!(e instanceof WebGLTexture))throw Error(`Type is not supported: ${e}`);{let n=Zr(this),s=xi(this);n.activeTexture(n.TEXTURE1),r=br(s,n,this.m?n.LINEAR:n.NEAREST),n.bindTexture(n.TEXTURE_2D,r);let o=kf(this);n.texImage2D(n.TEXTURE_2D,0,o,this.width,this.height,0,n.RED,n.FLOAT,null),n.bindTexture(n.TEXTURE_2D,null),eo(s,n,r),Yn(s,n,!1,()=>{Ef(this),n.clearColor(0,0,0,0),n.clear(n.COLOR_BUFFER_BIT),n.drawArrays(n.TRIANGLE_FAN,0,4),xa(this)}),gi(s),xa(this)}}t.push(r)}return new Pe(t,this.m,this.R(),this.canvas,this.l,this.width,this.height)}close(){this.j&&Zr(this).deleteTexture(er(this,2)),gc=-1}};Pe.prototype.close=Pe.prototype.close,Pe.prototype.clone=Pe.prototype.clone,Pe.prototype.getAsWebGLTexture=Pe.prototype.N,Pe.prototype.getAsFloat32Array=Pe.prototype.ia,Pe.prototype.getAsUint8Array=Pe.prototype.ja,Pe.prototype.hasWebGLTexture=Pe.prototype.R,Pe.prototype.hasFloat32Array=Pe.prototype.ka,Pe.prototype.hasUint8Array=Pe.prototype.Ga;var gc=250,lm={color:"white",lineWidth:4,radius:6};function Qo(t){return{...lm,fillColor:(t=t||{}).color,...t}}function Jt(t,e){return t instanceof Function?t(e):t}function xc(t,e,r){return Math.max(Math.min(e,r),Math.min(Math.max(e,r),t))}function Fn(t){if(!t.l)throw Error("CPU rendering requested but CanvasRenderingContext2D not provided.");return t.l}function Wn(t){if(!t.j)throw Error("GPU rendering requested but WebGL2RenderingContext not provided.");return t.j}function yc(t,e,r){if(e.R())r(e.N());else{let n=e.ka()?e.ia():e.ja();t.m=t.m??new ln;let s=Wn(t);r((t=new Pe([n],e.m,!1,s.canvas,t.m,e.width,e.height)).N()),t.close()}}function _c(t,e,r,n){let s=function(i){return i.g||(i.g=new um),i.g}(t),o=Wn(t),a=Array.isArray(r)?new ImageData(new Uint8ClampedArray(r),1,1):r;Yn(s,o,!0,()=>{(function(u,l,c,f){let m=u.g;if(m.activeTexture(m.TEXTURE0),m.bindTexture(m.TEXTURE_2D,l),m.activeTexture(m.TEXTURE1),m.bindTexture(m.TEXTURE_2D,u.B),m.texImage2D(m.TEXTURE_2D,0,m.RGBA,m.RGBA,m.UNSIGNED_BYTE,c),u.I&&function(p,w){if(p!==w)return!1;p=p.entries(),w=w.entries();for(let[v,C]of p){p=v;let k=C;var A=w.next();if(A.done)return!1;let[T,S]=A.value;if(A=S,p!==T||k[0]!==A[0]||k[1]!==A[1]||k[2]!==A[2]||k[3]!==A[3])return!1}return!!w.next().done}(u.I,f))m.activeTexture(m.TEXTURE2),m.bindTexture(m.TEXTURE_2D,u.j);else{u.I=f;let p=Array(1024).fill(0);f.forEach((w,A)=>{if(w.length!==4)throw Error(`Color at index ${A} is not a four-channel value.`);p[4*A]=w[0],p[4*A+1]=w[1],p[4*A+2]=w[2],p[4*A+3]=w[3]}),m.activeTexture(m.TEXTURE2),m.bindTexture(m.TEXTURE_2D,u.j),m.texImage2D(m.TEXTURE_2D,0,m.RGBA,256,1,0,m.RGBA,m.UNSIGNED_BYTE,new Uint8Array(p))}})(s,e,a,n),o.clearColor(0,0,0,0),o.clear(o.COLOR_BUFFER_BIT),o.drawArrays(o.TRIANGLE_FAN,0,4);let i=s.g;i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,null),i.activeTexture(i.TEXTURE1),i.bindTexture(i.TEXTURE_2D,null),i.activeTexture(i.TEXTURE2),i.bindTexture(i.TEXTURE_2D,null)})}function bc(t,e,r,n){let s=Wn(t),o=function(u){return u.h||(u.h=new cm),u.h}(t),a=Array.isArray(r)?new ImageData(new Uint8ClampedArray(r),1,1):r,i=Array.isArray(n)?new ImageData(new Uint8ClampedArray(n),1,1):n;Yn(o,s,!0,()=>{var u=o.g;u.activeTexture(u.TEXTURE0),u.bindTexture(u.TEXTURE_2D,e),u.activeTexture(u.TEXTURE1),u.bindTexture(u.TEXTURE_2D,o.j),u.texImage2D(u.TEXTURE_2D,0,u.RGBA,u.RGBA,u.UNSIGNED_BYTE,a),u.activeTexture(u.TEXTURE2),u.bindTexture(u.TEXTURE_2D,o.B),u.texImage2D(u.TEXTURE_2D,0,u.RGBA,u.RGBA,u.UNSIGNED_BYTE,i),s.clearColor(0,0,0,0),s.clear(s.COLOR_BUFFER_BIT),s.drawArrays(s.TRIANGLE_FAN,0,4),s.bindTexture(s.TEXTURE_2D,null),(u=o.g).activeTexture(u.TEXTURE0),u.bindTexture(u.TEXTURE_2D,null),u.activeTexture(u.TEXTURE1),u.bindTexture(u.TEXTURE_2D,null),u.activeTexture(u.TEXTURE2),u.bindTexture(u.TEXTURE_2D,null)})}var je=class{constructor(t,e){t instanceof CanvasRenderingContext2D||t instanceof OffscreenCanvasRenderingContext2D?(this.l=t,this.j=e):this.j=t}za(t,e){if(t){var r=Fn(this);e=Qo(e),r.save();var n=r.canvas,s=0;for(let o of t)r.fillStyle=Jt(e.fillColor,{index:s,from:o}),r.strokeStyle=Jt(e.color,{index:s,from:o}),r.lineWidth=Jt(e.lineWidth,{index:s,from:o}),(t=new Path2D).arc(o.x*n.width,o.y*n.height,Jt(e.radius,{index:s,from:o}),0,2*Math.PI),r.fill(t),r.stroke(t),++s;r.restore()}}ya(t,e,r){if(t&&e){var n=Fn(this);r=Qo(r),n.save();var s=n.canvas,o=0;for(let a of e){n.beginPath(),e=t[a.start];let i=t[a.end];e&&i&&(n.strokeStyle=Jt(r.color,{index:o,from:e,to:i}),n.lineWidth=Jt(r.lineWidth,{index:o,from:e,to:i}),n.moveTo(e.x*s.width,e.y*s.height),n.lineTo(i.x*s.width,i.y*s.height)),++o,n.stroke()}n.restore()}}va(t,e){let r=Fn(this);e=Qo(e),r.save(),r.beginPath(),r.lineWidth=Jt(e.lineWidth,{}),r.strokeStyle=Jt(e.color,{}),r.fillStyle=Jt(e.fillColor,{}),r.moveTo(t.originX,t.originY),r.lineTo(t.originX+t.width,t.originY),r.lineTo(t.originX+t.width,t.originY+t.height),r.lineTo(t.originX,t.originY+t.height),r.lineTo(t.originX,t.originY),r.stroke(),r.fill(),r.restore()}wa(t,e,r=[0,0,0,255]){this.l?function(n,s,o,a){let i=Wn(n);yc(n,s,u=>{_c(n,u,o,a),(u=Fn(n)).drawImage(i.canvas,0,0,u.canvas.width,u.canvas.height)})}(this,t,r,e):_c(this,t.N(),r,e)}xa(t,e,r){this.l?function(n,s,o,a){let i=Wn(n);yc(n,s,u=>{bc(n,u,o,a),(u=Fn(n)).drawImage(i.canvas,0,0,u.canvas.width,u.canvas.height)})}(this,t,e,r):bc(this,t.N(),e,r)}close(){this.g?.close(),this.g=void 0,this.h?.close(),this.h=void 0,this.m?.close(),this.m=void 0}};function Ht(t,e){switch(e){case 0:return t.g.find(r=>r instanceof ImageData);case 1:return t.g.find(r=>typeof ImageBitmap<"u"&&r instanceof ImageBitmap);case 2:return t.g.find(r=>typeof WebGLTexture<"u"&&r instanceof WebGLTexture);default:throw Error(`Type is not supported: ${e}`)}}function Af(t){var e=Ht(t,0);if(!e){e=Jr(t);let r=to(t),n=new Uint8Array(t.width*t.height*4);eo(r,e,ys(t)),e.readPixels(0,0,t.width,t.height,e.RGBA,e.UNSIGNED_BYTE,n),gi(r),e=new ImageData(new Uint8ClampedArray(n.buffer),t.width,t.height),t.g.push(e)}return e}function ys(t){let e=Ht(t,2);if(!e){let r=Jr(t);e=_s(t);let n=Ht(t,1)||Af(t);r.texImage2D(r.TEXTURE_2D,0,r.RGBA,r.RGBA,r.UNSIGNED_BYTE,n),Un(t)}return e}function Jr(t){if(!t.canvas)throw Error("Conversion to different image formats require that a canvas is passed when iniitializing the image.");return t.h||(t.h=Ye(t.canvas.getContext("webgl2"),"You cannot use a canvas that is already bound to a different type of rendering context.")),t.h}function to(t){return t.l||(t.l=new ln),t.l}function _s(t){let e=Jr(t);e.viewport(0,0,t.width,t.height),e.activeTexture(e.TEXTURE0);let r=Ht(t,2);return r||(r=br(to(t),e),t.g.push(r),t.m=!0),e.bindTexture(e.TEXTURE_2D,r),r}function Un(t){t.h.bindTexture(t.h.TEXTURE_2D,null)}function vc(t){let e=Jr(t);return Yn(to(t),e,!0,()=>function(r,n){let s=r.canvas;if(s.width===r.width&&s.height===r.height)return n();let o=s.width,a=s.height;return s.width=r.width,s.height=r.height,r=n(),s.width=o,s.height=a,r}(t,()=>{if(e.bindFramebuffer(e.FRAMEBUFFER,null),e.clearColor(0,0,0,0),e.clear(e.COLOR_BUFFER_BIT),e.drawArrays(e.TRIANGLE_FAN,0,4),!(t.canvas instanceof OffscreenCanvas))throw Error("Conversion to ImageBitmap requires that the MediaPipe Tasks is initialized with an OffscreenCanvas");return t.canvas.transferToImageBitmap()}))}je.prototype.close=je.prototype.close,je.prototype.drawConfidenceMask=je.prototype.xa,je.prototype.drawCategoryMask=je.prototype.wa,je.prototype.drawBoundingBox=je.prototype.va,je.prototype.drawConnectors=je.prototype.ya,je.prototype.drawLandmarks=je.prototype.za,je.lerp=function(t,e,r,n,s){return xc(n*(1-(t-e)/(r-e))+s*(1-(r-t)/(r-e)),n,s)},je.clamp=xc,Nc("DrawingUtils",je);var Me=class{constructor(t,e,r,n,s,o,a){this.g=t,this.j=e,this.m=r,this.canvas=n,this.l=s,this.width=o,this.height=a,(this.j||this.m)&&--wc===0&&console.error("You seem to be creating MPImage instances without invoking .close(). This leaks resources.")}Fa(){return!!Ht(this,0)}la(){return!!Ht(this,1)}R(){return!!Ht(this,2)}Da(){return Af(this)}Ca(){var t=Ht(this,1);return t||(ys(this),_s(this),t=vc(this),Un(this),this.g.push(t),this.j=!0),t}N(){return ys(this)}clone(){let t=[];for(let e of this.g){let r;if(e instanceof ImageData)r=new ImageData(e.data,this.width,this.height);else if(e instanceof WebGLTexture){let n=Jr(this),s=to(this);n.activeTexture(n.TEXTURE1),r=br(s,n),n.bindTexture(n.TEXTURE_2D,r),n.texImage2D(n.TEXTURE_2D,0,n.RGBA,this.width,this.height,0,n.RGBA,n.UNSIGNED_BYTE,null),n.bindTexture(n.TEXTURE_2D,null),eo(s,n,r),Yn(s,n,!1,()=>{_s(this),n.clearColor(0,0,0,0),n.clear(n.COLOR_BUFFER_BIT),n.drawArrays(n.TRIANGLE_FAN,0,4),Un(this)}),gi(s),Un(this)}else{if(!(e instanceof ImageBitmap))throw Error(`Type is not supported: ${e}`);ys(this),_s(this),r=vc(this),Un(this)}t.push(r)}return new Me(t,this.la(),this.R(),this.canvas,this.l,this.width,this.height)}close(){this.j&&Ht(this,1).close(),this.m&&Jr(this).deleteTexture(Ht(this,2)),wc=-1}};Me.prototype.close=Me.prototype.close,Me.prototype.clone=Me.prototype.clone,Me.prototype.getAsWebGLTexture=Me.prototype.N,Me.prototype.getAsImageBitmap=Me.prototype.Ca,Me.prototype.getAsImageData=Me.prototype.Da,Me.prototype.hasWebGLTexture=Me.prototype.R,Me.prototype.hasImageBitmap=Me.prototype.la,Me.prototype.hasImageData=Me.prototype.Fa;var wc=250;function Dt(...t){return t.map(([e,r])=>({start:e,end:r}))}var fm=function(t){return class extends t{La(){this.i._registerModelResourcesGraphService()}}}((Tc=class{constructor(t,e){this.l=!0,this.i=t,this.g=null,this.h=0,this.m=typeof this.i._addIntToInputStream=="function",e!==void 0?this.i.canvas=e:vf()?this.i.canvas=new OffscreenCanvas(1,1):(console.warn("OffscreenCanvas not supported and GraphRunner constructor glCanvas parameter is undefined. Creating backup canvas."),this.i.canvas=document.createElement("canvas"))}async initializeGraph(t){let e=await(await fetch(t)).arrayBuffer();t=!(t.endsWith(".pbtxt")||t.endsWith(".textproto")),this.setGraph(new Uint8Array(e),t)}setGraphFromString(t){this.setGraph(new TextEncoder().encode(t),!1)}setGraph(t,e){let r=t.length,n=this.i._malloc(r);this.i.HEAPU8.set(t,n),e?this.i._changeBinaryGraph(r,n):this.i._changeTextGraph(r,n),this.i._free(n)}configureAudio(t,e,r,n,s){this.i._configureAudio||console.warn('Attempting to use configureAudio without support for input audio. Is build dep ":gl_graph_runner_audio" missing?'),W(this,n||"input_audio",o=>{W(this,s=s||"audio_header",a=>{this.i._configureAudio(o,a,t,e??0,r)})})}setAutoResizeCanvas(t){this.l=t}setAutoRenderToScreen(t){this.i._setAutoRenderToScreen(t)}setGpuBufferVerticalFlip(t){this.i.gpuOriginForWebTexturesIsBottomLeft=t}ea(t){Wt(this,"__graph_config__",e=>{t(e)}),W(this,"__graph_config__",e=>{this.i._getGraphConfig(e,void 0)}),delete this.i.simpleListeners.__graph_config__}attachErrorListener(t){this.i.errorListener=t}attachEmptyPacketListener(t,e){this.i.emptyPacketListeners=this.i.emptyPacketListeners||{},this.i.emptyPacketListeners[t]=e}addAudioToStream(t,e,r){this.addAudioToStreamWithShape(t,0,0,e,r)}addAudioToStreamWithShape(t,e,r,n,s){let o=4*t.length;this.h!==o&&(this.g&&this.i._free(this.g),this.g=this.i._malloc(o),this.h=o),this.i.HEAPF32.set(t,this.g/4),W(this,n,a=>{this.i._addAudioToInputStream(this.g,e,r,a,s)})}addGpuBufferToStream(t,e,r){W(this,e,n=>{let[s,o]=fc(this,t,n);this.i._addBoundTextureToStream(n,s,o,r)})}addBoolToStream(t,e,r){W(this,e,n=>{this.i._addBoolToInputStream(t,n,r)})}addDoubleToStream(t,e,r){W(this,e,n=>{this.i._addDoubleToInputStream(t,n,r)})}addFloatToStream(t,e,r){W(this,e,n=>{this.i._addFloatToInputStream(t,n,r)})}addIntToStream(t,e,r){W(this,e,n=>{this.i._addIntToInputStream(t,n,r)})}addUintToStream(t,e,r){W(this,e,n=>{this.i._addUintToInputStream(t,n,r)})}addStringToStream(t,e,r){W(this,e,n=>{W(this,t,s=>{this.i._addStringToInputStream(s,n,r)})})}addStringRecordToStream(t,e,r){W(this,e,n=>{hc(this,Object.keys(t),s=>{hc(this,Object.values(t),o=>{this.i._addFlatHashMapToInputStream(s,o,Object.keys(t).length,n,r)})})})}addProtoToStream(t,e,r,n){W(this,r,s=>{W(this,e,o=>{let a=this.i._malloc(t.length);this.i.HEAPU8.set(t,a),this.i._addProtoToInputStream(a,t.length,o,s,n),this.i._free(a)})})}addEmptyPacketToStream(t,e){W(this,t,r=>{this.i._addEmptyPacketToInputStream(r,e)})}addBoolVectorToStream(t,e,r){W(this,e,n=>{let s=this.i._allocateBoolVector(t.length);if(!s)throw Error("Unable to allocate new bool vector on heap.");for(let o of t)this.i._addBoolVectorEntry(s,o);this.i._addBoolVectorToInputStream(s,n,r)})}addDoubleVectorToStream(t,e,r){W(this,e,n=>{let s=this.i._allocateDoubleVector(t.length);if(!s)throw Error("Unable to allocate new double vector on heap.");for(let o of t)this.i._addDoubleVectorEntry(s,o);this.i._addDoubleVectorToInputStream(s,n,r)})}addFloatVectorToStream(t,e,r){W(this,e,n=>{let s=this.i._allocateFloatVector(t.length);if(!s)throw Error("Unable to allocate new float vector on heap.");for(let o of t)this.i._addFloatVectorEntry(s,o);this.i._addFloatVectorToInputStream(s,n,r)})}addIntVectorToStream(t,e,r){W(this,e,n=>{let s=this.i._allocateIntVector(t.length);if(!s)throw Error("Unable to allocate new int vector on heap.");for(let o of t)this.i._addIntVectorEntry(s,o);this.i._addIntVectorToInputStream(s,n,r)})}addUintVectorToStream(t,e,r){W(this,e,n=>{let s=this.i._allocateUintVector(t.length);if(!s)throw Error("Unable to allocate new unsigned int vector on heap.");for(let o of t)this.i._addUintVectorEntry(s,o);this.i._addUintVectorToInputStream(s,n,r)})}addStringVectorToStream(t,e,r){W(this,e,n=>{let s=this.i._allocateStringVector(t.length);if(!s)throw Error("Unable to allocate new string vector on heap.");for(let o of t)W(this,o,a=>{this.i._addStringVectorEntry(s,a)});this.i._addStringVectorToInputStream(s,n,r)})}addBoolToInputSidePacket(t,e){W(this,e,r=>{this.i._addBoolToInputSidePacket(t,r)})}addDoubleToInputSidePacket(t,e){W(this,e,r=>{this.i._addDoubleToInputSidePacket(t,r)})}addFloatToInputSidePacket(t,e){W(this,e,r=>{this.i._addFloatToInputSidePacket(t,r)})}addIntToInputSidePacket(t,e){W(this,e,r=>{this.i._addIntToInputSidePacket(t,r)})}addUintToInputSidePacket(t,e){W(this,e,r=>{this.i._addUintToInputSidePacket(t,r)})}addStringToInputSidePacket(t,e){W(this,e,r=>{W(this,t,n=>{this.i._addStringToInputSidePacket(n,r)})})}addProtoToInputSidePacket(t,e,r){W(this,r,n=>{W(this,e,s=>{let o=this.i._malloc(t.length);this.i.HEAPU8.set(t,o),this.i._addProtoToInputSidePacket(o,t.length,s,n),this.i._free(o)})})}addBoolVectorToInputSidePacket(t,e){W(this,e,r=>{let n=this.i._allocateBoolVector(t.length);if(!n)throw Error("Unable to allocate new bool vector on heap.");for(let s of t)this.i._addBoolVectorEntry(n,s);this.i._addBoolVectorToInputSidePacket(n,r)})}addDoubleVectorToInputSidePacket(t,e){W(this,e,r=>{let n=this.i._allocateDoubleVector(t.length);if(!n)throw Error("Unable to allocate new double vector on heap.");for(let s of t)this.i._addDoubleVectorEntry(n,s);this.i._addDoubleVectorToInputSidePacket(n,r)})}addFloatVectorToInputSidePacket(t,e){W(this,e,r=>{let n=this.i._allocateFloatVector(t.length);if(!n)throw Error("Unable to allocate new float vector on heap.");for(let s of t)this.i._addFloatVectorEntry(n,s);this.i._addFloatVectorToInputSidePacket(n,r)})}addIntVectorToInputSidePacket(t,e){W(this,e,r=>{let n=this.i._allocateIntVector(t.length);if(!n)throw Error("Unable to allocate new int vector on heap.");for(let s of t)this.i._addIntVectorEntry(n,s);this.i._addIntVectorToInputSidePacket(n,r)})}addUintVectorToInputSidePacket(t,e){W(this,e,r=>{let n=this.i._allocateUintVector(t.length);if(!n)throw Error("Unable to allocate new unsigned int vector on heap.");for(let s of t)this.i._addUintVectorEntry(n,s);this.i._addUintVectorToInputSidePacket(n,r)})}addStringVectorToInputSidePacket(t,e){W(this,e,r=>{let n=this.i._allocateStringVector(t.length);if(!n)throw Error("Unable to allocate new string vector on heap.");for(let s of t)W(this,s,o=>{this.i._addStringVectorEntry(n,o)});this.i._addStringVectorToInputSidePacket(n,r)})}attachBoolListener(t,e){Wt(this,t,e),W(this,t,r=>{this.i._attachBoolListener(r)})}attachBoolVectorListener(t,e){cr(this,t,e),W(this,t,r=>{this.i._attachBoolVectorListener(r)})}attachIntListener(t,e){Wt(this,t,e),W(this,t,r=>{this.i._attachIntListener(r)})}attachIntVectorListener(t,e){cr(this,t,e),W(this,t,r=>{this.i._attachIntVectorListener(r)})}attachUintListener(t,e){Wt(this,t,e),W(this,t,r=>{this.i._attachUintListener(r)})}attachUintVectorListener(t,e){cr(this,t,e),W(this,t,r=>{this.i._attachUintVectorListener(r)})}attachDoubleListener(t,e){Wt(this,t,e),W(this,t,r=>{this.i._attachDoubleListener(r)})}attachDoubleVectorListener(t,e){cr(this,t,e),W(this,t,r=>{this.i._attachDoubleVectorListener(r)})}attachFloatListener(t,e){Wt(this,t,e),W(this,t,r=>{this.i._attachFloatListener(r)})}attachFloatVectorListener(t,e){cr(this,t,e),W(this,t,r=>{this.i._attachFloatVectorListener(r)})}attachStringListener(t,e){Wt(this,t,e),W(this,t,r=>{this.i._attachStringListener(r)})}attachStringVectorListener(t,e){cr(this,t,e),W(this,t,r=>{this.i._attachStringVectorListener(r)})}attachProtoListener(t,e,r){Wt(this,t,e),W(this,t,n=>{this.i._attachProtoListener(n,r||!1)})}attachProtoVectorListener(t,e,r){cr(this,t,e),W(this,t,n=>{this.i._attachProtoVectorListener(n,r||!1)})}attachAudioListener(t,e,r){this.i._attachAudioListener||console.warn('Attempting to use attachAudioListener without support for output audio. Is build dep ":gl_graph_runner_audio_out" missing?'),Wt(this,t,(n,s)=>{n=new Float32Array(n.buffer,n.byteOffset,n.length/4),e(n,s)}),W(this,t,n=>{this.i._attachAudioListener(n,r||!1)})}finishProcessing(){this.i._waitUntilIdle()}closeGraph(){this.i._closeGraph(),this.i.simpleListeners=void 0,this.i.emptyPacketListeners=void 0}},class extends Tc{get fa(){return this.i}ra(t,e,r){W(this,e,n=>{let[s,o]=fc(this,t,n);this.fa._addBoundTextureAsImageToStream(n,s,o,r)})}V(t,e){Wt(this,t,e),W(this,t,r=>{this.fa._attachImageListener(r)})}da(t,e){cr(this,t,e),W(this,t,r=>{this.fa._attachImageVectorListener(r)})}})),Tc,Tt=class extends fm{};async function X(t,e,r){return async function(n,s,o,a){return im(n,s,o,a)}(t,r.canvas??(vf()?void 0:document.createElement("canvas")),e,r)}function Rf(t,e,r,n){if(t.U){let o=new ql;if(r?.regionOfInterest){if(!t.qa)throw Error("This task doesn't support region-of-interest.");var s=r.regionOfInterest;if(s.left>=s.right||s.top>=s.bottom)throw Error("Expected RectF with left < right and top < bottom.");if(s.left<0||s.top<0||s.right>1||s.bottom>1)throw Error("Expected RectF values to be in [0,1].");G(o,1,(s.left+s.right)/2),G(o,2,(s.top+s.bottom)/2),G(o,4,s.right-s.left),G(o,3,s.bottom-s.top)}else G(o,1,.5),G(o,2,.5),G(o,4,1),G(o,3,1);if(r?.rotationDegrees){if(r?.rotationDegrees%90!=0)throw Error("Expected rotation to be a multiple of 90\xB0.");if(G(o,5,-Math.PI*r.rotationDegrees/180),r?.rotationDegrees%180!=0){let[a,i]=wf(e);r=Ae(o,3)*i/a,s=Ae(o,4)*a/i,G(o,4,r),G(o,3,s)}}t.g.addProtoToStream(o.g(),"mediapipe.NormalizedRect",t.U,n)}t.g.ra(e,t.ba,n??performance.now()),t.finishProcessing()}function kt(t,e,r){if(t.baseOptions?.g())throw Error("Task is not initialized with image mode. 'runningMode' must be set to 'IMAGE'.");Rf(t,e,r,t.B+1)}function Yt(t,e,r,n){if(!t.baseOptions?.g())throw Error("Task is not initialized with video mode. 'runningMode' must be set to 'VIDEO'.");Rf(t,e,r,n)}function Qr(t,e,r,n){var s=e.data;let o=e.width,a=o*(e=e.height);if((s instanceof Uint8Array||s instanceof Float32Array)&&s.length!==a)throw Error("Unsupported channel count: "+s.length/a);return t=new Pe([s],r,!1,t.g.i.canvas,t.P,o,e),n?t.clone():t}var rt=class extends xs{constructor(t,e,r,n){super(t),this.g=t,this.ba=e,this.U=r,this.qa=n,this.P=new ln}l(t,e=!0){if("runningMode"in t&&Gn(this.baseOptions,2,!!t.runningMode&&t.runningMode!=="IMAGE"),t.canvas!==void 0&&this.g.i.canvas!==t.canvas)throw Error("You must create a new task to reset the canvas.");return super.l(t,e)}close(){this.P.close(),super.close()}};rt.prototype.close=rt.prototype.close;var xt=class extends rt{constructor(t,e){super(new Tt(t,e),"image_in","norm_rect_in",!1),this.j={detections:[]},$(t=this.h=new Ks,0,1,e=new ye),G(this.h,2,.5),G(this.h,3,.3)}get baseOptions(){return Y(this.h,ye,1)}set baseOptions(t){$(this.h,0,1,t)}o(t){return"minDetectionConfidence"in t&&G(this.h,2,t.minDetectionConfidence??.5),"minSuppressionThreshold"in t&&G(this.h,3,t.minSuppressionThreshold??.3),this.l(t)}D(t,e){return this.j={detections:[]},kt(this,t,e),this.j}F(t,e,r){return this.j={detections:[]},Yt(this,t,r,e),this.j}m(){var t=new nt;ge(t,"image_in"),ge(t,"norm_rect_in"),Z(t,"detections");let e=new lt;Lt(e,jd,this.h);let r=new qe;ht(r,"mediapipe.tasks.vision.face_detector.FaceDetectorGraph"),le(r,"IMAGE:image_in"),le(r,"NORM_RECT:norm_rect_in"),j(r,"DETECTIONS:detections"),r.o(e),dt(t,r),this.g.attachProtoVectorListener("detections",(n,s)=>{for(let o of n)n=Xl(o),this.j.detections.push(_f(n));D(this,s)}),this.g.attachEmptyPacketListener("detections",n=>{D(this,n)}),t=t.g(),this.setGraph(new Uint8Array(t),!0)}};xt.prototype.detectForVideo=xt.prototype.F,xt.prototype.detect=xt.prototype.D,xt.prototype.setOptions=xt.prototype.o,xt.createFromModelPath=async function(t,e){return X(xt,t,{baseOptions:{modelAssetPath:e}})},xt.createFromModelBuffer=function(t,e){return X(xt,t,{baseOptions:{modelAssetBuffer:e}})},xt.createFromOptions=function(t,e){return X(xt,t,e)};var yi=Dt([61,146],[146,91],[91,181],[181,84],[84,17],[17,314],[314,405],[405,321],[321,375],[375,291],[61,185],[185,40],[40,39],[39,37],[37,0],[0,267],[267,269],[269,270],[270,409],[409,291],[78,95],[95,88],[88,178],[178,87],[87,14],[14,317],[317,402],[402,318],[318,324],[324,308],[78,191],[191,80],[80,81],[81,82],[82,13],[13,312],[312,311],[311,310],[310,415],[415,308]),_i=Dt([263,249],[249,390],[390,373],[373,374],[374,380],[380,381],[381,382],[382,362],[263,466],[466,388],[388,387],[387,386],[386,385],[385,384],[384,398],[398,362]),bi=Dt([276,283],[283,282],[282,295],[295,285],[300,293],[293,334],[334,296],[296,336]),If=Dt([474,475],[475,476],[476,477],[477,474]),vi=Dt([33,7],[7,163],[163,144],[144,145],[145,153],[153,154],[154,155],[155,133],[33,246],[246,161],[161,160],[160,159],[159,158],[158,157],[157,173],[173,133]),wi=Dt([46,53],[53,52],[52,65],[65,55],[70,63],[63,105],[105,66],[66,107]),Sf=Dt([469,470],[470,471],[471,472],[472,469]),Ti=Dt([10,338],[338,297],[297,332],[332,284],[284,251],[251,389],[389,356],[356,454],[454,323],[323,361],[361,288],[288,397],[397,365],[365,379],[379,378],[378,400],[400,377],[377,152],[152,148],[148,176],[176,149],[149,150],[150,136],[136,172],[172,58],[58,132],[132,93],[93,234],[234,127],[127,162],[162,21],[21,54],[54,103],[103,67],[67,109],[109,10]),Cf=[...yi,..._i,...bi,...vi,...wi,...Ti],Ff=Dt([127,34],[34,139],[139,127],[11,0],[0,37],[37,11],[232,231],[231,120],[120,232],[72,37],[37,39],[39,72],[128,121],[121,47],[47,128],[232,121],[121,128],[128,232],[104,69],[69,67],[67,104],[175,171],[171,148],[148,175],[118,50],[50,101],[101,118],[73,39],[39,40],[40,73],[9,151],[151,108],[108,9],[48,115],[115,131],[131,48],[194,204],[204,211],[211,194],[74,40],[40,185],[185,74],[80,42],[42,183],[183,80],[40,92],[92,186],[186,40],[230,229],[229,118],[118,230],[202,212],[212,214],[214,202],[83,18],[18,17],[17,83],[76,61],[61,146],[146,76],[160,29],[29,30],[30,160],[56,157],[157,173],[173,56],[106,204],[204,194],[194,106],[135,214],[214,192],[192,135],[203,165],[165,98],[98,203],[21,71],[71,68],[68,21],[51,45],[45,4],[4,51],[144,24],[24,23],[23,144],[77,146],[146,91],[91,77],[205,50],[50,187],[187,205],[201,200],[200,18],[18,201],[91,106],[106,182],[182,91],[90,91],[91,181],[181,90],[85,84],[84,17],[17,85],[206,203],[203,36],[36,206],[148,171],[171,140],[140,148],[92,40],[40,39],[39,92],[193,189],[189,244],[244,193],[159,158],[158,28],[28,159],[247,246],[246,161],[161,247],[236,3],[3,196],[196,236],[54,68],[68,104],[104,54],[193,168],[168,8],[8,193],[117,228],[228,31],[31,117],[189,193],[193,55],[55,189],[98,97],[97,99],[99,98],[126,47],[47,100],[100,126],[166,79],[79,218],[218,166],[155,154],[154,26],[26,155],[209,49],[49,131],[131,209],[135,136],[136,150],[150,135],[47,126],[126,217],[217,47],[223,52],[52,53],[53,223],[45,51],[51,134],[134,45],[211,170],[170,140],[140,211],[67,69],[69,108],[108,67],[43,106],[106,91],[91,43],[230,119],[119,120],[120,230],[226,130],[130,247],[247,226],[63,53],[53,52],[52,63],[238,20],[20,242],[242,238],[46,70],[70,156],[156,46],[78,62],[62,96],[96,78],[46,53],[53,63],[63,46],[143,34],[34,227],[227,143],[123,117],[117,111],[111,123],[44,125],[125,19],[19,44],[236,134],[134,51],[51,236],[216,206],[206,205],[205,216],[154,153],[153,22],[22,154],[39,37],[37,167],[167,39],[200,201],[201,208],[208,200],[36,142],[142,100],[100,36],[57,212],[212,202],[202,57],[20,60],[60,99],[99,20],[28,158],[158,157],[157,28],[35,226],[226,113],[113,35],[160,159],[159,27],[27,160],[204,202],[202,210],[210,204],[113,225],[225,46],[46,113],[43,202],[202,204],[204,43],[62,76],[76,77],[77,62],[137,123],[123,116],[116,137],[41,38],[38,72],[72,41],[203,129],[129,142],[142,203],[64,98],[98,240],[240,64],[49,102],[102,64],[64,49],[41,73],[73,74],[74,41],[212,216],[216,207],[207,212],[42,74],[74,184],[184,42],[169,170],[170,211],[211,169],[170,149],[149,176],[176,170],[105,66],[66,69],[69,105],[122,6],[6,168],[168,122],[123,147],[147,187],[187,123],[96,77],[77,90],[90,96],[65,55],[55,107],[107,65],[89,90],[90,180],[180,89],[101,100],[100,120],[120,101],[63,105],[105,104],[104,63],[93,137],[137,227],[227,93],[15,86],[86,85],[85,15],[129,102],[102,49],[49,129],[14,87],[87,86],[86,14],[55,8],[8,9],[9,55],[100,47],[47,121],[121,100],[145,23],[23,22],[22,145],[88,89],[89,179],[179,88],[6,122],[122,196],[196,6],[88,95],[95,96],[96,88],[138,172],[172,136],[136,138],[215,58],[58,172],[172,215],[115,48],[48,219],[219,115],[42,80],[80,81],[81,42],[195,3],[3,51],[51,195],[43,146],[146,61],[61,43],[171,175],[175,199],[199,171],[81,82],[82,38],[38,81],[53,46],[46,225],[225,53],[144,163],[163,110],[110,144],[52,65],[65,66],[66,52],[229,228],[228,117],[117,229],[34,127],[127,234],[234,34],[107,108],[108,69],[69,107],[109,108],[108,151],[151,109],[48,64],[64,235],[235,48],[62,78],[78,191],[191,62],[129,209],[209,126],[126,129],[111,35],[35,143],[143,111],[117,123],[123,50],[50,117],[222,65],[65,52],[52,222],[19,125],[125,141],[141,19],[221,55],[55,65],[65,221],[3,195],[195,197],[197,3],[25,7],[7,33],[33,25],[220,237],[237,44],[44,220],[70,71],[71,139],[139,70],[122,193],[193,245],[245,122],[247,130],[130,33],[33,247],[71,21],[21,162],[162,71],[170,169],[169,150],[150,170],[188,174],[174,196],[196,188],[216,186],[186,92],[92,216],[2,97],[97,167],[167,2],[141,125],[125,241],[241,141],[164,167],[167,37],[37,164],[72,38],[38,12],[12,72],[38,82],[82,13],[13,38],[63,68],[68,71],[71,63],[226,35],[35,111],[111,226],[101,50],[50,205],[205,101],[206,92],[92,165],[165,206],[209,198],[198,217],[217,209],[165,167],[167,97],[97,165],[220,115],[115,218],[218,220],[133,112],[112,243],[243,133],[239,238],[238,241],[241,239],[214,135],[135,169],[169,214],[190,173],[173,133],[133,190],[171,208],[208,32],[32,171],[125,44],[44,237],[237,125],[86,87],[87,178],[178,86],[85,86],[86,179],[179,85],[84,85],[85,180],[180,84],[83,84],[84,181],[181,83],[201,83],[83,182],[182,201],[137,93],[93,132],[132,137],[76,62],[62,183],[183,76],[61,76],[76,184],[184,61],[57,61],[61,185],[185,57],[212,57],[57,186],[186,212],[214,207],[207,187],[187,214],[34,143],[143,156],[156,34],[79,239],[239,237],[237,79],[123,137],[137,177],[177,123],[44,1],[1,4],[4,44],[201,194],[194,32],[32,201],[64,102],[102,129],[129,64],[213,215],[215,138],[138,213],[59,166],[166,219],[219,59],[242,99],[99,97],[97,242],[2,94],[94,141],[141,2],[75,59],[59,235],[235,75],[24,110],[110,228],[228,24],[25,130],[130,226],[226,25],[23,24],[24,229],[229,23],[22,23],[23,230],[230,22],[26,22],[22,231],[231,26],[112,26],[26,232],[232,112],[189,190],[190,243],[243,189],[221,56],[56,190],[190,221],[28,56],[56,221],[221,28],[27,28],[28,222],[222,27],[29,27],[27,223],[223,29],[30,29],[29,224],[224,30],[247,30],[30,225],[225,247],[238,79],[79,20],[20,238],[166,59],[59,75],[75,166],[60,75],[75,240],[240,60],[147,177],[177,215],[215,147],[20,79],[79,166],[166,20],[187,147],[147,213],[213,187],[112,233],[233,244],[244,112],[233,128],[128,245],[245,233],[128,114],[114,188],[188,128],[114,217],[217,174],[174,114],[131,115],[115,220],[220,131],[217,198],[198,236],[236,217],[198,131],[131,134],[134,198],[177,132],[132,58],[58,177],[143,35],[35,124],[124,143],[110,163],[163,7],[7,110],[228,110],[110,25],[25,228],[356,389],[389,368],[368,356],[11,302],[302,267],[267,11],[452,350],[350,349],[349,452],[302,303],[303,269],[269,302],[357,343],[343,277],[277,357],[452,453],[453,357],[357,452],[333,332],[332,297],[297,333],[175,152],[152,377],[377,175],[347,348],[348,330],[330,347],[303,304],[304,270],[270,303],[9,336],[336,337],[337,9],[278,279],[279,360],[360,278],[418,262],[262,431],[431,418],[304,408],[408,409],[409,304],[310,415],[415,407],[407,310],[270,409],[409,410],[410,270],[450,348],[348,347],[347,450],[422,430],[430,434],[434,422],[313,314],[314,17],[17,313],[306,307],[307,375],[375,306],[387,388],[388,260],[260,387],[286,414],[414,398],[398,286],[335,406],[406,418],[418,335],[364,367],[367,416],[416,364],[423,358],[358,327],[327,423],[251,284],[284,298],[298,251],[281,5],[5,4],[4,281],[373,374],[374,253],[253,373],[307,320],[320,321],[321,307],[425,427],[427,411],[411,425],[421,313],[313,18],[18,421],[321,405],[405,406],[406,321],[320,404],[404,405],[405,320],[315,16],[16,17],[17,315],[426,425],[425,266],[266,426],[377,400],[400,369],[369,377],[322,391],[391,269],[269,322],[417,465],[465,464],[464,417],[386,257],[257,258],[258,386],[466,260],[260,388],[388,466],[456,399],[399,419],[419,456],[284,332],[332,333],[333,284],[417,285],[285,8],[8,417],[346,340],[340,261],[261,346],[413,441],[441,285],[285,413],[327,460],[460,328],[328,327],[355,371],[371,329],[329,355],[392,439],[439,438],[438,392],[382,341],[341,256],[256,382],[429,420],[420,360],[360,429],[364,394],[394,379],[379,364],[277,343],[343,437],[437,277],[443,444],[444,283],[283,443],[275,440],[440,363],[363,275],[431,262],[262,369],[369,431],[297,338],[338,337],[337,297],[273,375],[375,321],[321,273],[450,451],[451,349],[349,450],[446,342],[342,467],[467,446],[293,334],[334,282],[282,293],[458,461],[461,462],[462,458],[276,353],[353,383],[383,276],[308,324],[324,325],[325,308],[276,300],[300,293],[293,276],[372,345],[345,447],[447,372],[352,345],[345,340],[340,352],[274,1],[1,19],[19,274],[456,248],[248,281],[281,456],[436,427],[427,425],[425,436],[381,256],[256,252],[252,381],[269,391],[391,393],[393,269],[200,199],[199,428],[428,200],[266,330],[330,329],[329,266],[287,273],[273,422],[422,287],[250,462],[462,328],[328,250],[258,286],[286,384],[384,258],[265,353],[353,342],[342,265],[387,259],[259,257],[257,387],[424,431],[431,430],[430,424],[342,353],[353,276],[276,342],[273,335],[335,424],[424,273],[292,325],[325,307],[307,292],[366,447],[447,345],[345,366],[271,303],[303,302],[302,271],[423,266],[266,371],[371,423],[294,455],[455,460],[460,294],[279,278],[278,294],[294,279],[271,272],[272,304],[304,271],[432,434],[434,427],[427,432],[272,407],[407,408],[408,272],[394,430],[430,431],[431,394],[395,369],[369,400],[400,395],[334,333],[333,299],[299,334],[351,417],[417,168],[168,351],[352,280],[280,411],[411,352],[325,319],[319,320],[320,325],[295,296],[296,336],[336,295],[319,403],[403,404],[404,319],[330,348],[348,349],[349,330],[293,298],[298,333],[333,293],[323,454],[454,447],[447,323],[15,16],[16,315],[315,15],[358,429],[429,279],[279,358],[14,15],[15,316],[316,14],[285,336],[336,9],[9,285],[329,349],[349,350],[350,329],[374,380],[380,252],[252,374],[318,402],[402,403],[403,318],[6,197],[197,419],[419,6],[318,319],[319,325],[325,318],[367,364],[364,365],[365,367],[435,367],[367,397],[397,435],[344,438],[438,439],[439,344],[272,271],[271,311],[311,272],[195,5],[5,281],[281,195],[273,287],[287,291],[291,273],[396,428],[428,199],[199,396],[311,271],[271,268],[268,311],[283,444],[444,445],[445,283],[373,254],[254,339],[339,373],[282,334],[334,296],[296,282],[449,347],[347,346],[346,449],[264,447],[447,454],[454,264],[336,296],[296,299],[299,336],[338,10],[10,151],[151,338],[278,439],[439,455],[455,278],[292,407],[407,415],[415,292],[358,371],[371,355],[355,358],[340,345],[345,372],[372,340],[346,347],[347,280],[280,346],[442,443],[443,282],[282,442],[19,94],[94,370],[370,19],[441,442],[442,295],[295,441],[248,419],[419,197],[197,248],[263,255],[255,359],[359,263],[440,275],[275,274],[274,440],[300,383],[383,368],[368,300],[351,412],[412,465],[465,351],[263,467],[467,466],[466,263],[301,368],[368,389],[389,301],[395,378],[378,379],[379,395],[412,351],[351,419],[419,412],[436,426],[426,322],[322,436],[2,164],[164,393],[393,2],[370,462],[462,461],[461,370],[164,0],[0,267],[267,164],[302,11],[11,12],[12,302],[268,12],[12,13],[13,268],[293,300],[300,301],[301,293],[446,261],[261,340],[340,446],[330,266],[266,425],[425,330],[426,423],[423,391],[391,426],[429,355],[355,437],[437,429],[391,327],[327,326],[326,391],[440,457],[457,438],[438,440],[341,382],[382,362],[362,341],[459,457],[457,461],[461,459],[434,430],[430,394],[394,434],[414,463],[463,362],[362,414],[396,369],[369,262],[262,396],[354,461],[461,457],[457,354],[316,403],[403,402],[402,316],[315,404],[404,403],[403,315],[314,405],[405,404],[404,314],[313,406],[406,405],[405,313],[421,418],[418,406],[406,421],[366,401],[401,361],[361,366],[306,408],[408,407],[407,306],[291,409],[409,408],[408,291],[287,410],[410,409],[409,287],[432,436],[436,410],[410,432],[434,416],[416,411],[411,434],[264,368],[368,383],[383,264],[309,438],[438,457],[457,309],[352,376],[376,401],[401,352],[274,275],[275,4],[4,274],[421,428],[428,262],[262,421],[294,327],[327,358],[358,294],[433,416],[416,367],[367,433],[289,455],[455,439],[439,289],[462,370],[370,326],[326,462],[2,326],[326,370],[370,2],[305,460],[460,455],[455,305],[254,449],[449,448],[448,254],[255,261],[261,446],[446,255],[253,450],[450,449],[449,253],[252,451],[451,450],[450,252],[256,452],[452,451],[451,256],[341,453],[453,452],[452,341],[413,464],[464,463],[463,413],[441,413],[413,414],[414,441],[258,442],[442,441],[441,258],[257,443],[443,442],[442,257],[259,444],[444,443],[443,259],[260,445],[445,444],[444,260],[467,342],[342,445],[445,467],[459,458],[458,250],[250,459],[289,392],[392,290],[290,289],[290,328],[328,460],[460,290],[376,433],[433,435],[435,376],[250,290],[290,392],[392,250],[411,416],[416,433],[433,411],[341,463],[463,464],[464,341],[453,464],[464,465],[465,453],[357,465],[465,412],[412,357],[343,412],[412,399],[399,343],[360,363],[363,440],[440,360],[437,399],[399,456],[456,437],[420,456],[456,363],[363,420],[401,435],[435,288],[288,401],[372,383],[383,353],[353,372],[339,255],[255,249],[249,339],[448,261],[261,255],[255,448],[133,243],[243,190],[190,133],[133,155],[155,112],[112,133],[33,246],[246,247],[247,33],[33,130],[130,25],[25,33],[398,384],[384,286],[286,398],[362,398],[398,414],[414,362],[362,463],[463,341],[341,362],[263,359],[359,467],[467,263],[263,249],[249,255],[255,263],[466,467],[467,260],[260,466],[75,60],[60,166],[166,75],[238,239],[239,79],[79,238],[162,127],[127,139],[139,162],[72,11],[11,37],[37,72],[121,232],[232,120],[120,121],[73,72],[72,39],[39,73],[114,128],[128,47],[47,114],[233,232],[232,128],[128,233],[103,104],[104,67],[67,103],[152,175],[175,148],[148,152],[119,118],[118,101],[101,119],[74,73],[73,40],[40,74],[107,9],[9,108],[108,107],[49,48],[48,131],[131,49],[32,194],[194,211],[211,32],[184,74],[74,185],[185,184],[191,80],[80,183],[183,191],[185,40],[40,186],[186,185],[119,230],[230,118],[118,119],[210,202],[202,214],[214,210],[84,83],[83,17],[17,84],[77,76],[76,146],[146,77],[161,160],[160,30],[30,161],[190,56],[56,173],[173,190],[182,106],[106,194],[194,182],[138,135],[135,192],[192,138],[129,203],[203,98],[98,129],[54,21],[21,68],[68,54],[5,51],[51,4],[4,5],[145,144],[144,23],[23,145],[90,77],[77,91],[91,90],[207,205],[205,187],[187,207],[83,201],[201,18],[18,83],[181,91],[91,182],[182,181],[180,90],[90,181],[181,180],[16,85],[85,17],[17,16],[205,206],[206,36],[36,205],[176,148],[148,140],[140,176],[165,92],[92,39],[39,165],[245,193],[193,244],[244,245],[27,159],[159,28],[28,27],[30,247],[247,161],[161,30],[174,236],[236,196],[196,174],[103,54],[54,104],[104,103],[55,193],[193,8],[8,55],[111,117],[117,31],[31,111],[221,189],[189,55],[55,221],[240,98],[98,99],[99,240],[142,126],[126,100],[100,142],[219,166],[166,218],[218,219],[112,155],[155,26],[26,112],[198,209],[209,131],[131,198],[169,135],[135,150],[150,169],[114,47],[47,217],[217,114],[224,223],[223,53],[53,224],[220,45],[45,134],[134,220],[32,211],[211,140],[140,32],[109,67],[67,108],[108,109],[146,43],[43,91],[91,146],[231,230],[230,120],[120,231],[113,226],[226,247],[247,113],[105,63],[63,52],[52,105],[241,238],[238,242],[242,241],[124,46],[46,156],[156,124],[95,78],[78,96],[96,95],[70,46],[46,63],[63,70],[116,143],[143,227],[227,116],[116,123],[123,111],[111,116],[1,44],[44,19],[19,1],[3,236],[236,51],[51,3],[207,216],[216,205],[205,207],[26,154],[154,22],[22,26],[165,39],[39,167],[167,165],[199,200],[200,208],[208,199],[101,36],[36,100],[100,101],[43,57],[57,202],[202,43],[242,20],[20,99],[99,242],[56,28],[28,157],[157,56],[124,35],[35,113],[113,124],[29,160],[160,27],[27,29],[211,204],[204,210],[210,211],[124,113],[113,46],[46,124],[106,43],[43,204],[204,106],[96,62],[62,77],[77,96],[227,137],[137,116],[116,227],[73,41],[41,72],[72,73],[36,203],[203,142],[142,36],[235,64],[64,240],[240,235],[48,49],[49,64],[64,48],[42,41],[41,74],[74,42],[214,212],[212,207],[207,214],[183,42],[42,184],[184,183],[210,169],[169,211],[211,210],[140,170],[170,176],[176,140],[104,105],[105,69],[69,104],[193,122],[122,168],[168,193],[50,123],[123,187],[187,50],[89,96],[96,90],[90,89],[66,65],[65,107],[107,66],[179,89],[89,180],[180,179],[119,101],[101,120],[120,119],[68,63],[63,104],[104,68],[234,93],[93,227],[227,234],[16,15],[15,85],[85,16],[209,129],[129,49],[49,209],[15,14],[14,86],[86,15],[107,55],[55,9],[9,107],[120,100],[100,121],[121,120],[153,145],[145,22],[22,153],[178,88],[88,179],[179,178],[197,6],[6,196],[196,197],[89,88],[88,96],[96,89],[135,138],[138,136],[136,135],[138,215],[215,172],[172,138],[218,115],[115,219],[219,218],[41,42],[42,81],[81,41],[5,195],[195,51],[51,5],[57,43],[43,61],[61,57],[208,171],[171,199],[199,208],[41,81],[81,38],[38,41],[224,53],[53,225],[225,224],[24,144],[144,110],[110,24],[105,52],[52,66],[66,105],[118,229],[229,117],[117,118],[227,34],[34,234],[234,227],[66,107],[107,69],[69,66],[10,109],[109,151],[151,10],[219,48],[48,235],[235,219],[183,62],[62,191],[191,183],[142,129],[129,126],[126,142],[116,111],[111,143],[143,116],[118,117],[117,50],[50,118],[223,222],[222,52],[52,223],[94,19],[19,141],[141,94],[222,221],[221,65],[65,222],[196,3],[3,197],[197,196],[45,220],[220,44],[44,45],[156,70],[70,139],[139,156],[188,122],[122,245],[245,188],[139,71],[71,162],[162,139],[149,170],[170,150],[150,149],[122,188],[188,196],[196,122],[206,216],[216,92],[92,206],[164,2],[2,167],[167,164],[242,141],[141,241],[241,242],[0,164],[164,37],[37,0],[11,72],[72,12],[12,11],[12,38],[38,13],[13,12],[70,63],[63,71],[71,70],[31,226],[226,111],[111,31],[36,101],[101,205],[205,36],[203,206],[206,165],[165,203],[126,209],[209,217],[217,126],[98,165],[165,97],[97,98],[237,220],[220,218],[218,237],[237,239],[239,241],[241,237],[210,214],[214,169],[169,210],[140,171],[171,32],[32,140],[241,125],[125,237],[237,241],[179,86],[86,178],[178,179],[180,85],[85,179],[179,180],[181,84],[84,180],[180,181],[182,83],[83,181],[181,182],[194,201],[201,182],[182,194],[177,137],[137,132],[132,177],[184,76],[76,183],[183,184],[185,61],[61,184],[184,185],[186,57],[57,185],[185,186],[216,212],[212,186],[186,216],[192,214],[214,187],[187,192],[139,34],[34,156],[156,139],[218,79],[79,237],[237,218],[147,123],[123,177],[177,147],[45,44],[44,4],[4,45],[208,201],[201,32],[32,208],[98,64],[64,129],[129,98],[192,213],[213,138],[138,192],[235,59],[59,219],[219,235],[141,242],[242,97],[97,141],[97,2],[2,141],[141,97],[240,75],[75,235],[235,240],[229,24],[24,228],[228,229],[31,25],[25,226],[226,31],[230,23],[23,229],[229,230],[231,22],[22,230],[230,231],[232,26],[26,231],[231,232],[233,112],[112,232],[232,233],[244,189],[189,243],[243,244],[189,221],[221,190],[190,189],[222,28],[28,221],[221,222],[223,27],[27,222],[222,223],[224,29],[29,223],[223,224],[225,30],[30,224],[224,225],[113,247],[247,225],[225,113],[99,60],[60,240],[240,99],[213,147],[147,215],[215,213],[60,20],[20,166],[166,60],[192,187],[187,213],[213,192],[243,112],[112,244],[244,243],[244,233],[233,245],[245,244],[245,128],[128,188],[188,245],[188,114],[114,174],[174,188],[134,131],[131,220],[220,134],[174,217],[217,236],[236,174],[236,198],[198,134],[134,236],[215,177],[177,58],[58,215],[156,143],[143,124],[124,156],[25,110],[110,7],[7,25],[31,228],[228,25],[25,31],[264,356],[356,368],[368,264],[0,11],[11,267],[267,0],[451,452],[452,349],[349,451],[267,302],[302,269],[269,267],[350,357],[357,277],[277,350],[350,452],[452,357],[357,350],[299,333],[333,297],[297,299],[396,175],[175,377],[377,396],[280,347],[347,330],[330,280],[269,303],[303,270],[270,269],[151,9],[9,337],[337,151],[344,278],[278,360],[360,344],[424,418],[418,431],[431,424],[270,304],[304,409],[409,270],[272,310],[310,407],[407,272],[322,270],[270,410],[410,322],[449,450],[450,347],[347,449],[432,422],[422,434],[434,432],[18,313],[313,17],[17,18],[291,306],[306,375],[375,291],[259,387],[387,260],[260,259],[424,335],[335,418],[418,424],[434,364],[364,416],[416,434],[391,423],[423,327],[327,391],[301,251],[251,298],[298,301],[275,281],[281,4],[4,275],[254,373],[373,253],[253,254],[375,307],[307,321],[321,375],[280,425],[425,411],[411,280],[200,421],[421,18],[18,200],[335,321],[321,406],[406,335],[321,320],[320,405],[405,321],[314,315],[315,17],[17,314],[423,426],[426,266],[266,423],[396,377],[377,369],[369,396],[270,322],[322,269],[269,270],[413,417],[417,464],[464,413],[385,386],[386,258],[258,385],[248,456],[456,419],[419,248],[298,284],[284,333],[333,298],[168,417],[417,8],[8,168],[448,346],[346,261],[261,448],[417,413],[413,285],[285,417],[326,327],[327,328],[328,326],[277,355],[355,329],[329,277],[309,392],[392,438],[438,309],[381,382],[382,256],[256,381],[279,429],[429,360],[360,279],[365,364],[364,379],[379,365],[355,277],[277,437],[437,355],[282,443],[443,283],[283,282],[281,275],[275,363],[363,281],[395,431],[431,369],[369,395],[299,297],[297,337],[337,299],[335,273],[273,321],[321,335],[348,450],[450,349],[349,348],[359,446],[446,467],[467,359],[283,293],[293,282],[282,283],[250,458],[458,462],[462,250],[300,276],[276,383],[383,300],[292,308],[308,325],[325,292],[283,276],[276,293],[293,283],[264,372],[372,447],[447,264],[346,352],[352,340],[340,346],[354,274],[274,19],[19,354],[363,456],[456,281],[281,363],[426,436],[436,425],[425,426],[380,381],[381,252],[252,380],[267,269],[269,393],[393,267],[421,200],[200,428],[428,421],[371,266],[266,329],[329,371],[432,287],[287,422],[422,432],[290,250],[250,328],[328,290],[385,258],[258,384],[384,385],[446,265],[265,342],[342,446],[386,387],[387,257],[257,386],[422,424],[424,430],[430,422],[445,342],[342,276],[276,445],[422,273],[273,424],[424,422],[306,292],[292,307],[307,306],[352,366],[366,345],[345,352],[268,271],[271,302],[302,268],[358,423],[423,371],[371,358],[327,294],[294,460],[460,327],[331,279],[279,294],[294,331],[303,271],[271,304],[304,303],[436,432],[432,427],[427,436],[304,272],[272,408],[408,304],[395,394],[394,431],[431,395],[378,395],[395,400],[400,378],[296,334],[334,299],[299,296],[6,351],[351,168],[168,6],[376,352],[352,411],[411,376],[307,325],[325,320],[320,307],[285,295],[295,336],[336,285],[320,319],[319,404],[404,320],[329,330],[330,349],[349,329],[334,293],[293,333],[333,334],[366,323],[323,447],[447,366],[316,15],[15,315],[315,316],[331,358],[358,279],[279,331],[317,14],[14,316],[316,317],[8,285],[285,9],[9,8],[277,329],[329,350],[350,277],[253,374],[374,252],[252,253],[319,318],[318,403],[403,319],[351,6],[6,419],[419,351],[324,318],[318,325],[325,324],[397,367],[367,365],[365,397],[288,435],[435,397],[397,288],[278,344],[344,439],[439,278],[310,272],[272,311],[311,310],[248,195],[195,281],[281,248],[375,273],[273,291],[291,375],[175,396],[396,199],[199,175],[312,311],[311,268],[268,312],[276,283],[283,445],[445,276],[390,373],[373,339],[339,390],[295,282],[282,296],[296,295],[448,449],[449,346],[346,448],[356,264],[264,454],[454,356],[337,336],[336,299],[299,337],[337,338],[338,151],[151,337],[294,278],[278,455],[455,294],[308,292],[292,415],[415,308],[429,358],[358,355],[355,429],[265,340],[340,372],[372,265],[352,346],[346,280],[280,352],[295,442],[442,282],[282,295],[354,19],[19,370],[370,354],[285,441],[441,295],[295,285],[195,248],[248,197],[197,195],[457,440],[440,274],[274,457],[301,300],[300,368],[368,301],[417,351],[351,465],[465,417],[251,301],[301,389],[389,251],[394,395],[395,379],[379,394],[399,412],[412,419],[419,399],[410,436],[436,322],[322,410],[326,2],[2,393],[393,326],[354,370],[370,461],[461,354],[393,164],[164,267],[267,393],[268,302],[302,12],[12,268],[312,268],[268,13],[13,312],[298,293],[293,301],[301,298],[265,446],[446,340],[340,265],[280,330],[330,425],[425,280],[322,426],[426,391],[391,322],[420,429],[429,437],[437,420],[393,391],[391,326],[326,393],[344,440],[440,438],[438,344],[458,459],[459,461],[461,458],[364,434],[434,394],[394,364],[428,396],[396,262],[262,428],[274,354],[354,457],[457,274],[317,316],[316,402],[402,317],[316,315],[315,403],[403,316],[315,314],[314,404],[404,315],[314,313],[313,405],[405,314],[313,421],[421,406],[406,313],[323,366],[366,361],[361,323],[292,306],[306,407],[407,292],[306,291],[291,408],[408,306],[291,287],[287,409],[409,291],[287,432],[432,410],[410,287],[427,434],[434,411],[411,427],[372,264],[264,383],[383,372],[459,309],[309,457],[457,459],[366,352],[352,401],[401,366],[1,274],[274,4],[4,1],[418,421],[421,262],[262,418],[331,294],[294,358],[358,331],[435,433],[433,367],[367,435],[392,289],[289,439],[439,392],[328,462],[462,326],[326,328],[94,2],[2,370],[370,94],[289,305],[305,455],[455,289],[339,254],[254,448],[448,339],[359,255],[255,446],[446,359],[254,253],[253,449],[449,254],[253,252],[252,450],[450,253],[252,256],[256,451],[451,252],[256,341],[341,452],[452,256],[414,413],[413,463],[463,414],[286,441],[441,414],[414,286],[286,258],[258,441],[441,286],[258,257],[257,442],[442,258],[257,259],[259,443],[443,257],[259,260],[260,444],[444,259],[260,467],[467,445],[445,260],[309,459],[459,250],[250,309],[305,289],[289,290],[290,305],[305,290],[290,460],[460,305],[401,376],[376,435],[435,401],[309,250],[250,392],[392,309],[376,411],[411,433],[433,376],[453,341],[341,464],[464,453],[357,453],[453,465],[465,357],[343,357],[357,412],[412,343],[437,343],[343,399],[399,437],[344,360],[360,440],[440,344],[420,437],[437,456],[456,420],[360,420],[420,363],[363,360],[361,401],[401,288],[288,361],[265,372],[372,353],[353,265],[390,339],[339,249],[249,390],[339,448],[448,255],[255,339]);function kc(t){t.j={faceLandmarks:[],faceBlendshapes:[],facialTransformationMatrixes:[]}}var we=class extends rt{constructor(t,e){super(new Tt(t,e),"image_in","norm_rect",!1),this.j={faceLandmarks:[],faceBlendshapes:[],facialTransformationMatrixes:[]},this.outputFacialTransformationMatrixes=this.outputFaceBlendshapes=!1,$(t=this.h=new ef,0,1,e=new ye),this.v=new Ql,$(this.h,0,3,this.v),this.s=new Ks,$(this.h,0,2,this.s),jt(this.s,4,1),G(this.s,2,.5),G(this.v,2,.5),G(this.h,4,.5)}get baseOptions(){return Y(this.h,ye,1)}set baseOptions(t){$(this.h,0,1,t)}o(t){return"numFaces"in t&&jt(this.s,4,t.numFaces??1),"minFaceDetectionConfidence"in t&&G(this.s,2,t.minFaceDetectionConfidence??.5),"minTrackingConfidence"in t&&G(this.h,4,t.minTrackingConfidence??.5),"minFacePresenceConfidence"in t&&G(this.v,2,t.minFacePresenceConfidence??.5),"outputFaceBlendshapes"in t&&(this.outputFaceBlendshapes=!!t.outputFaceBlendshapes),"outputFacialTransformationMatrixes"in t&&(this.outputFacialTransformationMatrixes=!!t.outputFacialTransformationMatrixes),this.l(t)}D(t,e){return kc(this),kt(this,t,e),this.j}F(t,e,r){return kc(this),Yt(this,t,r,e),this.j}m(){var t=new nt;ge(t,"image_in"),ge(t,"norm_rect"),Z(t,"face_landmarks");let e=new lt;Lt(e,qd,this.h);let r=new qe;ht(r,"mediapipe.tasks.vision.face_landmarker.FaceLandmarkerGraph"),le(r,"IMAGE:image_in"),le(r,"NORM_RECT:norm_rect"),j(r,"NORM_LANDMARKS:face_landmarks"),r.o(e),dt(t,r),this.g.attachProtoVectorListener("face_landmarks",(n,s)=>{for(let o of n)n=jn(o),this.j.faceLandmarks.push(Zs(n));D(this,s)}),this.g.attachEmptyPacketListener("face_landmarks",n=>{D(this,n)}),this.outputFaceBlendshapes&&(Z(t,"blendshapes"),j(r,"BLENDSHAPES:blendshapes"),this.g.attachProtoVectorListener("blendshapes",(n,s)=>{if(this.outputFaceBlendshapes)for(let o of n)n=qs(o),this.j.faceBlendshapes.push(mi(n.g()??[]));D(this,s)}),this.g.attachEmptyPacketListener("blendshapes",n=>{D(this,n)})),this.outputFacialTransformationMatrixes&&(Z(t,"face_geometry"),j(r,"FACE_GEOMETRY:face_geometry"),this.g.attachProtoVectorListener("face_geometry",(n,s)=>{if(this.outputFacialTransformationMatrixes)for(let o of n)(n=Y(Yd(o),Nd,2))&&this.j.facialTransformationMatrixes.push({rows:Bt(vt(n,1),0)??0,columns:Bt(vt(n,2),0)??0,data:Sr(n,3,wr,Ir()).slice()??[]});D(this,s)}),this.g.attachEmptyPacketListener("face_geometry",n=>{D(this,n)})),t=t.g(),this.setGraph(new Uint8Array(t),!0)}};we.prototype.detectForVideo=we.prototype.F,we.prototype.detect=we.prototype.D,we.prototype.setOptions=we.prototype.o,we.createFromModelPath=function(t,e){return X(we,t,{baseOptions:{modelAssetPath:e}})},we.createFromModelBuffer=function(t,e){return X(we,t,{baseOptions:{modelAssetBuffer:e}})},we.createFromOptions=function(t,e){return X(we,t,e)},we.FACE_LANDMARKS_LIPS=yi,we.FACE_LANDMARKS_LEFT_EYE=_i,we.FACE_LANDMARKS_LEFT_EYEBROW=bi,we.FACE_LANDMARKS_LEFT_IRIS=If,we.FACE_LANDMARKS_RIGHT_EYE=vi,we.FACE_LANDMARKS_RIGHT_EYEBROW=wi,we.FACE_LANDMARKS_RIGHT_IRIS=Sf,we.FACE_LANDMARKS_FACE_OVAL=Ti,we.FACE_LANDMARKS_CONTOURS=Cf,we.FACE_LANDMARKS_TESSELATION=Ff;var $t=class extends rt{constructor(t,e){super(new Tt(t,e),"image_in","norm_rect",!0),$(t=this.j=new rf,0,1,e=new ye)}get baseOptions(){return Y(this.j,ye,1)}set baseOptions(t){$(this.j,0,1,t)}o(t){return super.l(t)}Oa(t,e,r){let n=typeof e!="function"?e:{};if(this.h=typeof e=="function"?e:r,kt(this,t,n??{}),!this.h)return this.s}m(){var t=new nt;ge(t,"image_in"),ge(t,"norm_rect"),Z(t,"stylized_image");let e=new lt;Lt(e,Kd,this.j);let r=new qe;ht(r,"mediapipe.tasks.vision.face_stylizer.FaceStylizerGraph"),le(r,"IMAGE:image_in"),le(r,"NORM_RECT:norm_rect"),j(r,"STYLIZED_IMAGE:stylized_image"),r.o(e),dt(t,r),this.g.V("stylized_image",(n,s)=>{var o=!this.h,a=n.data,i=n.width;let u=i*(n=n.height);if(a instanceof Uint8Array)if(a.length===3*u){let l=new Uint8ClampedArray(4*u);for(let c=0;c<u;++c)l[4*c]=a[3*c],l[4*c+1]=a[3*c+1],l[4*c+2]=a[3*c+2],l[4*c+3]=255;a=new ImageData(l,i,n)}else{if(a.length!==4*u)throw Error("Unsupported channel count: "+a.length/u);a=new ImageData(new Uint8ClampedArray(a.buffer,a.byteOffset,a.length),i,n)}else if(!(a instanceof WebGLTexture))throw Error(`Unsupported format: ${a.constructor.name}`);i=new Me([a],!1,!1,this.g.i.canvas,this.P,i,n),this.s=o=o?i.clone():i,this.h&&this.h(o),D(this,s)}),this.g.attachEmptyPacketListener("stylized_image",n=>{this.s=null,this.h&&this.h(null),D(this,n)}),t=t.g(),this.setGraph(new Uint8Array(t),!0)}};$t.prototype.stylize=$t.prototype.Oa,$t.prototype.setOptions=$t.prototype.o,$t.createFromModelPath=function(t,e){return X($t,t,{baseOptions:{modelAssetPath:e}})},$t.createFromModelBuffer=function(t,e){return X($t,t,{baseOptions:{modelAssetBuffer:e}})},$t.createFromOptions=function(t,e){return X($t,t,e)};var ki=Dt([0,1],[1,2],[2,3],[3,4],[0,5],[5,6],[6,7],[7,8],[5,9],[9,10],[10,11],[11,12],[9,13],[13,14],[14,15],[15,16],[13,17],[0,17],[17,18],[18,19],[19,20]);function Ec(t){t.gestures=[],t.landmarks=[],t.worldLandmarks=[],t.handedness=[]}function Ac(t){return t.gestures.length===0?{gestures:[],landmarks:[],worldLandmarks:[],handedness:[],handednesses:[]}:{gestures:t.gestures,landmarks:t.landmarks,worldLandmarks:t.worldLandmarks,handedness:t.handedness,handednesses:t.handedness}}function Rc(t,e=!0){let r=[];for(let s of t){var n=qs(s);t=[];for(let o of n.g())n=e&&vt(o,1)!=null?Bt(vt(o,1),0):-1,t.push({score:Ae(o,2)??0,index:n,categoryName:Xt(o,3)??"",displayName:Xt(o,4)??""});r.push(t)}return r}var ot=class extends rt{constructor(t,e){super(new Tt(t,e),"image_in","norm_rect",!1),this.gestures=[],this.landmarks=[],this.worldLandmarks=[],this.handedness=[],$(t=this.j=new of,0,1,e=new ye),this.s=new li,$(this.j,0,2,this.s),this.C=new ci,$(this.s,0,3,this.C),this.v=new sf,$(this.s,0,2,this.v),this.h=new Zd,$(this.j,0,3,this.h),G(this.v,2,.5),G(this.s,4,.5),G(this.C,2,.5)}get baseOptions(){return Y(this.j,ye,1)}set baseOptions(t){$(this.j,0,1,t)}o(t){if(jt(this.v,3,t.numHands??1),"minHandDetectionConfidence"in t&&G(this.v,2,t.minHandDetectionConfidence??.5),"minTrackingConfidence"in t&&G(this.s,4,t.minTrackingConfidence??.5),"minHandPresenceConfidence"in t&&G(this.C,2,t.minHandPresenceConfidence??.5),t.cannedGesturesClassifierOptions){var e=new Gr,r=e,n=ma(t.cannedGesturesClassifierOptions,Y(this.h,Gr,3)?.h());$(r,0,2,n),$(this.h,0,3,e)}else t.cannedGesturesClassifierOptions===void 0&&Y(this.h,Gr,3)?.g();return t.customGesturesClassifierOptions?($(r=e=new Gr,0,2,n=ma(t.customGesturesClassifierOptions,Y(this.h,Gr,4)?.h())),$(this.h,0,4,e)):t.customGesturesClassifierOptions===void 0&&Y(this.h,Gr,4)?.g(),this.l(t)}Ja(t,e){return Ec(this),kt(this,t,e),Ac(this)}Ka(t,e,r){return Ec(this),Yt(this,t,r,e),Ac(this)}m(){var t=new nt;ge(t,"image_in"),ge(t,"norm_rect"),Z(t,"hand_gestures"),Z(t,"hand_landmarks"),Z(t,"world_hand_landmarks"),Z(t,"handedness");let e=new lt;Lt(e,Jd,this.j);let r=new qe;ht(r,"mediapipe.tasks.vision.gesture_recognizer.GestureRecognizerGraph"),le(r,"IMAGE:image_in"),le(r,"NORM_RECT:norm_rect"),j(r,"HAND_GESTURES:hand_gestures"),j(r,"LANDMARKS:hand_landmarks"),j(r,"WORLD_LANDMARKS:world_hand_landmarks"),j(r,"HANDEDNESS:handedness"),r.o(e),dt(t,r),this.g.attachProtoVectorListener("hand_landmarks",(n,s)=>{for(let o of n){n=jn(o);let a=[];for(let i of nr(n,Yl,1))a.push({x:Ae(i,1)??0,y:Ae(i,2)??0,z:Ae(i,3)??0,visibility:Ae(i,4)??0});this.landmarks.push(a)}D(this,s)}),this.g.attachEmptyPacketListener("hand_landmarks",n=>{D(this,n)}),this.g.attachProtoVectorListener("world_hand_landmarks",(n,s)=>{for(let o of n){n=Hr(o);let a=[];for(let i of nr(n,jl,1))a.push({x:Ae(i,1)??0,y:Ae(i,2)??0,z:Ae(i,3)??0,visibility:Ae(i,4)??0});this.worldLandmarks.push(a)}D(this,s)}),this.g.attachEmptyPacketListener("world_hand_landmarks",n=>{D(this,n)}),this.g.attachProtoVectorListener("hand_gestures",(n,s)=>{this.gestures.push(...Rc(n,!1)),D(this,s)}),this.g.attachEmptyPacketListener("hand_gestures",n=>{D(this,n)}),this.g.attachProtoVectorListener("handedness",(n,s)=>{this.handedness.push(...Rc(n)),D(this,s)}),this.g.attachEmptyPacketListener("handedness",n=>{D(this,n)}),t=t.g(),this.setGraph(new Uint8Array(t),!0)}};function Ic(t){return{landmarks:t.landmarks,worldLandmarks:t.worldLandmarks,handednesses:t.handedness,handedness:t.handedness}}ot.prototype.recognizeForVideo=ot.prototype.Ka,ot.prototype.recognize=ot.prototype.Ja,ot.prototype.setOptions=ot.prototype.o,ot.createFromModelPath=function(t,e){return X(ot,t,{baseOptions:{modelAssetPath:e}})},ot.createFromModelBuffer=function(t,e){return X(ot,t,{baseOptions:{modelAssetBuffer:e}})},ot.createFromOptions=function(t,e){return X(ot,t,e)},ot.HAND_CONNECTIONS=ki;var at=class extends rt{constructor(t,e){super(new Tt(t,e),"image_in","norm_rect",!1),this.landmarks=[],this.worldLandmarks=[],this.handedness=[],$(t=this.h=new li,0,1,e=new ye),this.s=new ci,$(this.h,0,3,this.s),this.j=new sf,$(this.h,0,2,this.j),jt(this.j,3,1),G(this.j,2,.5),G(this.s,2,.5),G(this.h,4,.5)}get baseOptions(){return Y(this.h,ye,1)}set baseOptions(t){$(this.h,0,1,t)}o(t){return"numHands"in t&&jt(this.j,3,t.numHands??1),"minHandDetectionConfidence"in t&&G(this.j,2,t.minHandDetectionConfidence??.5),"minTrackingConfidence"in t&&G(this.h,4,t.minTrackingConfidence??.5),"minHandPresenceConfidence"in t&&G(this.s,2,t.minHandPresenceConfidence??.5),this.l(t)}D(t,e){return this.landmarks=[],this.worldLandmarks=[],this.handedness=[],kt(this,t,e),Ic(this)}F(t,e,r){return this.landmarks=[],this.worldLandmarks=[],this.handedness=[],Yt(this,t,r,e),Ic(this)}m(){var t=new nt;ge(t,"image_in"),ge(t,"norm_rect"),Z(t,"hand_landmarks"),Z(t,"world_hand_landmarks"),Z(t,"handedness");let e=new lt;Lt(e,Qd,this.h);let r=new qe;ht(r,"mediapipe.tasks.vision.hand_landmarker.HandLandmarkerGraph"),le(r,"IMAGE:image_in"),le(r,"NORM_RECT:norm_rect"),j(r,"LANDMARKS:hand_landmarks"),j(r,"WORLD_LANDMARKS:world_hand_landmarks"),j(r,"HANDEDNESS:handedness"),r.o(e),dt(t,r),this.g.attachProtoVectorListener("hand_landmarks",(n,s)=>{for(let o of n)n=jn(o),this.landmarks.push(Zs(n));D(this,s)}),this.g.attachEmptyPacketListener("hand_landmarks",n=>{D(this,n)}),this.g.attachProtoVectorListener("world_hand_landmarks",(n,s)=>{for(let o of n)n=Hr(o),this.worldLandmarks.push(Dn(n));D(this,s)}),this.g.attachEmptyPacketListener("world_hand_landmarks",n=>{D(this,n)}),this.g.attachProtoVectorListener("handedness",(n,s)=>{var o=this.handedness,a=o.push;let i=[];for(let u of n){n=qs(u);let l=[];for(let c of n.g())l.push({score:Ae(c,2)??0,index:Bt(vt(c,1),0)??-1,categoryName:Xt(c,3)??"",displayName:Xt(c,4)??""});i.push(l)}a.call(o,...i),D(this,s)}),this.g.attachEmptyPacketListener("handedness",n=>{D(this,n)}),t=t.g(),this.setGraph(new Uint8Array(t),!0)}};at.prototype.detectForVideo=at.prototype.F,at.prototype.detect=at.prototype.D,at.prototype.setOptions=at.prototype.o,at.createFromModelPath=function(t,e){return X(at,t,{baseOptions:{modelAssetPath:e}})},at.createFromModelBuffer=function(t,e){return X(at,t,{baseOptions:{modelAssetBuffer:e}})},at.createFromOptions=function(t,e){return X(at,t,e)},at.HAND_CONNECTIONS=ki;var Bf=Dt([0,1],[1,2],[2,3],[3,7],[0,4],[4,5],[5,6],[6,8],[9,10],[11,12],[11,13],[13,15],[15,17],[15,19],[15,21],[17,19],[12,14],[14,16],[16,18],[16,20],[16,22],[18,20],[11,23],[12,24],[23,24],[23,25],[24,26],[25,27],[26,28],[27,29],[28,30],[29,31],[30,32],[27,31],[28,32]);function Sc(t){t.h={faceLandmarks:[],faceBlendshapes:[],poseLandmarks:[],poseWorldLandmarks:[],poseSegmentationMasks:[],leftHandLandmarks:[],leftHandWorldLandmarks:[],rightHandLandmarks:[],rightHandWorldLandmarks:[]}}function Cc(t){try{if(!t.C)return t.h;t.C(t.h)}finally{Qs(t)}}function ds(t,e){t=jn(t),e.push(Zs(t))}var xe=class extends rt{constructor(t,e){super(new Tt(t,e),"input_frames_image",null,!1),this.h={faceLandmarks:[],faceBlendshapes:[],poseLandmarks:[],poseWorldLandmarks:[],poseSegmentationMasks:[],leftHandLandmarks:[],leftHandWorldLandmarks:[],rightHandLandmarks:[],rightHandWorldLandmarks:[]},this.outputPoseSegmentationMasks=this.outputFaceBlendshapes=!1,$(t=this.j=new ff,0,1,e=new ye),this.K=new ci,$(this.j,0,2,this.K),this.aa=new em,$(this.j,0,3,this.aa),this.s=new Ks,$(this.j,0,4,this.s),this.I=new Ql,$(this.j,0,5,this.I),this.v=new cf,$(this.j,0,6,this.v),this.L=new lf,$(this.j,0,7,this.L),G(this.s,2,.5),G(this.s,3,.3),G(this.I,2,.5),G(this.v,2,.5),G(this.v,3,.3),G(this.L,2,.5),G(this.K,2,.5)}get baseOptions(){return Y(this.j,ye,1)}set baseOptions(t){$(this.j,0,1,t)}o(t){return"minFaceDetectionConfidence"in t&&G(this.s,2,t.minFaceDetectionConfidence??.5),"minFaceSuppressionThreshold"in t&&G(this.s,3,t.minFaceSuppressionThreshold??.3),"minFacePresenceConfidence"in t&&G(this.I,2,t.minFacePresenceConfidence??.5),"outputFaceBlendshapes"in t&&(this.outputFaceBlendshapes=!!t.outputFaceBlendshapes),"minPoseDetectionConfidence"in t&&G(this.v,2,t.minPoseDetectionConfidence??.5),"minPoseSuppressionThreshold"in t&&G(this.v,3,t.minPoseSuppressionThreshold??.3),"minPosePresenceConfidence"in t&&G(this.L,2,t.minPosePresenceConfidence??.5),"outputPoseSegmentationMasks"in t&&(this.outputPoseSegmentationMasks=!!t.outputPoseSegmentationMasks),"minHandLandmarksConfidence"in t&&G(this.K,2,t.minHandLandmarksConfidence??.5),this.l(t)}D(t,e,r){let n=typeof e!="function"?e:{};return this.C=typeof e=="function"?e:r,Sc(this),kt(this,t,n),Cc(this)}F(t,e,r,n){let s=typeof r!="function"?r:{};return this.C=typeof r=="function"?r:n,Sc(this),Yt(this,t,s,e),Cc(this)}m(){var t=new nt;ge(t,"input_frames_image"),Z(t,"pose_landmarks"),Z(t,"pose_world_landmarks"),Z(t,"face_landmarks"),Z(t,"left_hand_landmarks"),Z(t,"left_hand_world_landmarks"),Z(t,"right_hand_landmarks"),Z(t,"right_hand_world_landmarks");let e=new lt,r=new qu;ia(r,1,nn("type.googleapis.com/mediapipe.tasks.vision.holistic_landmarker.proto.HolisticLandmarkerGraphOptions"),""),function(s,o){if(o!=null)if(Array.isArray(o))ce(s,2,Ds(o,Da,void 0,void 0,!1));else{if(!(typeof o=="string"||o instanceof tr||$n(o)))throw Error("invalid value in Any.value field: "+o+" expected a ByteString, a base64 encoded string, a Uint8Array or a jspb array");ia(s,2,Ia(o,!1),Br())}}(r,this.j.g());let n=new qe;ht(n,"mediapipe.tasks.vision.holistic_landmarker.HolisticLandmarkerGraph"),Es(n,8,qu,r),le(n,"IMAGE:input_frames_image"),j(n,"POSE_LANDMARKS:pose_landmarks"),j(n,"POSE_WORLD_LANDMARKS:pose_world_landmarks"),j(n,"FACE_LANDMARKS:face_landmarks"),j(n,"LEFT_HAND_LANDMARKS:left_hand_landmarks"),j(n,"LEFT_HAND_WORLD_LANDMARKS:left_hand_world_landmarks"),j(n,"RIGHT_HAND_LANDMARKS:right_hand_landmarks"),j(n,"RIGHT_HAND_WORLD_LANDMARKS:right_hand_world_landmarks"),n.o(e),dt(t,n),Js(this,t),this.g.attachProtoListener("pose_landmarks",(s,o)=>{ds(s,this.h.poseLandmarks),D(this,o)}),this.g.attachEmptyPacketListener("pose_landmarks",s=>{D(this,s)}),this.g.attachProtoListener("pose_world_landmarks",(s,o)=>{var a=this.h.poseWorldLandmarks;s=Hr(s),a.push(Dn(s)),D(this,o)}),this.g.attachEmptyPacketListener("pose_world_landmarks",s=>{D(this,s)}),this.outputPoseSegmentationMasks&&(j(n,"POSE_SEGMENTATION_MASK:pose_segmentation_mask"),Kr(this,"pose_segmentation_mask"),this.g.V("pose_segmentation_mask",(s,o)=>{this.h.poseSegmentationMasks=[Qr(this,s,!0,!this.C)],D(this,o)}),this.g.attachEmptyPacketListener("pose_segmentation_mask",s=>{this.h.poseSegmentationMasks=[],D(this,s)})),this.g.attachProtoListener("face_landmarks",(s,o)=>{ds(s,this.h.faceLandmarks),D(this,o)}),this.g.attachEmptyPacketListener("face_landmarks",s=>{D(this,s)}),this.outputFaceBlendshapes&&(Z(t,"extra_blendshapes"),j(n,"FACE_BLENDSHAPES:extra_blendshapes"),this.g.attachProtoListener("extra_blendshapes",(s,o)=>{var a=this.h.faceBlendshapes;this.outputFaceBlendshapes&&(s=qs(s),a.push(mi(s.g()??[]))),D(this,o)}),this.g.attachEmptyPacketListener("extra_blendshapes",s=>{D(this,s)})),this.g.attachProtoListener("left_hand_landmarks",(s,o)=>{ds(s,this.h.leftHandLandmarks),D(this,o)}),this.g.attachEmptyPacketListener("left_hand_landmarks",s=>{D(this,s)}),this.g.attachProtoListener("left_hand_world_landmarks",(s,o)=>{var a=this.h.leftHandWorldLandmarks;s=Hr(s),a.push(Dn(s)),D(this,o)}),this.g.attachEmptyPacketListener("left_hand_world_landmarks",s=>{D(this,s)}),this.g.attachProtoListener("right_hand_landmarks",(s,o)=>{ds(s,this.h.rightHandLandmarks),D(this,o)}),this.g.attachEmptyPacketListener("right_hand_landmarks",s=>{D(this,s)}),this.g.attachProtoListener("right_hand_world_landmarks",(s,o)=>{var a=this.h.rightHandWorldLandmarks;s=Hr(s),a.push(Dn(s)),D(this,o)}),this.g.attachEmptyPacketListener("right_hand_world_landmarks",s=>{D(this,s)}),t=t.g(),this.setGraph(new Uint8Array(t),!0)}};xe.prototype.detectForVideo=xe.prototype.F,xe.prototype.detect=xe.prototype.D,xe.prototype.setOptions=xe.prototype.o,xe.createFromModelPath=function(t,e){return X(xe,t,{baseOptions:{modelAssetPath:e}})},xe.createFromModelBuffer=function(t,e){return X(xe,t,{baseOptions:{modelAssetBuffer:e}})},xe.createFromOptions=function(t,e){return X(xe,t,e)},xe.HAND_CONNECTIONS=ki,xe.POSE_CONNECTIONS=Bf,xe.FACE_LANDMARKS_LIPS=yi,xe.FACE_LANDMARKS_LEFT_EYE=_i,xe.FACE_LANDMARKS_LEFT_EYEBROW=bi,xe.FACE_LANDMARKS_LEFT_IRIS=If,xe.FACE_LANDMARKS_RIGHT_EYE=vi,xe.FACE_LANDMARKS_RIGHT_EYEBROW=wi,xe.FACE_LANDMARKS_RIGHT_IRIS=Sf,xe.FACE_LANDMARKS_FACE_OVAL=Ti,xe.FACE_LANDMARKS_CONTOURS=Cf,xe.FACE_LANDMARKS_TESSELATION=Ff;var yt=class extends rt{constructor(t,e){super(new Tt(t,e),"input_image","norm_rect",!0),this.j={classifications:[]},$(t=this.h=new hf,0,1,e=new ye)}get baseOptions(){return Y(this.h,ye,1)}set baseOptions(t){$(this.h,0,1,t)}o(t){return $(this.h,0,2,ma(t,Y(this.h,ai,2))),this.l(t)}ta(t,e){return this.j={classifications:[]},kt(this,t,e),this.j}ua(t,e,r){return this.j={classifications:[]},Yt(this,t,r,e),this.j}m(){var t=new nt;ge(t,"input_image"),ge(t,"norm_rect"),Z(t,"classifications");let e=new lt;Lt(e,tm,this.h);let r=new qe;ht(r,"mediapipe.tasks.vision.image_classifier.ImageClassifierGraph"),le(r,"IMAGE:input_image"),le(r,"NORM_RECT:norm_rect"),j(r,"CLASSIFICATIONS:classifications"),r.o(e),dt(t,r),this.g.attachProtoListener("classifications",(n,s)=>{this.j=function(o){let a={classifications:nr(o,Vd,1).map(i=>mi(Y(i,zl,4)?.g()??[],Bt(vt(i,2),0),Xt(i,3)))};return Ts(xr(o,2))!=null&&(a.timestampMs=Bt(Ts(xr(o,2)),0)),a}(Wd(n)),D(this,s)}),this.g.attachEmptyPacketListener("classifications",n=>{D(this,n)}),t=t.g(),this.setGraph(new Uint8Array(t),!0)}};yt.prototype.classifyForVideo=yt.prototype.ua,yt.prototype.classify=yt.prototype.ta,yt.prototype.setOptions=yt.prototype.o,yt.createFromModelPath=function(t,e){return X(yt,t,{baseOptions:{modelAssetPath:e}})},yt.createFromModelBuffer=function(t,e){return X(yt,t,{baseOptions:{modelAssetBuffer:e}})},yt.createFromOptions=function(t,e){return X(yt,t,e)};var it=class extends rt{constructor(t,e){super(new Tt(t,e),"image_in","norm_rect",!0),this.h=new df,this.embeddings={embeddings:[]},$(t=this.h,0,1,e=new ye)}get baseOptions(){return Y(this.h,ye,1)}set baseOptions(t){$(this.h,0,1,t)}o(t){var e=this.h,r=Y(this.h,sc,2);return r=r?r.clone():new sc,t.l2Normalize!==void 0?Gn(r,1,t.l2Normalize):"l2Normalize"in t&&ce(r,1),t.quantize!==void 0?Gn(r,2,t.quantize):"quantize"in t&&ce(r,2),$(e,0,2,r),this.l(t)}Aa(t,e){return kt(this,t,e),this.embeddings}Ba(t,e,r){return Yt(this,t,r,e),this.embeddings}m(){var t=new nt;ge(t,"image_in"),ge(t,"norm_rect"),Z(t,"embeddings_out");let e=new lt;Lt(e,rm,this.h);let r=new qe;ht(r,"mediapipe.tasks.vision.image_embedder.ImageEmbedderGraph"),le(r,"IMAGE:image_in"),le(r,"NORM_RECT:norm_rect"),j(r,"EMBEDDINGS:embeddings_out"),r.o(e),dt(t,r),this.g.attachProtoListener("embeddings_out",(n,s)=>{n=Hd(n),this.embeddings=function(o){return{embeddings:nr(o,zd,1).map(a=>{let i={headIndex:Bt(vt(a,3),0)??-1,headName:Xt(a,4)??""};if(cl(a,nc,jo(a,1))!==void 0)a=Sr(a=Y(a,nc,jo(a,1)),1,wr,Ir()),i.floatEmbedding=a.slice();else{let u=new Uint8Array(0);i.quantizedEmbedding=Y(a,$d,jo(a,2))?.pa()?.h()??u}return i}),timestampMs:Bt(Ts(xr(o,2)),0)}}(n),D(this,s)}),this.g.attachEmptyPacketListener("embeddings_out",n=>{D(this,n)}),t=t.g(),this.setGraph(new Uint8Array(t),!0)}};it.cosineSimilarity=function(t,e){if(t.floatEmbedding&&e.floatEmbedding)t=cc(t.floatEmbedding,e.floatEmbedding);else{if(!t.quantizedEmbedding||!e.quantizedEmbedding)throw Error("Cannot compute cosine similarity between quantized and float embeddings.");t=cc(uc(t.quantizedEmbedding),uc(e.quantizedEmbedding))}return t},it.prototype.embedForVideo=it.prototype.Ba,it.prototype.embed=it.prototype.Aa,it.prototype.setOptions=it.prototype.o,it.createFromModelPath=function(t,e){return X(it,t,{baseOptions:{modelAssetPath:e}})},it.createFromModelBuffer=function(t,e){return X(it,t,{baseOptions:{modelAssetBuffer:e}})},it.createFromOptions=function(t,e){return X(it,t,e)};var ya=class{constructor(t,e,r){this.confidenceMasks=t,this.categoryMask=e,this.qualityScores=r}close(){this.confidenceMasks?.forEach(t=>{t.close()}),this.categoryMask?.close()}};function Fc(t){t.categoryMask=void 0,t.confidenceMasks=void 0,t.qualityScores=void 0}function Bc(t){try{let e=new ya(t.confidenceMasks,t.categoryMask,t.qualityScores);if(!t.j)return e;t.j(e)}finally{Qs(t)}}ya.prototype.close=ya.prototype.close;var ze=class extends rt{constructor(t,e){super(new Tt(t,e),"image_in","norm_rect",!1),this.s=[],this.outputCategoryMask=!1,this.outputConfidenceMasks=!0,this.h=new di,this.v=new mf,$(this.h,0,3,this.v),$(t=this.h,0,1,e=new ye)}get baseOptions(){return Y(this.h,ye,1)}set baseOptions(t){$(this.h,0,1,t)}o(t){return t.displayNamesLocale!==void 0?ce(this.h,2,nn(t.displayNamesLocale)):"displayNamesLocale"in t&&ce(this.h,2),"outputCategoryMask"in t&&(this.outputCategoryMask=t.outputCategoryMask??!1),"outputConfidenceMasks"in t&&(this.outputConfidenceMasks=t.outputConfidenceMasks??!0),super.l(t)}J(){(function(t){let e=nr(t.ea(),qe,1).filter(r=>Xt(r,1).includes("mediapipe.tasks.TensorsToSegmentationCalculator"));if(t.s=[],e.length>1)throw Error("The graph has more than one mediapipe.tasks.TensorsToSegmentationCalculator.");e.length===1&&(Y(e[0],lt,7)?.l()?.g()??new Map).forEach((r,n)=>{t.s[Number(n)]=Xt(r,1)})})(this)}segment(t,e,r){let n=typeof e!="function"?e:{};return this.j=typeof e=="function"?e:r,Fc(this),kt(this,t,n),Bc(this)}Ma(t,e,r,n){let s=typeof r!="function"?r:{};return this.j=typeof r=="function"?r:n,Fc(this),Yt(this,t,s,e),Bc(this)}Ea(){return this.s}m(){var t=new nt;ge(t,"image_in"),ge(t,"norm_rect");let e=new lt;Lt(e,gf,this.h);let r=new qe;ht(r,"mediapipe.tasks.vision.image_segmenter.ImageSegmenterGraph"),le(r,"IMAGE:image_in"),le(r,"NORM_RECT:norm_rect"),r.o(e),dt(t,r),Js(this,t),this.outputConfidenceMasks&&(Z(t,"confidence_masks"),j(r,"CONFIDENCE_MASKS:confidence_masks"),Kr(this,"confidence_masks"),this.g.da("confidence_masks",(n,s)=>{this.confidenceMasks=n.map(o=>Qr(this,o,!0,!this.j)),D(this,s)}),this.g.attachEmptyPacketListener("confidence_masks",n=>{this.confidenceMasks=[],D(this,n)})),this.outputCategoryMask&&(Z(t,"category_mask"),j(r,"CATEGORY_MASK:category_mask"),Kr(this,"category_mask"),this.g.V("category_mask",(n,s)=>{this.categoryMask=Qr(this,n,!1,!this.j),D(this,s)}),this.g.attachEmptyPacketListener("category_mask",n=>{this.categoryMask=void 0,D(this,n)})),Z(t,"quality_scores"),j(r,"QUALITY_SCORES:quality_scores"),this.g.attachFloatVectorListener("quality_scores",(n,s)=>{this.qualityScores=n,D(this,s)}),this.g.attachEmptyPacketListener("quality_scores",n=>{this.categoryMask=void 0,D(this,n)}),t=t.g(),this.setGraph(new Uint8Array(t),!0)}};ze.prototype.getLabels=ze.prototype.Ea,ze.prototype.segmentForVideo=ze.prototype.Ma,ze.prototype.segment=ze.prototype.segment,ze.prototype.setOptions=ze.prototype.o,ze.createFromModelPath=function(t,e){return X(ze,t,{baseOptions:{modelAssetPath:e}})},ze.createFromModelBuffer=function(t,e){return X(ze,t,{baseOptions:{modelAssetBuffer:e}})},ze.createFromOptions=function(t,e){return X(ze,t,e)};var _a=class{constructor(t,e,r){this.confidenceMasks=t,this.categoryMask=e,this.qualityScores=r}close(){this.confidenceMasks?.forEach(t=>{t.close()}),this.categoryMask?.close()}};_a.prototype.close=_a.prototype.close;var hm=class extends M{constructor(t){super(t)}},Vr=[0,ke,-2],Cs=[0,Qt,-3,_e,Qt,-1],Uc=[0,Cs],Lc=[0,Cs,ke,-1],ea=class extends M{constructor(t){super(t)}},Pc=[0,Qt,-1,_e],dm=class extends M{constructor(){super()}},Oc=class extends M{constructor(t){super(t)}},ba=[1,2,3,4,5,6,7,8,9,10,14,15],Uf=class extends M{constructor(){super()}};Uf.prototype.g=Ys([0,Oe,[0,ba,se,Cs,se,[0,Cs,Vr],se,Uc,se,[0,Uc,Vr],se,Pc,se,[0,Qt,-3,_e,Ut],se,[0,Qt,-3,_e],se,[0,ne,Qt,-2,_e,ke,_e,-1,2,Qt,Vr],se,Lc,se,[0,Lc,Vr],Qt,Vr,ne,se,[0,Qt,-3,_e,Vr,-1],se,[0,Oe,Pc]],ne,[0,ne,ke,-1,_e]]);var zt=class extends rt{constructor(t,e){super(new Tt(t,e),"image_in","norm_rect_in",!1),this.outputCategoryMask=!1,this.outputConfidenceMasks=!0,this.h=new di,this.s=new mf,$(this.h,0,3,this.s),$(t=this.h,0,1,e=new ye)}get baseOptions(){return Y(this.h,ye,1)}set baseOptions(t){$(this.h,0,1,t)}o(t){return"outputCategoryMask"in t&&(this.outputCategoryMask=t.outputCategoryMask??!1),"outputConfidenceMasks"in t&&(this.outputConfidenceMasks=t.outputConfidenceMasks??!0),super.l(t)}segment(t,e,r,n){let s=typeof r!="function"?r:{};this.j=typeof r=="function"?r:n,this.qualityScores=this.categoryMask=this.confidenceMasks=void 0,r=this.B+1,n=new Uf;let o=new Oc;var a=new hm;if(jt(a,1,255),$(o,0,12,a),e.keypoint&&e.scribble)throw Error("Cannot provide both keypoint and scribble.");if(e.keypoint){var i=new ea;Gn(i,3,!0),G(i,1,e.keypoint.x),G(i,2,e.keypoint.y),Pn(o,5,ba,i)}else{if(!e.scribble)throw Error("Must provide either a keypoint or a scribble.");for(i of(a=new dm,e.scribble))Gn(e=new ea,3,!0),G(e,1,i.x),G(e,2,i.y),Es(a,1,ea,e);Pn(o,15,ba,a)}Es(n,1,Oc,o),this.g.addProtoToStream(n.g(),"drishti.RenderData","roi_in",r),kt(this,t,s);e:{try{let l=new _a(this.confidenceMasks,this.categoryMask,this.qualityScores);if(!this.j){var u=l;break e}this.j(l)}finally{Qs(this)}u=void 0}return u}m(){var t=new nt;ge(t,"image_in"),ge(t,"roi_in"),ge(t,"norm_rect_in");let e=new lt;Lt(e,gf,this.h);let r=new qe;ht(r,"mediapipe.tasks.vision.interactive_segmenter.InteractiveSegmenterGraph"),le(r,"IMAGE:image_in"),le(r,"ROI:roi_in"),le(r,"NORM_RECT:norm_rect_in"),r.o(e),dt(t,r),Js(this,t),this.outputConfidenceMasks&&(Z(t,"confidence_masks"),j(r,"CONFIDENCE_MASKS:confidence_masks"),Kr(this,"confidence_masks"),this.g.da("confidence_masks",(n,s)=>{this.confidenceMasks=n.map(o=>Qr(this,o,!0,!this.j)),D(this,s)}),this.g.attachEmptyPacketListener("confidence_masks",n=>{this.confidenceMasks=[],D(this,n)})),this.outputCategoryMask&&(Z(t,"category_mask"),j(r,"CATEGORY_MASK:category_mask"),Kr(this,"category_mask"),this.g.V("category_mask",(n,s)=>{this.categoryMask=Qr(this,n,!1,!this.j),D(this,s)}),this.g.attachEmptyPacketListener("category_mask",n=>{this.categoryMask=void 0,D(this,n)})),Z(t,"quality_scores"),j(r,"QUALITY_SCORES:quality_scores"),this.g.attachFloatVectorListener("quality_scores",(n,s)=>{this.qualityScores=n,D(this,s)}),this.g.attachEmptyPacketListener("quality_scores",n=>{this.categoryMask=void 0,D(this,n)}),t=t.g(),this.setGraph(new Uint8Array(t),!0)}};zt.prototype.segment=zt.prototype.segment,zt.prototype.setOptions=zt.prototype.o,zt.createFromModelPath=function(t,e){return X(zt,t,{baseOptions:{modelAssetPath:e}})},zt.createFromModelBuffer=function(t,e){return X(zt,t,{baseOptions:{modelAssetBuffer:e}})},zt.createFromOptions=function(t,e){return X(zt,t,e)};var _t=class extends rt{constructor(t,e){super(new Tt(t,e),"input_frame_gpu","norm_rect",!1),this.j={detections:[]},$(t=this.h=new xf,0,1,e=new ye)}get baseOptions(){return Y(this.h,ye,1)}set baseOptions(t){$(this.h,0,1,t)}o(t){return t.displayNamesLocale!==void 0?ce(this.h,2,nn(t.displayNamesLocale)):"displayNamesLocale"in t&&ce(this.h,2),t.maxResults!==void 0?jt(this.h,3,t.maxResults):"maxResults"in t&&ce(this.h,3),t.scoreThreshold!==void 0?G(this.h,4,t.scoreThreshold):"scoreThreshold"in t&&ce(this.h,4),t.categoryAllowlist!==void 0?As(this.h,5,t.categoryAllowlist):"categoryAllowlist"in t&&ce(this.h,5),t.categoryDenylist!==void 0?As(this.h,6,t.categoryDenylist):"categoryDenylist"in t&&ce(this.h,6),this.l(t)}D(t,e){return this.j={detections:[]},kt(this,t,e),this.j}F(t,e,r){return this.j={detections:[]},Yt(this,t,r,e),this.j}m(){var t=new nt;ge(t,"input_frame_gpu"),ge(t,"norm_rect"),Z(t,"detections");let e=new lt;Lt(e,sm,this.h);let r=new qe;ht(r,"mediapipe.tasks.vision.ObjectDetectorGraph"),le(r,"IMAGE:input_frame_gpu"),le(r,"NORM_RECT:norm_rect"),j(r,"DETECTIONS:detections"),r.o(e),dt(t,r),this.g.attachProtoVectorListener("detections",(n,s)=>{for(let o of n)n=Xl(o),this.j.detections.push(_f(n));D(this,s)}),this.g.attachEmptyPacketListener("detections",n=>{D(this,n)}),t=t.g(),this.setGraph(new Uint8Array(t),!0)}};_t.prototype.detectForVideo=_t.prototype.F,_t.prototype.detect=_t.prototype.D,_t.prototype.setOptions=_t.prototype.o,_t.createFromModelPath=async function(t,e){return X(_t,t,{baseOptions:{modelAssetPath:e}})},_t.createFromModelBuffer=function(t,e){return X(_t,t,{baseOptions:{modelAssetBuffer:e}})},_t.createFromOptions=function(t,e){return X(_t,t,e)};var va=class{constructor(t,e,r){this.landmarks=t,this.worldLandmarks=e,this.segmentationMasks=r}close(){this.segmentationMasks?.forEach(t=>{t.close()})}};function Dc(t){t.landmarks=[],t.worldLandmarks=[],t.segmentationMasks=void 0}function Mc(t){try{let e=new va(t.landmarks,t.worldLandmarks,t.segmentationMasks);if(!t.s)return e;t.s(e)}finally{Qs(t)}}va.prototype.close=va.prototype.close;var ut=class extends rt{constructor(t,e){super(new Tt(t,e),"image_in","norm_rect",!1),this.landmarks=[],this.worldLandmarks=[],this.outputSegmentationMasks=!1,$(t=this.h=new yf,0,1,e=new ye),this.v=new lf,$(this.h,0,3,this.v),this.j=new cf,$(this.h,0,2,this.j),jt(this.j,4,1),G(this.j,2,.5),G(this.v,2,.5),G(this.h,4,.5)}get baseOptions(){return Y(this.h,ye,1)}set baseOptions(t){$(this.h,0,1,t)}o(t){return"numPoses"in t&&jt(this.j,4,t.numPoses??1),"minPoseDetectionConfidence"in t&&G(this.j,2,t.minPoseDetectionConfidence??.5),"minTrackingConfidence"in t&&G(this.h,4,t.minTrackingConfidence??.5),"minPosePresenceConfidence"in t&&G(this.v,2,t.minPosePresenceConfidence??.5),"outputSegmentationMasks"in t&&(this.outputSegmentationMasks=t.outputSegmentationMasks??!1),this.l(t)}D(t,e,r){let n=typeof e!="function"?e:{};return this.s=typeof e=="function"?e:r,Dc(this),kt(this,t,n),Mc(this)}F(t,e,r,n){let s=typeof r!="function"?r:{};return this.s=typeof r=="function"?r:n,Dc(this),Yt(this,t,s,e),Mc(this)}m(){var t=new nt;ge(t,"image_in"),ge(t,"norm_rect"),Z(t,"normalized_landmarks"),Z(t,"world_landmarks"),Z(t,"segmentation_masks");let e=new lt;Lt(e,om,this.h);let r=new qe;ht(r,"mediapipe.tasks.vision.pose_landmarker.PoseLandmarkerGraph"),le(r,"IMAGE:image_in"),le(r,"NORM_RECT:norm_rect"),j(r,"NORM_LANDMARKS:normalized_landmarks"),j(r,"WORLD_LANDMARKS:world_landmarks"),r.o(e),dt(t,r),Js(this,t),this.g.attachProtoVectorListener("normalized_landmarks",(n,s)=>{this.landmarks=[];for(let o of n)n=jn(o),this.landmarks.push(Zs(n));D(this,s)}),this.g.attachEmptyPacketListener("normalized_landmarks",n=>{this.landmarks=[],D(this,n)}),this.g.attachProtoVectorListener("world_landmarks",(n,s)=>{this.worldLandmarks=[];for(let o of n)n=Hr(o),this.worldLandmarks.push(Dn(n));D(this,s)}),this.g.attachEmptyPacketListener("world_landmarks",n=>{this.worldLandmarks=[],D(this,n)}),this.outputSegmentationMasks&&(j(r,"SEGMENTATION_MASK:segmentation_masks"),Kr(this,"segmentation_masks"),this.g.da("segmentation_masks",(n,s)=>{this.segmentationMasks=n.map(o=>Qr(this,o,!0,!this.s)),D(this,s)}),this.g.attachEmptyPacketListener("segmentation_masks",n=>{this.segmentationMasks=[],D(this,n)})),t=t.g(),this.setGraph(new Uint8Array(t),!0)}};ut.prototype.detectForVideo=ut.prototype.F,ut.prototype.detect=ut.prototype.D,ut.prototype.setOptions=ut.prototype.o,ut.createFromModelPath=function(t,e){return X(ut,t,{baseOptions:{modelAssetPath:e}})},ut.createFromModelBuffer=function(t,e){return X(ut,t,{baseOptions:{modelAssetBuffer:e}})},ut.createFromOptions=function(t,e){return X(ut,t,e)},ut.POSE_CONNECTIONS=Bf;var Pf=(t,e)=>{let r={},n={},s={};for(let o of Object.keys(t))Object.prototype.hasOwnProperty.call(t,o)&&(Object.prototype.hasOwnProperty.call(e,o)?Ei(t[o],e[o])||(s[o]={old:t[o],new:e[o]}):n[o]=t[o]);for(let o of Object.keys(e))Object.prototype.hasOwnProperty.call(e,o)&&!Object.prototype.hasOwnProperty.call(t,o)&&(r[o]=e[o]);return{added:r,removed:n,changed:s}},Ei=(t,e)=>{if(Object.is(t,e))return!0;if(typeof t!="object"||typeof e!="object"||t===null||e===null)return!1;let r=Array.isArray(t),n=Array.isArray(e);if(r!==n)return!1;if(r){let i=t,u=e;if(i.length!==u.length)return!1;for(let l=0;l<i.length;l++)if(!Ei(i[l],u[l]))return!1;return!0}if(!Lf(t)||!Lf(e))return!1;let s=t,o=e,a=Object.keys(s);if(a.length!==Object.keys(o).length)return!1;for(let i=0;i<a.length;i++){let u=a[i];if(!u||!Object.prototype.hasOwnProperty.call(o,u)||!Ei(s[u],o[u]))return!1}return!0},Lf=t=>typeof t=="object"&&t!==null&&!Array.isArray(t)&&Object.getPrototypeOf(t)===Object.prototype;var mm="utils/memoize/noValue",Y1=Symbol(mm);var Ai=t=>t;var Ri=(t,...e)=>{let r=e.reduce((n,s)=>o=>s(n(o)),Ai);return(...n)=>r(t(...n))};var pm=t=>`(${t})`;var Of=t=>pm(`?:${t}`),gm=t=>`${Of(t)}?`,xm=t=>`${Of(t)}*`;var ym=t=>`^${t}`,_m=t=>`${t}$`,bm=t=>typeof t=="function",vm=t=>e=>bm(e)?e(t):e;var wm=()=>t=>t,ro=(t,e=wm)=>r=>n=>Ri(vm(n),e(n),t)(r);var eg=ro(t=>gm(t)),tg=ro(t=>xm(t));var rg=ro(t=>ym(t)),ng=ro(t=>_m(t));var I=(t,e="AssertError")=>{if(!t)throw new Error(e,{cause:t});return t};var Df=[.5,.42],fn=432,hn=768,Ii=[.2,.8],Mf=5,qn=2,Se={Closed:"closed",Closing:"closing",Destroyed:"destroyed",Destroying:"destroying",Error:"Error",Idle:"idle",New:"new",Opened:"opened",Opening:"opening",Processing:"processing",Updated:"updated",Updating:"updating"},Nf={None:"none",Blur:"blur",Overlay:"overlay"},Gf={WebGL:"webgl",WebGPU:"webgpu"},O={ContextCreationError:"ContextCreationError",ContextLost:"ContextLost",ContextRestored:"ContextRestored",Error:"Error",ProcessorRestarted:"ProcessorRestarted",SamplingError:"SamplingError"};var km=t=>!!(typeof t=="string"&&Object.values(O).includes(t)),no=t=>km(t)?t:O.Error,so=t=>t instanceof Error?t.message:String(t),oo=t=>{let e=new Set(Object.keys(t));return r=>{for(let n in r)e.has(n)&&typeof t[n]==typeof r[n]&&(t[n]=r[n])}},Em="ImageFetchError",Am=t=>t?t.toLowerCase().startsWith("image/"):!1,Vf=t=>{let e=new Map(t),r=new Set,n=async(a,i)=>{let u=await fetch(a,{signal:i});if(u.ok&&Am(u.headers.get("content-type"))){let l=await u.blob();return await createImageBitmap(l)}},s=async(a,i)=>{let u=e.get(a);if(!u){if(r.has(a))return null;r.add(a);try{let l=await n(a,i);if(l)return e.set(a,l),l}catch(l){if(l instanceof Error){if(l.name!=="AbortError")throw new Error(Em,{cause:l});return}throw l}finally{r.delete(a)}}return u},o=a=>(e.get(a)?.close(),e.delete(a));return{tryFetchingImage:s,setImage:(a,i)=>{e.has(a)&&o(a),e.set(a,i)},getImage:a=>e.get(a)??null,removeImage:o,clear:()=>{for(let a of e.values())a.close();e.clear()}}},Et=(t,e)=>r=>Math.min(Math.max(r,t),e);var dn=t=>{let e={};return new Proxy(e,{get(r,n,s){return r[n]||(r[n]=t[n]?.(e)),Reflect.get(r,n,s)}})},Wf=(t,e,r)=>{let n=a=>{a.preventDefault(),r?.(),e.contextLost(a.statusMessage)},s=a=>{e.contextRestored(a.statusMessage)},o=a=>{e.contextCreationError(a.statusMessage)};return t.addEventListener("webglcontextlost",n),t.addEventListener("webglcontextrestored",s),t.addEventListener("webglcontextcreationerror",o),()=>{t.removeEventListener("webglcontextlost",n),t.removeEventListener("webglcontextrestored",s),t.removeEventListener("webglcontextcreationerror",o)}};function $f(t,e){let r=0,n=0;for(let s=0;s<t.length;s++){let o=t[s]>=128,a=e[s]>=128;o&&a&&r++,(o||a)&&n++}return n?r/n:0}function zf(t,e,r,n){let s=1,o=[0];function a(l){return o[l]===void 0?l:(o[l]!==l&&(o[l]=a(o[l])),o[l])}function i(l,c){!l||!c||(l=a(l),c=a(c),l!==c&&(o[c]=l))}for(let l=0;l<n;l++)for(let c=0;c<r;c++){let f=l*r+c;if(t[f]<128){e[f]=0;continue}let m=c>0?e[f-1]:0,p=l>0?e[f-r]:0,w=c>0&&l>0?e[f-r-1]:0,A=c<r-1&&l>0?e[f-r+1]:0,v=m||p||w||A;v||(v=s++,o[v]=v),e[f]=v,m&&m!==v&&i(v,m),p&&p!==v&&i(v,p),w&&w!==v&&i(v,w),A&&A!==v&&i(v,A)}for(let l=0;l<e.length;l++){let c=e[l];e[l]=c?a(c):0}let u=new Map;for(let l=0;l<n;l++)for(let c=0;c<r;c++){let f=e[l*r+c];if(!f)continue;let m=u.get(f)??{sumX:0,sumY:0,count:0,minX:r,minY:n,maxX:-1,maxY:-1};m.sumX+=c,m.sumY+=l,m.count++,c<m.minX&&(m.minX=c),c>m.maxX&&(m.maxX=c),l<m.minY&&(m.minY=l),l>m.maxY&&(m.maxY=l),u.set(f,m)}return u}function Hf(t,e,r,n,s){let o=t.count,a=t.maxY-t.minY+1,i=t.sumX/t.count,u=t.sumY/t.count,l=(i-r.centerX)**2+(u-r.centerY)**2,c=1-Math.min(1,Math.sqrt(l)/Math.max(n,s)),f=o/(n*s),m=a/s;return r.iou*e+r.area*f+r.height*m+r.center*c}var ru=(t,e)=>((t+e-1)/e|0)*e;function Rm(t){return Object.keys(t)}function Im(t,e){return new Array(t).fill(0).map((r,n)=>e(n))}var Xf=t=>ArrayBuffer.isView(t)&&!(t instanceof DataView),Zf=t=>t,q=Zf({i32:{numElements:1,align:4,size:4,type:"i32",View:Int32Array},u32:{numElements:1,align:4,size:4,type:"u32",View:Uint32Array},f32:{numElements:1,align:4,size:4,type:"f32",View:Float32Array},f16:{numElements:1,align:2,size:2,type:"u16",View:Uint16Array},vec2f:{numElements:2,align:8,size:8,type:"f32",View:Float32Array},vec2i:{numElements:2,align:8,size:8,type:"i32",View:Int32Array},vec2u:{numElements:2,align:8,size:8,type:"u32",View:Uint32Array},vec2h:{numElements:2,align:4,size:4,type:"u16",View:Uint16Array},vec3i:{numElements:3,align:16,size:12,type:"i32",View:Int32Array},vec3u:{numElements:3,align:16,size:12,type:"u32",View:Uint32Array},vec3f:{numElements:3,align:16,size:12,type:"f32",View:Float32Array},vec3h:{numElements:3,align:8,size:6,type:"u16",View:Uint16Array},vec4i:{numElements:4,align:16,size:16,type:"i32",View:Int32Array},vec4u:{numElements:4,align:16,size:16,type:"u32",View:Uint32Array},vec4f:{numElements:4,align:16,size:16,type:"f32",View:Float32Array},vec4h:{numElements:4,align:8,size:8,type:"u16",View:Uint16Array},mat2x2f:{numElements:4,align:8,size:16,type:"f32",View:Float32Array},mat2x2h:{numElements:4,align:4,size:8,type:"u16",View:Uint16Array},mat3x2f:{numElements:6,align:8,size:24,type:"f32",View:Float32Array},mat3x2h:{numElements:6,align:4,size:12,type:"u16",View:Uint16Array},mat4x2f:{numElements:8,align:8,size:32,type:"f32",View:Float32Array},mat4x2h:{numElements:8,align:4,size:16,type:"u16",View:Uint16Array},mat2x3f:{numElements:8,align:16,size:32,pad:[3,1],type:"f32",View:Float32Array},mat2x3h:{numElements:8,align:8,size:16,pad:[3,1],type:"u16",View:Uint16Array},mat3x3f:{numElements:12,align:16,size:48,pad:[3,1],type:"f32",View:Float32Array},mat3x3h:{numElements:12,align:8,size:24,pad:[3,1],type:"u16",View:Uint16Array},mat4x3f:{numElements:16,align:16,size:64,pad:[3,1],type:"f32",View:Float32Array},mat4x3h:{numElements:16,align:8,size:32,pad:[3,1],type:"u16",View:Uint16Array},mat2x4f:{numElements:8,align:16,size:32,type:"f32",View:Float32Array},mat2x4h:{numElements:8,align:8,size:16,type:"u16",View:Uint16Array},mat3x4f:{numElements:12,align:16,size:48,pad:[3,1],type:"f32",View:Float32Array},mat3x4h:{numElements:12,align:8,size:24,pad:[3,1],type:"u16",View:Uint16Array},mat4x4f:{numElements:16,align:16,size:64,type:"f32",View:Float32Array},mat4x4h:{numElements:16,align:8,size:32,type:"u16",View:Uint16Array},bool:{numElements:0,align:1,size:0,type:"bool",View:Uint32Array}}),kn=Zf({...q,"atomic<i32>":q.i32,"atomic<u32>":q.u32,"vec2<i32>":q.vec2i,"vec2<u32>":q.vec2u,"vec2<f32>":q.vec2f,"vec2<f16>":q.vec2h,"vec3<i32>":q.vec3i,"vec3<u32>":q.vec3u,"vec3<f32>":q.vec3f,"vec3<f16>":q.vec3h,"vec4<i32>":q.vec4i,"vec4<u32>":q.vec4u,"vec4<f32>":q.vec4f,"vec4<f16>":q.vec4h,"mat2x2<f32>":q.mat2x2f,"mat2x2<f16>":q.mat2x2h,"mat3x2<f32>":q.mat3x2f,"mat3x2<f16>":q.mat3x2h,"mat4x2<f32>":q.mat4x2f,"mat4x2<f16>":q.mat4x2h,"mat2x3<f32>":q.mat2x3f,"mat2x3<f16>":q.mat2x3h,"mat3x3<f32>":q.mat3x3f,"mat3x3<f16>":q.mat3x3h,"mat4x3<f32>":q.mat4x3f,"mat4x3<f16>":q.mat4x3h,"mat2x4<f32>":q.mat2x4f,"mat2x4<f16>":q.mat2x4h,"mat3x4<f32>":q.mat3x4f,"mat3x4<f16>":q.mat3x4h,"mat4x4<f32>":q.mat4x4f,"mat4x4<f16>":q.mat4x4h}),Sm=Rm(kn);function Cm(t=[],e){let r=new Set;for(let n of Sm){let s=kn[n];r.has(s)||(r.add(s),s.flatten=t.includes(n)?e:!e)}}Cm();function Fm(t){let e=t;if(e.elementType)return e.size;{let n=t,s=e.numElements||1;if(n.fields)return t.size*s;{let o=t,{align:a}=kn[o.type];return s>1?ru(t.size,a)*s:t.size}}}function jf(t,e,r,n){let{size:s,type:o}=t;try{let{View:a,align:i,size:u}=kn[o],l=n!==void 0,c=l?ru(s,i):u,f=c/a.BYTES_PER_ELEMENT,m=l?n===0?(e.byteLength-r)/c:n:1;return new a(e,r,f*m)}catch{throw new Error(`unknown type: ${o}`)}}function Bm(t){return!t.fields&&!t.elementType}function Um(t,e,r){let n=r||0,s=e||new ArrayBuffer(Fm(t)),o=(a,i)=>{let u=a,l=u.elementType;if(l){if(Bm(l)&&kn[l.type].flatten)return jf(l,s,i,u.numElements);{let{size:c}=Jf(a),f=u.numElements===0?(s.byteLength-i)/c:u.numElements;return Im(f,m=>o(l,i+c*m))}}else{if(typeof a=="string")throw Error("unreachable");{let c=a.fields;if(c){let f={};for(let[m,{type:p,offset:w}]of Object.entries(c))f[m]=o(p,i+w);return f}else return jf(a,s,i)}}};return{views:o(t,n),arrayBuffer:s}}function Ui(t,e){if(t!==void 0)if(Xf(e)){let r=e;if(r.length===1&&typeof t=="number")r[0]=t;else if(Array.isArray(t[0])||Xf(t[0])){let n=t[0].length,s=n===3?4:n;for(let o=0;o<t.length;++o){let a=o*s;r.set(t[o],a)}}else r.set(t)}else if(Array.isArray(e)){let r=e;t.forEach((n,s)=>{Ui(n,r[s])})}else{let r=e;for(let[n,s]of Object.entries(t)){let o=r[n];o&&Ui(s,o)}}}function gt(t,e,r=0){let n=t,s=n.group===void 0?t:n.typeDefinition,o=Um(s,e,r);return{...o,set(a){Ui(a,o.views)}}}function Li(t){let r=t.elementType;if(r)return Li(r);let s=t.fields;if(s)return Object.values(s).reduce((i,{type:u})=>Math.max(i,Li(u)),0);let{type:o}=t,{align:a}=kn[o];return a}function Jf(t){let r=t.elementType;if(r){let o=r.size,a=Li(r);return{unalignedSize:o,align:a,size:ru(o,a)}}let s=t.fields;if(s){let o=Object.values(s).pop();if(o.type.size===0)return Jf(o.type)}return{size:0,unalignedSize:0,align:1}}var st=class{constructor(e,r){this.name=e,this.attributes=r,this.size=0}get isArray(){return!1}get isStruct(){return!1}get isTemplate(){return!1}get isPointer(){return!1}getTypeName(){return this.name}},ao=class{constructor(e,r,n){this.name=e,this.type=r,this.attributes=n,this.offset=0,this.size=0}get isArray(){return this.type.isArray}get isStruct(){return this.type.isStruct}get isTemplate(){return this.type.isTemplate}get align(){return this.type.isStruct?this.type.align:0}get members(){return this.type.isStruct?this.type.members:null}get format(){return this.type.isArray||this.type.isTemplate?this.type.format:null}get count(){return this.type.isArray?this.type.count:0}get stride(){return this.type.isArray?this.type.stride:this.size}},qt=class extends st{constructor(e,r){super(e,r),this.members=[],this.align=0,this.startLine=-1,this.endLine=-1,this.inUse=!1}get isStruct(){return!0}},Kt=class extends st{constructor(e,r){super(e,r),this.count=0,this.stride=0}get isArray(){return!0}getTypeName(){return`array<${this.format.getTypeName()}, ${this.count}>`}},Zn=class extends st{constructor(e,r,n){super(e,n),this.format=r}get isPointer(){return!0}getTypeName(){return`&${this.format.getTypeName()}`}},ir=class extends st{constructor(e,r,n,s){super(e,n),this.format=r,this.access=s}get isTemplate(){return!0}getTypeName(){let e=this.name;if(this.format!==null){if(e==="vec2"||e==="vec3"||e==="vec4"||e==="mat2x2"||e==="mat2x3"||e==="mat2x4"||e==="mat3x2"||e==="mat3x3"||e==="mat3x4"||e==="mat4x2"||e==="mat4x3"||e==="mat4x4"){if(this.format.name==="f32")return e+="f",e;if(this.format.name==="i32")return e+="i",e;if(this.format.name==="u32")return e+="u",e;if(this.format.name==="bool")return e+="b",e;if(this.format.name==="f16")return e+="h",e}e+=`<${this.format.name}>`}else if(e==="vec2"||e==="vec3"||e==="vec4")return e;return e}},Ne;(t=>{t[t.Uniform=0]="Uniform",t[t.Storage=1]="Storage",t[t.Texture=2]="Texture",t[t.Sampler=3]="Sampler",t[t.StorageTexture=4]="StorageTexture"})(Ne||(Ne={}));var pn=class{constructor(e,r,n,s,o,a,i){this.name=e,this.type=r,this.group=n,this.binding=s,this.attributes=o,this.resourceType=a,this.access=i}get isArray(){return this.type.isArray}get isStruct(){return this.type.isStruct}get isTemplate(){return this.type.isTemplate}get size(){return this.type.size}get align(){return this.type.isStruct?this.type.align:0}get members(){return this.type.isStruct?this.type.members:null}get format(){return this.type.isArray||this.type.isTemplate?this.type.format:null}get count(){return this.type.isArray?this.type.count:0}get stride(){return this.type.isArray?this.type.stride:this.size}},Pi=class{constructor(e,r){this.name=e,this.type=r}},Oi=class{constructor(e,r,n,s){this.name=e,this.type=r,this.locationType=n,this.location=s,this.interpolation=null}},io=class{constructor(e,r,n,s){this.name=e,this.type=r,this.locationType=n,this.location=s}},Di=class{constructor(e,r,n,s){this.name=e,this.type=r,this.attributes=n,this.id=s}},Mi=class{constructor(e,r,n){this.name=e,this.type=r,this.attributes=n}},Ni=class{constructor(e,r=null,n){this.stage=null,this.inputs=[],this.outputs=[],this.arguments=[],this.returnType=null,this.resources=[],this.overrides=[],this.startLine=-1,this.endLine=-1,this.inUse=!1,this.calls=new Set,this.name=e,this.stage=r,this.attributes=n}},Gi=class{constructor(){this.vertex=[],this.fragment=[],this.compute=[]}},Qf=new Float32Array(1),Lm=new Int32Array(Qf.buffer),Xe=new Uint16Array(1);function Pm(t){Qf[0]=t;let e=Lm[0],r=e>>31&1,n=e>>23&255,s=8388607&e;if(n===255)return Xe[0]=r<<15|31744|(s!==0?512:0),Xe[0];if(n===0){if(s===0)return Xe[0]=r<<15,Xe[0];s|=8388608;let o=113;for(;!(8388608&s);)s<<=1,o--;return n=127-o,s&=8388607,n>0?(s=(s>>126-n)+(s>>127-n&1),Xe[0]=r<<15|n<<10|s>>13,Xe[0]):(Xe[0]=r<<15,Xe[0])}return n=n-127+15,n>=31?(Xe[0]=r<<15|31744,Xe[0]):n<=0?n<-10?(Xe[0]=r<<15,Xe[0]):(s=(8388608|s)>>1-n,Xe[0]=r<<15|s>>13,Xe[0]):(s>>=13,Xe[0]=r<<15|n<<10|s,Xe[0])}var nu=new Uint32Array(1),eh=new Float32Array(nu.buffer,0,1);function Yf(t){let e=112+(t>>6&31)<<23|(63&t)<<17;return nu[0]=e,eh[0]}function Om(t,e,r,n,s,o,a,i,u){let l=n*(a>>=s)*(o>>=s)+r*a+e*i;switch(u){case"r8unorm":return[Q(t,l,"8unorm",1)[0]];case"r8snorm":return[Q(t,l,"8snorm",1)[0]];case"r8uint":return[Q(t,l,"8uint",1)[0]];case"r8sint":return[Q(t,l,"8sint",1)[0]];case"rg8unorm":{let c=Q(t,l,"8unorm",2);return[c[0],c[1]]}case"rg8snorm":{let c=Q(t,l,"8snorm",2);return[c[0],c[1]]}case"rg8uint":{let c=Q(t,l,"8uint",2);return[c[0],c[1]]}case"rg8sint":{let c=Q(t,l,"8sint",2);return[c[0],c[1]]}case"rgba8unorm-srgb":case"rgba8unorm":{let c=Q(t,l,"8unorm",4);return[c[0],c[1],c[2],c[3]]}case"rgba8snorm":{let c=Q(t,l,"8snorm",4);return[c[0],c[1],c[2],c[3]]}case"rgba8uint":{let c=Q(t,l,"8uint",4);return[c[0],c[1],c[2],c[3]]}case"rgba8sint":{let c=Q(t,l,"8sint",4);return[c[0],c[1],c[2],c[3]]}case"bgra8unorm-srgb":case"bgra8unorm":{let c=Q(t,l,"8unorm",4);return[c[2],c[1],c[0],c[3]]}case"r16uint":return[Q(t,l,"16uint",1)[0]];case"r16sint":return[Q(t,l,"16sint",1)[0]];case"r16float":return[Q(t,l,"16float",1)[0]];case"rg16uint":{let c=Q(t,l,"16uint",2);return[c[0],c[1]]}case"rg16sint":{let c=Q(t,l,"16sint",2);return[c[0],c[1]]}case"rg16float":{let c=Q(t,l,"16float",2);return[c[0],c[1]]}case"rgba16uint":{let c=Q(t,l,"16uint",4);return[c[0],c[1],c[2],c[3]]}case"rgba16sint":{let c=Q(t,l,"16sint",4);return[c[0],c[1],c[2],c[3]]}case"rgba16float":{let c=Q(t,l,"16float",4);return[c[0],c[1],c[2],c[3]]}case"r32uint":return[Q(t,l,"32uint",1)[0]];case"r32sint":return[Q(t,l,"32sint",1)[0]];case"depth16unorm":case"depth24plus":case"depth24plus-stencil8":case"depth32float":case"depth32float-stencil8":case"r32float":return[Q(t,l,"32float",1)[0]];case"rg32uint":{let c=Q(t,l,"32uint",2);return[c[0],c[1]]}case"rg32sint":{let c=Q(t,l,"32sint",2);return[c[0],c[1]]}case"rg32float":{let c=Q(t,l,"32float",2);return[c[0],c[1]]}case"rgba32uint":{let c=Q(t,l,"32uint",4);return[c[0],c[1],c[2],c[3]]}case"rgba32sint":{let c=Q(t,l,"32sint",4);return[c[0],c[1],c[2],c[3]]}case"rgba32float":{let c=Q(t,l,"32float",4);return[c[0],c[1],c[2],c[3]]}case"rg11b10ufloat":{let c=new Uint32Array(t.buffer,l,1)[0],f=(4192256&c)>>11,m=(4290772992&c)>>22;return[Yf(2047&c),Yf(f),function(p){let w=112+(p>>5&31)<<23|(31&p)<<18;return nu[0]=w,eh[0]}(m),1]}}return null}function Q(t,e,r,n){let s=[0,0,0,0];for(let l=0;l<n;++l)switch(r){case"8unorm":s[l]=t[e]/255,e++;break;case"8snorm":s[l]=t[e]/255*2-1,e++;break;case"8uint":s[l]=t[e],e++;break;case"8sint":s[l]=t[e]-127,e++;break;case"16uint":s[l]=t[e]|t[e+1]<<8,e+=2;break;case"16sint":s[l]=(t[e]|t[e+1]<<8)-32768,e+=2;break;case"16float":s[l]=(o=t[e]|t[e+1]<<8,a=void 0,i=void 0,u=void 0,a=(32768&o)>>15,u=1023&o,(i=(31744&o)>>10)==0?(a?-1:1)*Math.pow(2,-14)*(u/Math.pow(2,10)):i==31?u?NaN:1/0*(a?-1:1):(a?-1:1)*Math.pow(2,i-15)*(1+u/Math.pow(2,10))),e+=2;break;case"32uint":case"32sint":s[l]=t[e]|t[e+1]<<8|t[e+2]<<16|t[e+3]<<24,e+=4;break;case"32float":s[l]=new Float32Array(t.buffer,e,1)[0],e+=4}var o,a,i,u;return s}function ee(t,e,r,n,s){for(let o=0;o<n;++o)switch(r){case"8unorm":t[e]=255*s[o],e++;break;case"8snorm":t[e]=.5*(s[o]+1)*255,e++;break;case"8uint":t[e]=s[o],e++;break;case"8sint":t[e]=s[o]+127,e++;break;case"16uint":new Uint16Array(t.buffer,e,1)[0]=s[o],e+=2;break;case"16sint":new Int16Array(t.buffer,e,1)[0]=s[o],e+=2;break;case"16float":{let a=Pm(s[o]);new Uint16Array(t.buffer,e,1)[0]=a,e+=2;break}case"32uint":new Uint32Array(t.buffer,e,1)[0]=s[o],e+=4;break;case"32sint":new Int32Array(t.buffer,e,1)[0]=s[o],e+=4;break;case"32float":new Float32Array(t.buffer,e,1)[0]=s[o],e+=4}return s}var Si={r8unorm:{bytesPerBlock:1,blockWidth:1,blockHeight:1,isCompressed:!1,channels:1},r8snorm:{bytesPerBlock:1,blockWidth:1,blockHeight:1,isCompressed:!1,channels:1},r8uint:{bytesPerBlock:1,blockWidth:1,blockHeight:1,isCompressed:!1,channels:1},r8sint:{bytesPerBlock:1,blockWidth:1,blockHeight:1,isCompressed:!1,channels:1},rg8unorm:{bytesPerBlock:2,blockWidth:1,blockHeight:1,isCompressed:!1,channels:2},rg8snorm:{bytesPerBlock:2,blockWidth:1,blockHeight:1,isCompressed:!1,channels:2},rg8uint:{bytesPerBlock:2,blockWidth:1,blockHeight:1,isCompressed:!1,channels:2},rg8sint:{bytesPerBlock:2,blockWidth:1,blockHeight:1,isCompressed:!1,channels:2},rgba8unorm:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},"rgba8unorm-srgb":{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},rgba8snorm:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},rgba8uint:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},rgba8sint:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},bgra8unorm:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},"bgra8unorm-srgb":{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},r16uint:{bytesPerBlock:2,blockWidth:1,blockHeight:1,isCompressed:!1,channels:1},r16sint:{bytesPerBlock:2,blockWidth:1,blockHeight:1,isCompressed:!1,channels:1},r16float:{bytesPerBlock:2,blockWidth:1,blockHeight:1,isCompressed:!1,channels:1},rg16uint:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:2},rg16sint:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:2},rg16float:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:2},rgba16uint:{bytesPerBlock:8,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},rgba16sint:{bytesPerBlock:8,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},rgba16float:{bytesPerBlock:8,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},r32uint:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:1},r32sint:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:1},r32float:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:1},rg32uint:{bytesPerBlock:8,blockWidth:1,blockHeight:1,isCompressed:!1,channels:2},rg32sint:{bytesPerBlock:8,blockWidth:1,blockHeight:1,isCompressed:!1,channels:2},rg32float:{bytesPerBlock:8,blockWidth:1,blockHeight:1,isCompressed:!1,channels:2},rgba32uint:{bytesPerBlock:16,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},rgba32sint:{bytesPerBlock:16,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},rgba32float:{bytesPerBlock:16,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},rgb10a2uint:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},rgb10a2unorm:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},rg11b10ufloat:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},stencil8:{bytesPerBlock:1,blockWidth:1,blockHeight:1,isCompressed:!1,isDepthStencil:!0,hasDepth:!1,hasStencil:!0,channels:1},depth16unorm:{bytesPerBlock:2,blockWidth:1,blockHeight:1,isCompressed:!1,isDepthStencil:!0,hasDepth:!0,hasStencil:!1,channels:1},depth24plus:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,isDepthStencil:!0,hasDepth:!0,hasStencil:!1,depthOnlyFormat:"depth32float",channels:1},"depth24plus-stencil8":{bytesPerBlock:8,blockWidth:1,blockHeight:1,isCompressed:!1,isDepthStencil:!0,hasDepth:!0,hasStencil:!0,depthOnlyFormat:"depth32float",channels:1},depth32float:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,isDepthStencil:!0,hasDepth:!0,hasStencil:!1,channels:1},"depth32float-stencil8":{bytesPerBlock:8,blockWidth:1,blockHeight:1,isCompressed:!1,isDepthStencil:!0,hasDepth:!0,hasStencil:!0,stencilOnlyFormat:"depth32float",channels:1},rgb9e5ufloat:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},"bc1-rgba-unorm":{bytesPerBlock:8,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},"bc1-rgba-unorm-srgb":{bytesPerBlock:8,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},"bc2-rgba-unorm":{bytesPerBlock:16,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},"bc2-rgba-unorm-srgb":{bytesPerBlock:16,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},"bc3-rgba-unorm":{bytesPerBlock:16,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},"bc3-rgba-unorm-srgb":{bytesPerBlock:16,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},"bc4-r-unorm":{bytesPerBlock:8,blockWidth:4,blockHeight:4,isCompressed:!0,channels:1},"bc4-r-snorm":{bytesPerBlock:8,blockWidth:4,blockHeight:4,isCompressed:!0,channels:1},"bc5-rg-unorm":{bytesPerBlock:16,blockWidth:4,blockHeight:4,isCompressed:!0,channels:2},"bc5-rg-snorm":{bytesPerBlock:16,blockWidth:4,blockHeight:4,isCompressed:!0,channels:2},"bc6h-rgb-ufloat":{bytesPerBlock:16,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},"bc6h-rgb-float":{bytesPerBlock:16,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},"bc7-rgba-unorm":{bytesPerBlock:16,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},"bc7-rgba-unorm-srgb":{bytesPerBlock:16,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},"etc2-rgb8unorm":{bytesPerBlock:8,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},"etc2-rgb8unorm-srgb":{bytesPerBlock:8,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},"etc2-rgb8a1unorm":{bytesPerBlock:8,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},"etc2-rgb8a1unorm-srgb":{bytesPerBlock:8,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},"etc2-rgba8unorm":{bytesPerBlock:16,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},"etc2-rgba8unorm-srgb":{bytesPerBlock:16,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},"eac-r11unorm":{bytesPerBlock:8,blockWidth:1,blockHeight:1,isCompressed:!0,channels:1},"eac-r11snorm":{bytesPerBlock:8,blockWidth:1,blockHeight:1,isCompressed:!0,channels:1},"eac-rg11unorm":{bytesPerBlock:16,blockWidth:1,blockHeight:1,isCompressed:!0,channels:2},"eac-rg11snorm":{bytesPerBlock:16,blockWidth:1,blockHeight:1,isCompressed:!0,channels:2},"astc-4x4-unorm":{bytesPerBlock:16,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},"astc-4x4-unorm-srgb":{bytesPerBlock:16,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},"astc-5x4-unorm":{bytesPerBlock:16,blockWidth:5,blockHeight:4,isCompressed:!0,channels:4},"astc-5x4-unorm-srgb":{bytesPerBlock:16,blockWidth:5,blockHeight:4,isCompressed:!0,channels:4},"astc-5x5-unorm":{bytesPerBlock:16,blockWidth:5,blockHeight:5,isCompressed:!0,channels:4},"astc-5x5-unorm-srgb":{bytesPerBlock:16,blockWidth:5,blockHeight:5,isCompressed:!0,channels:4},"astc-6x5-unorm":{bytesPerBlock:16,blockWidth:6,blockHeight:5,isCompressed:!0,channels:4},"astc-6x5-unorm-srgb":{bytesPerBlock:16,blockWidth:6,blockHeight:5,isCompressed:!0,channels:4},"astc-6x6-unorm":{bytesPerBlock:16,blockWidth:6,blockHeight:6,isCompressed:!0,channels:4},"astc-6x6-unorm-srgb":{bytesPerBlock:16,blockWidth:6,blockHeight:6,isCompressed:!0,channels:4},"astc-8x5-unorm":{bytesPerBlock:16,blockWidth:8,blockHeight:5,isCompressed:!0,channels:4},"astc-8x5-unorm-srgb":{bytesPerBlock:16,blockWidth:8,blockHeight:5,isCompressed:!0,channels:4},"astc-8x6-unorm":{bytesPerBlock:16,blockWidth:8,blockHeight:6,isCompressed:!0,channels:4},"astc-8x6-unorm-srgb":{bytesPerBlock:16,blockWidth:8,blockHeight:6,isCompressed:!0,channels:4},"astc-8x8-unorm":{bytesPerBlock:16,blockWidth:8,blockHeight:8,isCompressed:!0,channels:4},"astc-8x8-unorm-srgb":{bytesPerBlock:16,blockWidth:8,blockHeight:8,isCompressed:!0,channels:4},"astc-10x5-unorm":{bytesPerBlock:16,blockWidth:10,blockHeight:5,isCompressed:!0,channels:4},"astc-10x5-unorm-srgb":{bytesPerBlock:16,blockWidth:10,blockHeight:5,isCompressed:!0,channels:4},"astc-10x6-unorm":{bytesPerBlock:16,blockWidth:10,blockHeight:6,isCompressed:!0,channels:4},"astc-10x6-unorm-srgb":{bytesPerBlock:16,blockWidth:10,blockHeight:6,isCompressed:!0,channels:4},"astc-10x8-unorm":{bytesPerBlock:16,blockWidth:10,blockHeight:8,isCompressed:!0,channels:4},"astc-10x8-unorm-srgb":{bytesPerBlock:16,blockWidth:10,blockHeight:8,isCompressed:!0,channels:4},"astc-10x10-unorm":{bytesPerBlock:16,blockWidth:10,blockHeight:10,isCompressed:!0,channels:4},"astc-10x10-unorm-srgb":{bytesPerBlock:16,blockWidth:10,blockHeight:10,isCompressed:!0,channels:4},"astc-12x10-unorm":{bytesPerBlock:16,blockWidth:12,blockHeight:10,isCompressed:!0,channels:4},"astc-12x10-unorm-srgb":{bytesPerBlock:16,blockWidth:12,blockHeight:10,isCompressed:!0,channels:4},"astc-12x12-unorm":{bytesPerBlock:16,blockWidth:12,blockHeight:12,isCompressed:!0,channels:4},"astc-12x12-unorm-srgb":{bytesPerBlock:16,blockWidth:12,blockHeight:12,isCompressed:!0,channels:4}},Rt=class t{constructor(){this.id=t._id++,this.line=0}get isAstNode(){return!0}get astNodeType(){return""}search(e){e(this)}searchBlock(e,r){if(e){r(wn.instance);for(let n of e)n instanceof Array?this.searchBlock(n,r):n.search(r);r(Tn.instance)}}constEvaluate(e,r){throw new Error("Cannot evaluate node")}constEvaluateString(e){return this.constEvaluate(e).toString()}};Rt._id=0;var wn=class extends Rt{};wn.instance=new wn;var Tn=class extends Rt{};Tn.instance=new Tn;var th=new Set(["all","all","any","select","arrayLength","abs","acos","acosh","asin","asinh","atan","atanh","atan2","ceil","clamp","cos","cosh","countLeadingZeros","countOneBits","countTrailingZeros","cross","degrees","determinant","distance","dot","dot4U8Packed","dot4I8Packed","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","pack4xI8","pack4xU8","pack4x8Clamp","pack4xU8Clamp","pack2x16snorm","pack2x16unorm","pack2x16float","unpack4x8snorm","unpack4x8unorm","unpack4xI8","unpack4xU8","unpack2x16snorm","unpack2x16unorm","unpack2x16float","storageBarrier","textureBarrier","workgroupBarrier","workgroupUniformLoad","subgroupAdd","subgroupExclusiveAdd","subgroupInclusiveAdd","subgroupAll","subgroupAnd","subgroupAny","subgroupBallot","subgroupBroadcast","subgroupBroadcastFirst","subgroupElect","subgroupMax","subgroupMin","subgroupMul","subgroupExclusiveMul","subgroupInclusiveMul","subgroupOr","subgroupShuffle","subgroupShuffleDown","subgroupShuffleUp","subgroupShuffleXor","subgroupXor","quadBroadcast","quadSwapDiagonal","quadSwapX","quadSwapY"]),fe=class extends Rt{constructor(){super()}},Mr=class extends fe{constructor(e,r,n,s,o,a){super(),this.calls=new Set,this.name=e,this.args=r,this.returnType=n,this.body=s,this.startLine=o,this.endLine=a}get astNodeType(){return"function"}search(e){if(this.attributes)for(let r of this.attributes)e(r);e(this);for(let r of this.args)e(r);this.searchBlock(this.body,e)}},Vi=class extends fe{constructor(e){super(),this.expression=e}get astNodeType(){return"staticAssert"}search(e){this.expression.search(e)}},uo=class extends fe{constructor(e,r){super(),this.condition=e,this.body=r}get astNodeType(){return"while"}search(e){this.condition.search(e),this.searchBlock(this.body,e)}},Jn=class extends fe{constructor(e,r){super(),this.body=e,this.loopId=r}get astNodeType(){return"continuing"}search(e){this.searchBlock(this.body,e)}},co=class extends fe{constructor(e,r,n,s){super(),this.init=e,this.condition=r,this.increment=n,this.body=s}get astNodeType(){return"for"}search(e){var r,n,s;(r=this.init)===null||r===void 0||r.search(e),(n=this.condition)===null||n===void 0||n.search(e),(s=this.increment)===null||s===void 0||s.search(e),this.searchBlock(this.body,e)}},Nt=class extends fe{constructor(e,r,n,s,o){super(),this.attributes=null,this.name=e,this.type=r,this.storage=n,this.access=s,this.value=o}get astNodeType(){return"var"}search(e){var r;e(this),(r=this.value)===null||r===void 0||r.search(e)}},Qn=class extends fe{constructor(e,r,n){super(),this.attributes=null,this.name=e,this.type=r,this.value=n}get astNodeType(){return"override"}search(e){var r;(r=this.value)===null||r===void 0||r.search(e)}},Pr=class extends fe{constructor(e,r,n,s,o){super(),this.attributes=null,this.name=e,this.type=r,this.storage=n,this.access=s,this.value=o}get astNodeType(){return"let"}search(e){var r;e(this),(r=this.value)===null||r===void 0||r.search(e)}},yn=class extends fe{constructor(e,r,n,s,o){super(),this.attributes=null,this.name=e,this.type=r,this.storage=n,this.access=s,this.value=o}get astNodeType(){return"const"}constEvaluate(e,r){return this.value.constEvaluate(e,r)}search(e){var r;e(this),(r=this.value)===null||r===void 0||r.search(e)}},gn,Kn,b,x;(t=>{t.increment="++",t.decrement="--"})(gn||(gn={})),(t=>{t.parse=function(e){let r=e;if(r=="parse")throw new Error("Invalid value for IncrementOperator");return t[r]}})(gn||(gn={}));var lo=class extends fe{constructor(e,r){super(),this.operator=e,this.variable=r}get astNodeType(){return"increment"}search(e){this.variable.search(e)}};(t=>{t.assign="=",t.addAssign="+=",t.subtractAssin="-=",t.multiplyAssign="*=",t.divideAssign="/=",t.moduloAssign="%=",t.andAssign="&=",t.orAssign="|=",t.xorAssign="^=",t.shiftLeftAssign="<<=",t.shiftRightAssign=">>="})(Kn||(Kn={})),(t=>{t.parse=function(e){let r=e;if(r=="parse")throw new Error("Invalid value for AssignOperator");return r}})(Kn||(Kn={}));var fo=class extends fe{constructor(e,r,n){super(),this.operator=e,this.variable=r,this.value=n}get astNodeType(){return"assign"}search(e){this.variable.search(e),this.value.search(e)}},es=class extends fe{constructor(e,r){super(),this.name=e,this.args=r}get astNodeType(){return"call"}isBuiltin(){return th.has(this.name)}search(e){for(let r of this.args)r.search(e);e(this)}},ho=class extends fe{constructor(e,r){super(),this.body=e,this.continuing=r}get astNodeType(){return"loop"}},mo=class extends fe{constructor(e,r){super(),this.condition=e,this.cases=r}get astNodeType(){return"switch"}},po=class extends fe{constructor(e,r,n,s){super(),this.condition=e,this.body=r,this.elseif=n,this.else=s}get astNodeType(){return"if"}search(e){this.condition.search(e),this.searchBlock(this.body,e),this.searchBlock(this.elseif,e),this.searchBlock(this.else,e)}},go=class extends fe{constructor(e){super(),this.value=e}get astNodeType(){return"return"}search(e){var r;(r=this.value)===null||r===void 0||r.search(e)}},Wi=class extends fe{constructor(e){super(),this.name=e}get astNodeType(){return"enable"}},$i=class extends fe{constructor(e){super(),this.extensions=e}get astNodeType(){return"requires"}},xo=class extends fe{constructor(e,r){super(),this.severity=e,this.rule=r}get astNodeType(){return"diagnostic"}},ts=class extends fe{constructor(e,r){super(),this.name=e,this.type=r}get astNodeType(){return"alias"}},zi=class extends fe{constructor(){super()}get astNodeType(){return"discard"}},yo=class extends fe{constructor(){super(),this.condition=null,this.loopId=-1}get astNodeType(){return"break"}},_o=class extends fe{constructor(){super(),this.loopId=-1}get astNodeType(){return"continue"}},R=class t extends fe{constructor(e){super(),this.attributes=null,this.name=e}get astNodeType(){return"type"}get isStruct(){return!1}get isArray(){return!1}static maxFormatType(e){let r=e[0];if(r.name==="f32")return r;for(let n=1;n<e.length;++n){let s=t._priority.get(r.name);t._priority.get(e[n].name)<s&&(r=e[n])}return r.name==="x32"?t.i32:r}getTypeName(){return this.name}};R.x32=new R("x32"),R.f32=new R("f32"),R.i32=new R("i32"),R.u32=new R("u32"),R.f16=new R("f16"),R.bool=new R("bool"),R.void=new R("void"),R._priority=new Map([["f32",0],["f16",1],["u32",2],["i32",3],["x32",3]]);var bo=class extends R{constructor(e){super(e)}},Mt=class extends R{constructor(e,r,n,s){super(e),this.members=r,this.startLine=n,this.endLine=s}get astNodeType(){return"struct"}get isStruct(){return!0}getMemberIndex(e){for(let r=0;r<this.members.length;r++)if(this.members[r].name==e)return r;return-1}search(e){for(let r of this.members)e(r)}},_=class extends R{constructor(e,r,n){super(e),this.format=r,this.access=n}get astNodeType(){return"template"}getTypeName(){let e=this.name;if(this.format!==null){if(e==="vec2"||e==="vec3"||e==="vec4"||e==="mat2x2"||e==="mat2x3"||e==="mat2x4"||e==="mat3x2"||e==="mat3x3"||e==="mat3x4"||e==="mat4x2"||e==="mat4x3"||e==="mat4x4"){if(this.format.name==="f32")return e+="f",e;if(this.format.name==="i32")return e+="i",e;if(this.format.name==="u32")return e+="u",e;if(this.format.name==="bool")return e+="b",e;if(this.format.name==="f16")return e+="h",e}e+=`<${this.format.name}>`}else if(e==="vec2"||e==="vec3"||e==="vec4")return e;return e}};_.vec2f=new _("vec2",R.f32,null),_.vec3f=new _("vec3",R.f32,null),_.vec4f=new _("vec4",R.f32,null),_.vec2i=new _("vec2",R.i32,null),_.vec3i=new _("vec3",R.i32,null),_.vec4i=new _("vec4",R.i32,null),_.vec2u=new _("vec2",R.u32,null),_.vec3u=new _("vec3",R.u32,null),_.vec4u=new _("vec4",R.u32,null),_.vec2h=new _("vec2",R.f16,null),_.vec3h=new _("vec3",R.f16,null),_.vec4h=new _("vec4",R.f16,null),_.vec2b=new _("vec2",R.bool,null),_.vec3b=new _("vec3",R.bool,null),_.vec4b=new _("vec4",R.bool,null),_.mat2x2f=new _("mat2x2",R.f32,null),_.mat2x3f=new _("mat2x3",R.f32,null),_.mat2x4f=new _("mat2x4",R.f32,null),_.mat3x2f=new _("mat3x2",R.f32,null),_.mat3x3f=new _("mat3x3",R.f32,null),_.mat3x4f=new _("mat3x4",R.f32,null),_.mat4x2f=new _("mat4x2",R.f32,null),_.mat4x3f=new _("mat4x3",R.f32,null),_.mat4x4f=new _("mat4x4",R.f32,null),_.mat2x2h=new _("mat2x2",R.f16,null),_.mat2x3h=new _("mat2x3",R.f16,null),_.mat2x4h=new _("mat2x4",R.f16,null),_.mat3x2h=new _("mat3x2",R.f16,null),_.mat3x3h=new _("mat3x3",R.f16,null),_.mat3x4h=new _("mat3x4",R.f16,null),_.mat4x2h=new _("mat4x2",R.f16,null),_.mat4x3h=new _("mat4x3",R.f16,null),_.mat4x4h=new _("mat4x4",R.f16,null),_.mat2x2i=new _("mat2x2",R.i32,null),_.mat2x3i=new _("mat2x3",R.i32,null),_.mat2x4i=new _("mat2x4",R.i32,null),_.mat3x2i=new _("mat3x2",R.i32,null),_.mat3x3i=new _("mat3x3",R.i32,null),_.mat3x4i=new _("mat3x4",R.i32,null),_.mat4x2i=new _("mat4x2",R.i32,null),_.mat4x3i=new _("mat4x3",R.i32,null),_.mat4x4i=new _("mat4x4",R.i32,null),_.mat2x2u=new _("mat2x2",R.u32,null),_.mat2x3u=new _("mat2x3",R.u32,null),_.mat2x4u=new _("mat2x4",R.u32,null),_.mat3x2u=new _("mat3x2",R.u32,null),_.mat3x3u=new _("mat3x3",R.u32,null),_.mat3x4u=new _("mat3x4",R.u32,null),_.mat4x2u=new _("mat4x2",R.u32,null),_.mat4x3u=new _("mat4x3",R.u32,null),_.mat4x4u=new _("mat4x4",R.u32,null);var _n=class extends R{constructor(e,r,n,s){super(e),this.storage=r,this.type=n,this.access=s}get astNodeType(){return"pointer"}},Or=class extends R{constructor(e,r,n,s){super(e),this.attributes=r,this.format=n,this.count=s}get astNodeType(){return"array"}get isArray(){return!0}},Lr=class extends R{constructor(e,r,n){super(e),this.format=r,this.access=n}get astNodeType(){return"sampler"}},pt=class extends Rt{constructor(){super(),this.postfix=null}},ur=class extends pt{constructor(e){super(),this.value=e}get astNodeType(){return"stringExpr"}toString(){return this.value}constEvaluateString(){return this.value}},At=class extends pt{constructor(e,r){super(),this.type=e,this.args=r}get astNodeType(){return"createExpr"}search(e){if(e(this),this.args)for(let r of this.args)r.search(e)}constEvaluate(e,r){return r&&(r[0]=this.type),e.evalExpression(this,e.context)}},rs=class extends pt{constructor(e,r){super(),this.cachedReturnValue=null,this.name=e,this.args=r}get astNodeType(){return"callExpr"}setCachedReturnValue(e){this.cachedReturnValue=e}get isBuiltin(){return th.has(this.name)}constEvaluate(e,r){return e.evalExpression(this,e.context)}search(e){for(let r of this.args)r.search(e);e(this)}},Qe=class extends pt{constructor(e){super(),this.name=e}get astNodeType(){return"varExpr"}search(e){e(this),this.postfix&&this.postfix.search(e)}constEvaluate(e,r){return e.evalExpression(this,e.context)}},vo=class extends pt{constructor(e,r){super(),this.name=e,this.initializer=r}get astNodeType(){return"constExpr"}constEvaluate(e,r){if(this.initializer){let n=e.evalExpression(this.initializer,e.context);return n!==null&&this.postfix?n.getSubData(e,this.postfix,e.context):n}return null}search(e){this.initializer.search(e)}},Ce=class extends pt{constructor(e,r){super(),this.value=e,this.type=r}get astNodeType(){return"literalExpr"}constEvaluate(e,r){return r!==void 0&&(r[0]=this.type),this.value}get isScalar(){return this.value instanceof y}get isVector(){return this.value instanceof d||this.value instanceof H}get scalarValue(){return this.value instanceof y?this.value.value:(console.error("Value is not scalar."),0)}get vectorValue(){return this.value instanceof d||this.value instanceof H?this.value.data:(console.error("Value is not a vector or matrix."),new Float32Array(0))}},wo=class extends pt{constructor(e,r){super(),this.type=e,this.value=r}get astNodeType(){return"bitcastExpr"}search(e){this.value.search(e)}},Er=class extends pt{constructor(e){super(),this.index=e}search(e){this.index.search(e)}},To=class extends pt{constructor(){super()}},Ee=class extends To{constructor(e,r){super(),this.operator=e,this.right=r}get astNodeType(){return"unaryOp"}constEvaluate(e,r){return e.evalExpression(this,e.context)}search(e){this.right.search(e)}},mt=class extends To{constructor(e,r,n){super(),this.operator=e,this.left=r,this.right=n}get astNodeType(){return"binaryOp"}_getPromotedType(e,r){return e.name===r.name?e:e.name==="f32"||r.name==="f32"?R.f32:e.name==="u32"||r.name==="u32"?R.u32:R.i32}constEvaluate(e,r){return e.evalExpression(this,e.context)}search(e){this.left.search(e),this.right.search(e)}},ko=class extends Rt{constructor(e){super(),this.body=e}},bn=class extends pt{constructor(){super()}get astNodeType(){return"default"}},Eo=class extends ko{constructor(e,r){super(r),this.selectors=e}get astNodeType(){return"case"}search(e){this.searchBlock(this.body,e)}},Ao=class extends ko{constructor(e){super(e)}get astNodeType(){return"default"}search(e){this.searchBlock(this.body,e)}},Ro=class extends Rt{constructor(e,r,n){super(),this.name=e,this.type=r,this.attributes=n}get astNodeType(){return"argument"}},Hi=class extends Rt{constructor(e,r){super(),this.condition=e,this.body=r}get astNodeType(){return"elseif"}search(e){this.condition.search(e),this.searchBlock(this.body,e)}},Io=class extends Rt{constructor(e,r,n){super(),this.name=e,this.type=r,this.attributes=n}get astNodeType(){return"member"}},So=class extends Rt{constructor(e,r){super(),this.name=e,this.value=r}get astNodeType(){return"attribute"}},It=class t{constructor(e,r){this.parent=null,this.typeInfo=e,this.parent=r,this.id=t._id++}clone(){throw`Clone: Not implemented for ${this.constructor.name}`}setDataValue(e,r,n,s){console.error(`SetDataValue: Not implemented for ${this.constructor.name}`)}getSubData(e,r,n){return console.error(`GetDataValue: Not implemented for ${this.constructor.name}`),null}toString(){return`<${this.typeInfo.getTypeName()}>`}};It._id=0;var ns=class extends It{constructor(){super(new st("void",null),null)}toString(){return"void"}};ns.void=new ns;var kr=class extends It{constructor(e){super(new Zn("pointer",e.typeInfo,null),null),this.reference=e}clone(){return this}setDataValue(e,r,n,s){this.reference.setDataValue(e,r,n,s)}getSubData(e,r,n){return r?this.reference.getSubData(e,r,n):this}toString(){return`&${this.reference.toString()}`}},y=class t extends It{constructor(e,r,n=null){super(r,n),e instanceof Int32Array||e instanceof Uint32Array||e instanceof Float32Array?this.data=e:this.typeInfo.name==="x32"?e-Math.floor(e)!=0?this.data=new Float32Array([e]):this.data=e>=0?new Uint32Array([e]):new Int32Array([e]):this.typeInfo.name==="i32"||this.typeInfo.name==="bool"?this.data=new Int32Array([e]):this.typeInfo.name==="u32"?this.data=new Uint32Array([e]):this.typeInfo.name==="f32"||this.typeInfo.name==="f16"?this.data=new Float32Array([e]):console.error("ScalarData2: Invalid type",r)}clone(){if(this.data instanceof Float32Array)return new t(new Float32Array(this.data),this.typeInfo,null);if(this.data instanceof Int32Array)return new t(new Int32Array(this.data),this.typeInfo,null);if(this.data instanceof Uint32Array)return new t(new Uint32Array(this.data),this.typeInfo,null);throw"ScalarData: Invalid data type"}get value(){return this.data[0]}set value(e){this.data[0]=e}setDataValue(e,r,n,s){if(n)return void console.error("SetDataValue: Scalar data does not support postfix",n);if(!(r instanceof t))return void console.error("SetDataValue: Invalid value",r);let o=r.data[0];this.typeInfo.name==="i32"||this.typeInfo.name==="u32"?o=Math.floor(o):this.typeInfo.name==="bool"&&(o=o?1:0),this.data[0]=o}getSubData(e,r,n){return r?(console.error("getSubData: Scalar data does not support postfix",r),null):this}toString(){return`${this.value}`}};function Dm(t,e,r){let n=e.length;return n===2?r==="f32"?new d(new Float32Array(e),t.getTypeInfo("vec2f")):r==="i32"||r==="bool"?new d(new Int32Array(e),t.getTypeInfo("vec2i")):r==="u32"?new d(new Uint32Array(e),t.getTypeInfo("vec2u")):r==="f16"?new d(new Float32Array(e),t.getTypeInfo("vec2h")):(console.error(`getSubData: Unknown format ${r}`),null):n===3?r==="f32"?new d(new Float32Array(e),t.getTypeInfo("vec3f")):r==="i32"||r==="bool"?new d(new Int32Array(e),t.getTypeInfo("vec3i")):r==="u32"?new d(new Uint32Array(e),t.getTypeInfo("vec3u")):r==="f16"?new d(new Float32Array(e),t.getTypeInfo("vec3h")):(console.error(`getSubData: Unknown format ${r}`),null):n===4?r==="f32"?new d(new Float32Array(e),t.getTypeInfo("vec4f")):r==="i32"||r==="bool"?new d(new Int32Array(e),t.getTypeInfo("vec4i")):r==="u32"?new d(new Uint32Array(e),t.getTypeInfo("vec4u")):r==="f16"?new d(new Float32Array(e),t.getTypeInfo("vec4h")):(console.error(`getSubData: Unknown format ${r}`),null):(console.error(`getSubData: Invalid vector size ${e.length}`),null)}var d=class t extends It{constructor(e,r,n=null){if(super(r,n),e instanceof Float32Array||e instanceof Uint32Array||e instanceof Int32Array)this.data=e;else{let s=this.typeInfo.name;s==="vec2f"||s==="vec3f"||s==="vec4f"?this.data=new Float32Array(e):s==="vec2i"||s==="vec3i"||s==="vec4i"?this.data=new Int32Array(e):s==="vec2u"||s==="vec3u"||s==="vec4u"?this.data=new Uint32Array(e):s==="vec2h"||s==="vec3h"||s==="vec4h"?this.data=new Float32Array(e):s==="vec2b"||s==="vec3b"||s==="vec4b"?this.data=new Int32Array(e):s==="vec2"||s==="vec3"||s==="vec4"?this.data=new Float32Array(e):console.error(`VectorData: Invalid type ${s}`)}}clone(){if(this.data instanceof Float32Array)return new t(new Float32Array(this.data),this.typeInfo,null);if(this.data instanceof Int32Array)return new t(new Int32Array(this.data),this.typeInfo,null);if(this.data instanceof Uint32Array)return new t(new Uint32Array(this.data),this.typeInfo,null);throw"VectorData: Invalid data type"}setDataValue(e,r,n,s){n instanceof ur?console.error("TODO: Set vector postfix"):r instanceof t?this.data=r.data:console.error("SetDataValue: Invalid value",r)}getSubData(e,r,n){if(r===null)return this;let s=e.getTypeInfo("f32");if(this.typeInfo instanceof ir)s=this.typeInfo.format||s;else{let a=this.typeInfo.name;a==="vec2f"||a==="vec3f"||a==="vec4f"?s=e.getTypeInfo("f32"):a==="vec2i"||a==="vec3i"||a==="vec4i"?s=e.getTypeInfo("i32"):a==="vec2b"||a==="vec3b"||a==="vec4b"?s=e.getTypeInfo("bool"):a==="vec2u"||a==="vec3u"||a==="vec4u"?s=e.getTypeInfo("u32"):a==="vec2h"||a==="vec3h"||a==="vec4h"?s=e.getTypeInfo("f16"):console.error(`GetSubData: Unknown type ${a}`)}let o=this;for(;r!==null&&o!==null;){if(r instanceof Er){let a=r.index,i=-1;if(a instanceof Ce){if(!(a.value instanceof y))return console.error(`GetSubData: Invalid array index ${a.value}`),null;i=a.value.value}else{let u=e.evalExpression(a,n);if(!(u instanceof y))return console.error("GetSubData: Unknown index type",a),null;i=u.value}if(i<0||i>=o.data.length)return console.error("GetSubData: Index out of range",i),null;if(o.data instanceof Float32Array){let u=new Float32Array(o.data.buffer,o.data.byteOffset+4*i,1);return new y(u,s)}if(o.data instanceof Int32Array){let u=new Int32Array(o.data.buffer,o.data.byteOffset+4*i,1);return new y(u,s)}if(o.data instanceof Uint32Array){let u=new Uint32Array(o.data.buffer,o.data.byteOffset+4*i,1);return new y(u,s)}throw"GetSubData: Invalid data type"}if(!(r instanceof ur))return console.error("GetSubData: Unknown postfix",r),null;{let a=r.value.toLowerCase();if(a.length===1){let u=0;if(a==="x"||a==="r")u=0;else if(a==="y"||a==="g")u=1;else if(a==="z"||a==="b")u=2;else{if(a!=="w"&&a!=="a")return console.error(`GetSubData: Unknown member ${a}`),null;u=3}if(this.data instanceof Float32Array){let l=new Float32Array(this.data.buffer,this.data.byteOffset+4*u,1);return new y(l,s,this)}if(this.data instanceof Int32Array){let l=new Int32Array(this.data.buffer,this.data.byteOffset+4*u,1);return new y(l,s,this)}if(this.data instanceof Uint32Array){let l=new Uint32Array(this.data.buffer,this.data.byteOffset+4*u,1);return new y(l,s,this)}}let i=[];for(let u of a)u==="x"||u==="r"?i.push(this.data[0]):u==="y"||u==="g"?i.push(this.data[1]):u==="z"||u==="b"?i.push(this.data[2]):u==="w"||u==="a"?i.push(this.data[3]):console.error(`GetDataValue: Unknown member ${u}`);o=Dm(e,i,s.name)}r=r.postfix}return o}toString(){let e=`${this.data[0]}`;for(let r=1;r<this.data.length;++r)e+=`, ${this.data[r]}`;return e}},H=class t extends It{constructor(e,r,n=null){super(r,n),e instanceof Float32Array?this.data=e:this.data=new Float32Array(e)}clone(){return new t(new Float32Array(this.data),this.typeInfo,null)}setDataValue(e,r,n,s){n instanceof ur?console.error("TODO: Set matrix postfix"):r instanceof t?this.data=r.data:console.error("SetDataValue: Invalid value",r)}getSubData(e,r,n){if(r===null)return this;let s=this.typeInfo.name;if(e.getTypeInfo("f32"),this.typeInfo instanceof ir)this.typeInfo.format;else if(s.endsWith("f"))e.getTypeInfo("f32");else if(s.endsWith("i"))e.getTypeInfo("i32");else if(s.endsWith("u"))e.getTypeInfo("u32");else{if(!s.endsWith("h"))return console.error(`GetDataValue: Unknown type ${s}`),null;e.getTypeInfo("f16")}if(r instanceof Er){let o=r.index,a=-1;if(o instanceof Ce){if(!(o.value instanceof y))return console.error(`GetDataValue: Invalid array index ${o.value}`),null;a=o.value.value}else{let l=e.evalExpression(o,n);if(!(l instanceof y))return console.error("GetDataValue: Unknown index type",o),null;a=l.value}if(a<0||a>=this.data.length)return console.error("GetDataValue: Index out of range",a),null;let i=s.endsWith("h")?"h":"f",u;if(s==="mat2x2"||s==="mat2x2f"||s==="mat2x2h"||s==="mat3x2"||s==="mat3x2f"||s==="mat3x2h"||s==="mat4x2"||s==="mat4x2f"||s==="mat4x2h")u=new d(new Float32Array(this.data.buffer,this.data.byteOffset+2*a*4,2),e.getTypeInfo(`vec2${i}`));else if(s==="mat2x3"||s==="mat2x3f"||s==="mat2x3h"||s==="mat3x3"||s==="mat3x3f"||s==="mat3x3h"||s==="mat4x3"||s==="mat4x3f"||s==="mat4x3h")u=new d(new Float32Array(this.data.buffer,this.data.byteOffset+3*a*4,3),e.getTypeInfo(`vec3${i}`));else{if(s!=="mat2x4"&&s!=="mat2x4f"&&s!=="mat2x4h"&&s!=="mat3x4"&&s!=="mat3x4f"&&s!=="mat3x4h"&&s!=="mat4x4"&&s!=="mat4x4f"&&s!=="mat4x4h")return console.error(`GetDataValue: Unknown type ${s}`),null;u=new d(new Float32Array(this.data.buffer,this.data.byteOffset+4*a*4,4),e.getTypeInfo(`vec4${i}`))}return r.postfix?u.getSubData(e,r.postfix,n):u}return console.error("GetDataValue: Invalid postfix",r),null}toString(){let e=`${this.data[0]}`;for(let r=1;r<this.data.length;++r)e+=`, ${this.data[r]}`;return e}},Le=class t extends It{constructor(e,r,n=0,s=null){super(r,s),this.buffer=e instanceof ArrayBuffer?e:e.buffer,this.offset=n}clone(){let e=new Uint8Array(new Uint8Array(this.buffer,this.offset,this.typeInfo.size));return new t(e.buffer,this.typeInfo,0,null)}setDataValue(e,r,n,s){if(r===null)return void console.log("setDataValue: NULL data.");let o=this.offset,a=this.typeInfo;for(;n;){if(n instanceof Er)if(a instanceof Kt){let i=n.index;if(i instanceof Ce){if(!(i.value instanceof y))return void console.error(`SetDataValue: Invalid index type ${i.value}`);o+=i.value.value*a.stride}else{let u=e.evalExpression(i,s);if(!(u instanceof y))return void console.error("SetDataValue: Unknown index type",i);o+=u.value*a.stride}a=a.format}else console.error(`SetDataValue: Type ${a.getTypeName()} is not an array`);else{if(!(n instanceof ur))return void console.error("SetDataValue: Unknown postfix type",n);{let i=n.value;if(a instanceof qt){let u=!1;for(let l of a.members)if(l.name===i){o+=l.offset,a=l.type,u=!0;break}if(!u)return void console.error(`SetDataValue: Member ${i} not found`)}else if(a instanceof st){let u=a.getTypeName(),l=0;if(i==="x"||i==="r")l=0;else if(i==="y"||i==="g")l=1;else if(i==="z"||i==="b")l=2;else{if(i!=="w"&&i!=="a")return void console.error(`SetDataValue: Unknown member ${i}`);l=3}if(!(r instanceof y))return void console.error("SetDataValue: Invalid value",r);let c=r.value;return u==="vec2f"?void(new Float32Array(this.buffer,o,2)[l]=c):u==="vec3f"?void(new Float32Array(this.buffer,o,3)[l]=c):u==="vec4f"?void(new Float32Array(this.buffer,o,4)[l]=c):u==="vec2i"?void(new Int32Array(this.buffer,o,2)[l]=c):u==="vec3i"?void(new Int32Array(this.buffer,o,3)[l]=c):u==="vec4i"?void(new Int32Array(this.buffer,o,4)[l]=c):u==="vec2u"?void(new Uint32Array(this.buffer,o,2)[l]=c):u==="vec3u"?void(new Uint32Array(this.buffer,o,3)[l]=c):u==="vec4u"?void(new Uint32Array(this.buffer,o,4)[l]=c):void console.error(`SetDataValue: Type ${u} is not a struct`)}}}n=n.postfix}this.setData(e,r,a,o,s)}setData(e,r,n,s,o){let a=n.getTypeName();if(a!=="f32"&&a!=="f16")if(a!=="i32"&&a!=="atomic<i32>"&&a!=="x32")if(a!=="u32"&&a!=="atomic<u32>")if(a!=="bool")if(a!=="vec2f"&&a!=="vec2h")if(a!=="vec3f"&&a!=="vec3h")if(a!=="vec4f"&&a!=="vec4h")if(a!=="vec2i")if(a!=="vec3i")if(a!=="vec4i")if(a!=="vec2u")if(a!=="vec3u")if(a!=="vec4u")if(a!=="vec2b")if(a!=="vec3b")if(a!=="vec4b")if(a!=="mat2x2f"&&a!=="mat2x2h")if(a!=="mat2x3f"&&a!=="mat2x3h")if(a!=="mat2x4f"&&a!=="mat2x4h")if(a!=="mat3x2f"&&a!=="mat3x2h")if(a!=="mat3x3f"&&a!=="mat3x3h")if(a!=="mat3x4f"&&a!=="mat3x4h")if(a!=="mat4x2f"&&a!=="mat4x2h")if(a!=="mat4x3f"&&a!=="mat4x3h")if(a!=="mat4x4f"&&a!=="mat4x4h")if(r instanceof t){if(n===r.typeInfo)return void new Uint8Array(this.buffer,s,r.buffer.byteLength).set(new Uint8Array(r.buffer));console.error("SetDataValue: Type mismatch",a,r.typeInfo.getTypeName())}else console.error(`SetData: Unknown type ${a}`);else{let i=new Float32Array(this.buffer,s,16);r instanceof H?(i[0]=r.data[0],i[1]=r.data[1],i[2]=r.data[2],i[3]=r.data[3],i[4]=r.data[4],i[5]=r.data[5],i[6]=r.data[6],i[7]=r.data[7],i[8]=r.data[8],i[9]=r.data[9],i[10]=r.data[10],i[11]=r.data[11],i[12]=r.data[12],i[13]=r.data[13],i[14]=r.data[14],i[15]=r.data[15]):(i[0]=r[0],i[1]=r[1],i[2]=r[2],i[3]=r[3],i[4]=r[4],i[5]=r[5],i[6]=r[6],i[7]=r[7],i[8]=r[8],i[9]=r[9],i[10]=r[10],i[11]=r[11],i[12]=r[12],i[13]=r[13],i[14]=r[14],i[15]=r[15])}else{let i=new Float32Array(this.buffer,s,12);r instanceof H?(i[0]=r.data[0],i[1]=r.data[1],i[2]=r.data[2],i[3]=r.data[3],i[4]=r.data[4],i[5]=r.data[5],i[6]=r.data[6],i[7]=r.data[7],i[8]=r.data[8],i[9]=r.data[9],i[10]=r.data[10],i[11]=r.data[11]):(i[0]=r[0],i[1]=r[1],i[2]=r[2],i[3]=r[3],i[4]=r[4],i[5]=r[5],i[6]=r[6],i[7]=r[7],i[8]=r[8],i[9]=r[9],i[10]=r[10],i[11]=r[11])}else{let i=new Float32Array(this.buffer,s,8);r instanceof H?(i[0]=r.data[0],i[1]=r.data[1],i[2]=r.data[2],i[3]=r.data[3],i[4]=r.data[4],i[5]=r.data[5],i[6]=r.data[6],i[7]=r.data[7]):(i[0]=r[0],i[1]=r[1],i[2]=r[2],i[3]=r[3],i[4]=r[4],i[5]=r[5],i[6]=r[6],i[7]=r[7])}else{let i=new Float32Array(this.buffer,s,12);r instanceof H?(i[0]=r.data[0],i[1]=r.data[1],i[2]=r.data[2],i[3]=r.data[3],i[4]=r.data[4],i[5]=r.data[5],i[6]=r.data[6],i[7]=r.data[7],i[8]=r.data[8],i[9]=r.data[9],i[10]=r.data[10],i[11]=r.data[11]):(i[0]=r[0],i[1]=r[1],i[2]=r[2],i[3]=r[3],i[4]=r[4],i[5]=r[5],i[6]=r[6],i[7]=r[7],i[8]=r[8],i[9]=r[9],i[10]=r[10],i[11]=r[11])}else{let i=new Float32Array(this.buffer,s,9);r instanceof H?(i[0]=r.data[0],i[1]=r.data[1],i[2]=r.data[2],i[3]=r.data[3],i[4]=r.data[4],i[5]=r.data[5],i[6]=r.data[6],i[7]=r.data[7],i[8]=r.data[8]):(i[0]=r[0],i[1]=r[1],i[2]=r[2],i[3]=r[3],i[4]=r[4],i[5]=r[5],i[6]=r[6],i[7]=r[7],i[8]=r[8])}else{let i=new Float32Array(this.buffer,s,6);r instanceof H?(i[0]=r.data[0],i[1]=r.data[1],i[2]=r.data[2],i[3]=r.data[3],i[4]=r.data[4],i[5]=r.data[5]):(i[0]=r[0],i[1]=r[1],i[2]=r[2],i[3]=r[3],i[4]=r[4],i[5]=r[5])}else{let i=new Float32Array(this.buffer,s,8);r instanceof H?(i[0]=r.data[0],i[1]=r.data[1],i[2]=r.data[2],i[3]=r.data[3],i[4]=r.data[4],i[5]=r.data[5],i[6]=r.data[6],i[7]=r.data[7]):(i[0]=r[0],i[1]=r[1],i[2]=r[2],i[3]=r[3],i[4]=r[4],i[5]=r[5],i[6]=r[6],i[7]=r[7])}else{let i=new Float32Array(this.buffer,s,6);r instanceof H?(i[0]=r.data[0],i[1]=r.data[1],i[2]=r.data[2],i[3]=r.data[3],i[4]=r.data[4],i[5]=r.data[5]):(i[0]=r[0],i[1]=r[1],i[2]=r[2],i[3]=r[3],i[4]=r[4],i[5]=r[5])}else{let i=new Float32Array(this.buffer,s,4);r instanceof H?(i[0]=r.data[0],i[1]=r.data[1],i[2]=r.data[2],i[3]=r.data[3]):(i[0]=r[0],i[1]=r[1],i[2]=r[2],i[3]=r[3])}else{let i=new Uint32Array(this.buffer,s,4);r instanceof d?(i[0]=r.data[0],i[1]=r.data[1],i[2]=r.data[2],i[3]=r.data[3]):(i[0]=r[0],i[1]=r[1],i[2]=r[2],i[3]=r[3])}else{let i=new Uint32Array(this.buffer,s,3);r instanceof d?(i[0]=r.data[0],i[1]=r.data[1],i[2]=r.data[2]):(i[0]=r[0],i[1]=r[1],i[2]=r[2])}else{let i=new Uint32Array(this.buffer,s,2);r instanceof d?(i[0]=r.data[0],i[1]=r.data[1]):(i[0]=r[0],i[1]=r[1])}else{let i=new Uint32Array(this.buffer,s,4);r instanceof d?(i[0]=r.data[0],i[1]=r.data[1],i[2]=r.data[2],i[3]=r.data[3]):(i[0]=r[0],i[1]=r[1],i[2]=r[2],i[3]=r[3])}else{let i=new Uint32Array(this.buffer,s,3);r instanceof d?(i[0]=r.data[0],i[1]=r.data[1],i[2]=r.data[2]):(i[0]=r[0],i[1]=r[1],i[2]=r[2])}else{let i=new Uint32Array(this.buffer,s,2);r instanceof d?(i[0]=r.data[0],i[1]=r.data[1]):(i[0]=r[0],i[1]=r[1])}else{let i=new Int32Array(this.buffer,s,4);r instanceof d?(i[0]=r.data[0],i[1]=r.data[1],i[2]=r.data[2],i[3]=r.data[3]):(i[0]=r[0],i[1]=r[1],i[2]=r[2],i[3]=r[3])}else{let i=new Int32Array(this.buffer,s,3);r instanceof d?(i[0]=r.data[0],i[1]=r.data[1],i[2]=r.data[2]):(i[0]=r[0],i[1]=r[1],i[2]=r[2])}else{let i=new Int32Array(this.buffer,s,2);r instanceof d?(i[0]=r.data[0],i[1]=r.data[1]):(i[0]=r[0],i[1]=r[1])}else{let i=new Float32Array(this.buffer,s,4);r instanceof d?(i[0]=r.data[0],i[1]=r.data[1],i[2]=r.data[2],i[3]=r.data[3]):(i[0]=r[0],i[1]=r[1],i[2]=r[2],i[3]=r[3])}else{let i=new Float32Array(this.buffer,s,3);r instanceof d?(i[0]=r.data[0],i[1]=r.data[1],i[2]=r.data[2]):(i[0]=r[0],i[1]=r[1],i[2]=r[2])}else{let i=new Float32Array(this.buffer,s,2);r instanceof d?(i[0]=r.data[0],i[1]=r.data[1]):(i[0]=r[0],i[1]=r[1])}else r instanceof y&&(new Int32Array(this.buffer,s,1)[0]=r.value);else r instanceof y&&(new Uint32Array(this.buffer,s,1)[0]=r.value);else r instanceof y&&(new Int32Array(this.buffer,s,1)[0]=r.value);else r instanceof y&&(new Float32Array(this.buffer,s,1)[0]=r.value)}getSubData(e,r,n){var s,o,a;if(r===null)return this;let i=this.offset,u=this.typeInfo;for(;r;){if(r instanceof Er){let c=r.index,f=c instanceof pt?e.evalExpression(c,n):c,m=0;if(f instanceof y?m=f.value:typeof f=="number"?m=f:console.error("GetDataValue: Invalid index type",c),u instanceof Kt)i+=m*u.stride,u=u.format;else{let p=u.getTypeName();p==="mat4x4"||p==="mat4x4f"||p==="mat4x4h"?(i+=16*m,u=e.getTypeInfo("vec4f")):console.error(`getDataValue: Type ${u.getTypeName()} is not an array`)}}else{if(!(r instanceof ur))return console.error("GetDataValue: Unknown postfix type",r),null;{let c=r.value;if(u instanceof qt){let f=!1;for(let m of u.members)if(m.name===c){i+=m.offset,u=m.type,f=!0;break}if(!f)return console.error(`GetDataValue: Member ${c} not found`),null}else if(u instanceof st){let f=u.getTypeName();if(f==="vec2f"||f==="vec3f"||f==="vec4f"||f==="vec2i"||f==="vec3i"||f==="vec4i"||f==="vec2u"||f==="vec3u"||f==="vec4u"||f==="vec2b"||f==="vec3b"||f==="vec4b"||f==="vec2h"||f==="vec3h"||f==="vec4h"||f==="vec2"||f==="vec3"||f==="vec4"){if(c.length>0&&c.length<5){let m="f",p=[];for(let w=0;w<c.length;++w){let A=c[w].toLowerCase(),v=0;if(A==="x"||A==="r")v=0;else if(A==="y"||A==="g")v=1;else if(A==="z"||A==="b")v=2;else{if(A!=="w"&&A!=="a")return console.error(`Unknown member ${c}`),null;v=3}if(c.length===1){if(f.endsWith("f"))return this.buffer.byteLength<i+4*v+4?(console.log("Insufficient buffer data"),null):new y(new Float32Array(this.buffer,i+4*v,1),e.getTypeInfo("f32"),this);if(f.endsWith("h"))return new y(new Float32Array(this.buffer,i+4*v,1),e.getTypeInfo("f16"),this);if(f.endsWith("i"))return new y(new Int32Array(this.buffer,i+4*v,1),e.getTypeInfo("i32"),this);if(f.endsWith("b"))return new y(new Int32Array(this.buffer,i+4*v,1),e.getTypeInfo("bool"),this);if(f.endsWith("u"))return new y(new Uint32Array(this.buffer,i+4*v,1),e.getTypeInfo("i32"),this)}if(f==="vec2f")p.push(new Float32Array(this.buffer,i,2)[v]);else if(f==="vec3f"){if(i+12>=this.buffer.byteLength)return console.log("Insufficient buffer data"),null;let C=new Float32Array(this.buffer,i,3);p.push(C[v])}else if(f==="vec4f")p.push(new Float32Array(this.buffer,i,4)[v]);else if(f==="vec2i")m="i",p.push(new Int32Array(this.buffer,i,2)[v]);else if(f==="vec3i")m="i",p.push(new Int32Array(this.buffer,i,3)[v]);else if(f==="vec4i")m="i",p.push(new Int32Array(this.buffer,i,4)[v]);else if(f==="vec2u"){m="u";let C=new Uint32Array(this.buffer,i,2);p.push(C[v])}else f==="vec3u"?(m="u",p.push(new Uint32Array(this.buffer,i,3)[v])):f==="vec4u"&&(m="u",p.push(new Uint32Array(this.buffer,i,4)[v]))}return p.length===2?u=e.getTypeInfo(`vec2${m}`):p.length===3?u=e.getTypeInfo(`vec3${m}`):p.length===4?u=e.getTypeInfo(`vec4${m}`):console.error(`GetDataValue: Invalid vector length ${p.length}`),new d(p,u,null)}return console.error(`GetDataValue: Unknown member ${c}`),null}return console.error(`GetDataValue: Type ${f} is not a struct`),null}}}r=r.postfix}let l=u.getTypeName();return l==="f32"?new y(new Float32Array(this.buffer,i,1),u,this):l==="i32"?new y(new Int32Array(this.buffer,i,1),u,this):l==="u32"?new y(new Uint32Array(this.buffer,i,1),u,this):l==="vec2f"?new d(new Float32Array(this.buffer,i,2),u,this):l==="vec3f"?new d(new Float32Array(this.buffer,i,3),u,this):l==="vec4f"?new d(new Float32Array(this.buffer,i,4),u,this):l==="vec2i"?new d(new Int32Array(this.buffer,i,2),u,this):l==="vec3i"?new d(new Int32Array(this.buffer,i,3),u,this):l==="vec4i"?new d(new Int32Array(this.buffer,i,4),u,this):l==="vec2u"?new d(new Uint32Array(this.buffer,i,2),u,this):l==="vec3u"?new d(new Uint32Array(this.buffer,i,3),u,this):l==="vec4u"?new d(new Uint32Array(this.buffer,i,4),u,this):u instanceof ir&&u.name==="atomic"?((s=u.format)===null||s===void 0?void 0:s.name)==="u32"?new y(new Uint32Array(this.buffer,i,1)[0],u.format,this):((o=u.format)===null||o===void 0?void 0:o.name)==="i32"?new y(new Int32Array(this.buffer,i,1)[0],u.format,this):(console.error(`GetDataValue: Invalid atomic format ${(a=u.format)===null||a===void 0?void 0:a.name}`),null):new t(this.buffer,u,i,this)}toString(){let e="";if(this.typeInfo instanceof Kt)if(this.typeInfo.format.name==="f32"){let r=new Float32Array(this.buffer,this.offset);e=`[${r[0]}`;for(let n=1;n<r.length;++n)e+=`, ${r[n]}`}else if(this.typeInfo.format.name==="i32"){let r=new Int32Array(this.buffer,this.offset);e=`[${r[0]}`;for(let n=1;n<r.length;++n)e+=`, ${r[n]}`}else if(this.typeInfo.format.name==="u32"){let r=new Uint32Array(this.buffer,this.offset);e=`[${r[0]}`;for(let n=1;n<r.length;++n)e+=`, ${r[n]}`}else if(this.typeInfo.format.name==="vec2f"){let r=new Float32Array(this.buffer,this.offset);e=`[${r[0]}, ${r[1]}]`;for(let n=1;n<r.length/2;++n)e+=`, [${r[2*n]}, ${r[2*n+1]}]`}else if(this.typeInfo.format.name==="vec3f"){let r=new Float32Array(this.buffer,this.offset);e=`[${r[0]}, ${r[1]}, ${r[2]}]`;for(let n=4;n<r.length;n+=4)e+=`, [${r[n]}, ${r[n+1]}, ${r[n+2]}]`}else if(this.typeInfo.format.name==="vec4f"){let r=new Float32Array(this.buffer,this.offset);e=`[${r[0]}, ${r[1]}, ${r[2]}, ${r[3]}]`;for(let n=4;n<r.length;n+=4)e+=`, [${r[n]}, ${r[n+1]}, ${r[n+2]}, ${r[n+3]}]`}else e="[...]";else this.typeInfo instanceof qt?e+="{...}":e="[...]";return e}},ar=class t extends It{constructor(e,r,n,s){super(r,null),this.data=e,this.descriptor=n,this.view=s}clone(){return new t(this.data,this.typeInfo,this.descriptor,this.view)}get width(){var e,r;let n=this.descriptor.size;return n instanceof Array&&n.length>0?(e=n[0])!==null&&e!==void 0?e:0:n instanceof Object&&(r=n.width)!==null&&r!==void 0?r:0}get height(){var e,r;let n=this.descriptor.size;return n instanceof Array&&n.length>1?(e=n[1])!==null&&e!==void 0?e:0:n instanceof Object&&(r=n.height)!==null&&r!==void 0?r:0}get depthOrArrayLayers(){var e,r;let n=this.descriptor.size;return n instanceof Array&&n.length>2?(e=n[2])!==null&&e!==void 0?e:0:n instanceof Object&&(r=n.depthOrArrayLayers)!==null&&r!==void 0?r:0}get format(){var e;return this.descriptor&&(e=this.descriptor.format)!==null&&e!==void 0?e:"rgba8unorm"}get sampleCount(){var e;return this.descriptor&&(e=this.descriptor.sampleCount)!==null&&e!==void 0?e:1}get mipLevelCount(){var e;return this.descriptor&&(e=this.descriptor.mipLevelCount)!==null&&e!==void 0?e:1}get dimension(){var e;return this.descriptor&&(e=this.descriptor.dimension)!==null&&e!==void 0?e:"2d"}getMipLevelSize(e){if(e>=this.mipLevelCount)return[0,0,0];let r=[this.width,this.height,this.depthOrArrayLayers];for(let n=0;n<r.length;++n)r[n]=Math.max(1,r[n]>>e);return r}get texelByteSize(){let e=this.format,r=Si[e];return r?r.isDepthStencil?4:r.bytesPerBlock:0}get bytesPerRow(){return this.width*this.texelByteSize}get isDepthStencil(){let e=this.format,r=Si[e];return!!r&&r.isDepthStencil}getGpuSize(){let e=this.format,r=Si[e],n=this.width;if(!e||n<=0||!r)return-1;let s=this.height,o=this.depthOrArrayLayers,a=this.dimension;return n/r.blockWidth*(a==="1d"?1:s/r.blockHeight)*r.bytesPerBlock*o}getPixel(e,r,n=0,s=0){let o=this.texelByteSize,a=this.bytesPerRow,i=this.height,u=this.data[s];return Om(new Uint8Array(u),e,r,n,s,i,a,o,this.format)}setPixel(e,r,n,s,o){let a=this.texelByteSize,i=this.bytesPerRow,u=this.height,l=this.data[s];(function(c,f,m,p,w,A,v,C,k,T){let S=p*(v>>=w)*(A>>=w)+m*v+f*C;switch(k){case"r8unorm":return void ee(c,S,"8unorm",1,T);case"r8snorm":return void ee(c,S,"8snorm",1,T);case"r8uint":return void ee(c,S,"8uint",1,T);case"r8sint":return void ee(c,S,"8sint",1,T);case"rg8unorm":return void ee(c,S,"8unorm",2,T);case"rg8snorm":return void ee(c,S,"8snorm",2,T);case"rg8uint":return void ee(c,S,"8uint",2,T);case"rg8sint":return void ee(c,S,"8sint",2,T);case"rgba8unorm-srgb":case"rgba8unorm":case"bgra8unorm-srgb":case"bgra8unorm":return void ee(c,S,"8unorm",4,T);case"rgba8snorm":return void ee(c,S,"8snorm",4,T);case"rgba8uint":return void ee(c,S,"8uint",4,T);case"rgba8sint":return void ee(c,S,"8sint",4,T);case"r16uint":return void ee(c,S,"16uint",1,T);case"r16sint":return void ee(c,S,"16sint",1,T);case"r16float":return void ee(c,S,"16float",1,T);case"rg16uint":return void ee(c,S,"16uint",2,T);case"rg16sint":return void ee(c,S,"16sint",2,T);case"rg16float":return void ee(c,S,"16float",2,T);case"rgba16uint":return void ee(c,S,"16uint",4,T);case"rgba16sint":return void ee(c,S,"16sint",4,T);case"rgba16float":return void ee(c,S,"16float",4,T);case"r32uint":return void ee(c,S,"32uint",1,T);case"r32sint":return void ee(c,S,"32sint",1,T);case"depth16unorm":case"depth24plus":case"depth24plus-stencil8":case"depth32float":case"depth32float-stencil8":case"r32float":return void ee(c,S,"32float",1,T);case"rg32uint":return void ee(c,S,"32uint",2,T);case"rg32sint":return void ee(c,S,"32sint",2,T);case"rg32float":return void ee(c,S,"32float",2,T);case"rgba32uint":return void ee(c,S,"32uint",4,T);case"rgba32sint":return void ee(c,S,"32sint",4,T);case"rgba32float":return void ee(c,S,"32float",4,T);case"rg11b10ufloat":console.error("TODO: rg11b10ufloat not supported for writing")}})(new Uint8Array(l),e,r,n,s,u,i,a,this.format,o)}};(t=>{t[t.token=0]="token",t[t.keyword=1]="keyword",t[t.reserved=2]="reserved"})(x||(x={}));var g=class{constructor(e,r,n){this.name=e,this.type=r,this.rule=n}toString(){return this.name}},h=class{};b=h,h.none=new g("",x.reserved,""),h.eof=new g("EOF",x.token,""),h.reserved={asm:new g("asm",x.reserved,"asm"),bf16:new g("bf16",x.reserved,"bf16"),do:new g("do",x.reserved,"do"),enum:new g("enum",x.reserved,"enum"),f16:new g("f16",x.reserved,"f16"),f64:new g("f64",x.reserved,"f64"),handle:new g("handle",x.reserved,"handle"),i8:new g("i8",x.reserved,"i8"),i16:new g("i16",x.reserved,"i16"),i64:new g("i64",x.reserved,"i64"),mat:new g("mat",x.reserved,"mat"),premerge:new g("premerge",x.reserved,"premerge"),regardless:new g("regardless",x.reserved,"regardless"),typedef:new g("typedef",x.reserved,"typedef"),u8:new g("u8",x.reserved,"u8"),u16:new g("u16",x.reserved,"u16"),u64:new g("u64",x.reserved,"u64"),unless:new g("unless",x.reserved,"unless"),using:new g("using",x.reserved,"using"),vec:new g("vec",x.reserved,"vec"),void:new g("void",x.reserved,"void")},h.keywords={array:new g("array",x.keyword,"array"),atomic:new g("atomic",x.keyword,"atomic"),bool:new g("bool",x.keyword,"bool"),f32:new g("f32",x.keyword,"f32"),i32:new g("i32",x.keyword,"i32"),mat2x2:new g("mat2x2",x.keyword,"mat2x2"),mat2x3:new g("mat2x3",x.keyword,"mat2x3"),mat2x4:new g("mat2x4",x.keyword,"mat2x4"),mat3x2:new g("mat3x2",x.keyword,"mat3x2"),mat3x3:new g("mat3x3",x.keyword,"mat3x3"),mat3x4:new g("mat3x4",x.keyword,"mat3x4"),mat4x2:new g("mat4x2",x.keyword,"mat4x2"),mat4x3:new g("mat4x3",x.keyword,"mat4x3"),mat4x4:new g("mat4x4",x.keyword,"mat4x4"),ptr:new g("ptr",x.keyword,"ptr"),sampler:new g("sampler",x.keyword,"sampler"),sampler_comparison:new g("sampler_comparison",x.keyword,"sampler_comparison"),struct:new g("struct",x.keyword,"struct"),texture_1d:new g("texture_1d",x.keyword,"texture_1d"),texture_2d:new g("texture_2d",x.keyword,"texture_2d"),texture_2d_array:new g("texture_2d_array",x.keyword,"texture_2d_array"),texture_3d:new g("texture_3d",x.keyword,"texture_3d"),texture_cube:new g("texture_cube",x.keyword,"texture_cube"),texture_cube_array:new g("texture_cube_array",x.keyword,"texture_cube_array"),texture_multisampled_2d:new g("texture_multisampled_2d",x.keyword,"texture_multisampled_2d"),texture_storage_1d:new g("texture_storage_1d",x.keyword,"texture_storage_1d"),texture_storage_2d:new g("texture_storage_2d",x.keyword,"texture_storage_2d"),texture_storage_2d_array:new g("texture_storage_2d_array",x.keyword,"texture_storage_2d_array"),texture_storage_3d:new g("texture_storage_3d",x.keyword,"texture_storage_3d"),texture_depth_2d:new g("texture_depth_2d",x.keyword,"texture_depth_2d"),texture_depth_2d_array:new g("texture_depth_2d_array",x.keyword,"texture_depth_2d_array"),texture_depth_cube:new g("texture_depth_cube",x.keyword,"texture_depth_cube"),texture_depth_cube_array:new g("texture_depth_cube_array",x.keyword,"texture_depth_cube_array"),texture_depth_multisampled_2d:new g("texture_depth_multisampled_2d",x.keyword,"texture_depth_multisampled_2d"),texture_external:new g("texture_external",x.keyword,"texture_external"),u32:new g("u32",x.keyword,"u32"),vec2:new g("vec2",x.keyword,"vec2"),vec3:new g("vec3",x.keyword,"vec3"),vec4:new g("vec4",x.keyword,"vec4"),bitcast:new g("bitcast",x.keyword,"bitcast"),block:new g("block",x.keyword,"block"),break:new g("break",x.keyword,"break"),case:new g("case",x.keyword,"case"),continue:new g("continue",x.keyword,"continue"),continuing:new g("continuing",x.keyword,"continuing"),default:new g("default",x.keyword,"default"),diagnostic:new g("diagnostic",x.keyword,"diagnostic"),discard:new g("discard",x.keyword,"discard"),else:new g("else",x.keyword,"else"),enable:new g("enable",x.keyword,"enable"),fallthrough:new g("fallthrough",x.keyword,"fallthrough"),false:new g("false",x.keyword,"false"),fn:new g("fn",x.keyword,"fn"),for:new g("for",x.keyword,"for"),function:new g("function",x.keyword,"function"),if:new g("if",x.keyword,"if"),let:new g("let",x.keyword,"let"),const:new g("const",x.keyword,"const"),loop:new g("loop",x.keyword,"loop"),while:new g("while",x.keyword,"while"),private:new g("private",x.keyword,"private"),read:new g("read",x.keyword,"read"),read_write:new g("read_write",x.keyword,"read_write"),return:new g("return",x.keyword,"return"),requires:new g("requires",x.keyword,"requires"),storage:new g("storage",x.keyword,"storage"),switch:new g("switch",x.keyword,"switch"),true:new g("true",x.keyword,"true"),alias:new g("alias",x.keyword,"alias"),type:new g("type",x.keyword,"type"),uniform:new g("uniform",x.keyword,"uniform"),var:new g("var",x.keyword,"var"),override:new g("override",x.keyword,"override"),workgroup:new g("workgroup",x.keyword,"workgroup"),write:new g("write",x.keyword,"write"),r8unorm:new g("r8unorm",x.keyword,"r8unorm"),r8snorm:new g("r8snorm",x.keyword,"r8snorm"),r8uint:new g("r8uint",x.keyword,"r8uint"),r8sint:new g("r8sint",x.keyword,"r8sint"),r16uint:new g("r16uint",x.keyword,"r16uint"),r16sint:new g("r16sint",x.keyword,"r16sint"),r16float:new g("r16float",x.keyword,"r16float"),rg8unorm:new g("rg8unorm",x.keyword,"rg8unorm"),rg8snorm:new g("rg8snorm",x.keyword,"rg8snorm"),rg8uint:new g("rg8uint",x.keyword,"rg8uint"),rg8sint:new g("rg8sint",x.keyword,"rg8sint"),r32uint:new g("r32uint",x.keyword,"r32uint"),r32sint:new g("r32sint",x.keyword,"r32sint"),r32float:new g("r32float",x.keyword,"r32float"),rg16uint:new g("rg16uint",x.keyword,"rg16uint"),rg16sint:new g("rg16sint",x.keyword,"rg16sint"),rg16float:new g("rg16float",x.keyword,"rg16float"),rgba8unorm:new g("rgba8unorm",x.keyword,"rgba8unorm"),rgba8unorm_srgb:new g("rgba8unorm_srgb",x.keyword,"rgba8unorm_srgb"),rgba8snorm:new g("rgba8snorm",x.keyword,"rgba8snorm"),rgba8uint:new g("rgba8uint",x.keyword,"rgba8uint"),rgba8sint:new g("rgba8sint",x.keyword,"rgba8sint"),bgra8unorm:new g("bgra8unorm",x.keyword,"bgra8unorm"),bgra8unorm_srgb:new g("bgra8unorm_srgb",x.keyword,"bgra8unorm_srgb"),rgb10a2unorm:new g("rgb10a2unorm",x.keyword,"rgb10a2unorm"),rg11b10float:new g("rg11b10float",x.keyword,"rg11b10float"),rg32uint:new g("rg32uint",x.keyword,"rg32uint"),rg32sint:new g("rg32sint",x.keyword,"rg32sint"),rg32float:new g("rg32float",x.keyword,"rg32float"),rgba16uint:new g("rgba16uint",x.keyword,"rgba16uint"),rgba16sint:new g("rgba16sint",x.keyword,"rgba16sint"),rgba16float:new g("rgba16float",x.keyword,"rgba16float"),rgba32uint:new g("rgba32uint",x.keyword,"rgba32uint"),rgba32sint:new g("rgba32sint",x.keyword,"rgba32sint"),rgba32float:new g("rgba32float",x.keyword,"rgba32float"),static_assert:new g("static_assert",x.keyword,"static_assert")},h.tokens={decimal_float_literal:new g("decimal_float_literal",x.token,/((-?[0-9]*\.[0-9]+|-?[0-9]+\.[0-9]*)((e|E)(\+|-)?[0-9]+)?[fh]?)|(-?[0-9]+(e|E)(\+|-)?[0-9]+[fh]?)|(-?[0-9]+[fh])/),hex_float_literal:new g("hex_float_literal",x.token,/-?0x((([0-9a-fA-F]*\.[0-9a-fA-F]+|[0-9a-fA-F]+\.[0-9a-fA-F]*)((p|P)(\+|-)?[0-9]+[fh]?)?)|([0-9a-fA-F]+(p|P)(\+|-)?[0-9]+[fh]?))/),int_literal:new g("int_literal",x.token,/-?0x[0-9a-fA-F]+|0i?|-?[1-9][0-9]*i?/),uint_literal:new g("uint_literal",x.token,/0x[0-9a-fA-F]+u|0u|[1-9][0-9]*u/),name:new g("name",x.token,/([_\p{XID_Start}][\p{XID_Continue}]+)|([\p{XID_Start}])/u),ident:new g("ident",x.token,/[_a-zA-Z][0-9a-zA-Z_]*/),and:new g("and",x.token,"&"),and_and:new g("and_and",x.token,"&&"),arrow:new g("arrow ",x.token,"->"),attr:new g("attr",x.token,"@"),forward_slash:new g("forward_slash",x.token,"/"),bang:new g("bang",x.token,"!"),bracket_left:new g("bracket_left",x.token,"["),bracket_right:new g("bracket_right",x.token,"]"),brace_left:new g("brace_left",x.token,"{"),brace_right:new g("brace_right",x.token,"}"),colon:new g("colon",x.token,":"),comma:new g("comma",x.token,","),equal:new g("equal",x.token,"="),equal_equal:new g("equal_equal",x.token,"=="),not_equal:new g("not_equal",x.token,"!="),greater_than:new g("greater_than",x.token,">"),greater_than_equal:new g("greater_than_equal",x.token,">="),shift_right:new g("shift_right",x.token,">>"),less_than:new g("less_than",x.token,"<"),less_than_equal:new g("less_than_equal",x.token,"<="),shift_left:new g("shift_left",x.token,"<<"),modulo:new g("modulo",x.token,"%"),minus:new g("minus",x.token,"-"),minus_minus:new g("minus_minus",x.token,"--"),period:new g("period",x.token,"."),plus:new g("plus",x.token,"+"),plus_plus:new g("plus_plus",x.token,"++"),or:new g("or",x.token,"|"),or_or:new g("or_or",x.token,"||"),paren_left:new g("paren_left",x.token,"("),paren_right:new g("paren_right",x.token,")"),semicolon:new g("semicolon",x.token,";"),star:new g("star",x.token,"*"),tilde:new g("tilde",x.token,"~"),underscore:new g("underscore",x.token,"_"),xor:new g("xor",x.token,"^"),plus_equal:new g("plus_equal",x.token,"+="),minus_equal:new g("minus_equal",x.token,"-="),times_equal:new g("times_equal",x.token,"*="),division_equal:new g("division_equal",x.token,"/="),modulo_equal:new g("modulo_equal",x.token,"%="),and_equal:new g("and_equal",x.token,"&="),or_equal:new g("or_equal",x.token,"|="),xor_equal:new g("xor_equal",x.token,"^="),shift_right_equal:new g("shift_right_equal",x.token,">>="),shift_left_equal:new g("shift_left_equal",x.token,"<<=")},h.simpleTokens={"@":b.tokens.attr,"{":b.tokens.brace_left,"}":b.tokens.brace_right,":":b.tokens.colon,",":b.tokens.comma,"(":b.tokens.paren_left,")":b.tokens.paren_right,";":b.tokens.semicolon},h.literalTokens={"&":b.tokens.and,"&&":b.tokens.and_and,"->":b.tokens.arrow,"/":b.tokens.forward_slash,"!":b.tokens.bang,"[":b.tokens.bracket_left,"]":b.tokens.bracket_right,"=":b.tokens.equal,"==":b.tokens.equal_equal,"!=":b.tokens.not_equal,">":b.tokens.greater_than,">=":b.tokens.greater_than_equal,">>":b.tokens.shift_right,"<":b.tokens.less_than,"<=":b.tokens.less_than_equal,"<<":b.tokens.shift_left,"%":b.tokens.modulo,"-":b.tokens.minus,"--":b.tokens.minus_minus,".":b.tokens.period,"+":b.tokens.plus,"++":b.tokens.plus_plus,"|":b.tokens.or,"||":b.tokens.or_or,"*":b.tokens.star,"~":b.tokens.tilde,_:b.tokens.underscore,"^":b.tokens.xor,"+=":b.tokens.plus_equal,"-=":b.tokens.minus_equal,"*=":b.tokens.times_equal,"/=":b.tokens.division_equal,"%=":b.tokens.modulo_equal,"&=":b.tokens.and_equal,"|=":b.tokens.or_equal,"^=":b.tokens.xor_equal,">>=":b.tokens.shift_right_equal,"<<=":b.tokens.shift_left_equal},h.regexTokens={decimal_float_literal:b.tokens.decimal_float_literal,hex_float_literal:b.tokens.hex_float_literal,int_literal:b.tokens.int_literal,uint_literal:b.tokens.uint_literal,ident:b.tokens.ident},h.storage_class=[b.keywords.function,b.keywords.private,b.keywords.workgroup,b.keywords.uniform,b.keywords.storage],h.access_mode=[b.keywords.read,b.keywords.write,b.keywords.read_write],h.sampler_type=[b.keywords.sampler,b.keywords.sampler_comparison],h.sampled_texture_type=[b.keywords.texture_1d,b.keywords.texture_2d,b.keywords.texture_2d_array,b.keywords.texture_3d,b.keywords.texture_cube,b.keywords.texture_cube_array],h.multisampled_texture_type=[b.keywords.texture_multisampled_2d],h.storage_texture_type=[b.keywords.texture_storage_1d,b.keywords.texture_storage_2d,b.keywords.texture_storage_2d_array,b.keywords.texture_storage_3d],h.depth_texture_type=[b.keywords.texture_depth_2d,b.keywords.texture_depth_2d_array,b.keywords.texture_depth_cube,b.keywords.texture_depth_cube_array,b.keywords.texture_depth_multisampled_2d],h.texture_external_type=[b.keywords.texture_external],h.any_texture_type=[...b.sampled_texture_type,...b.multisampled_texture_type,...b.storage_texture_type,...b.depth_texture_type,...b.texture_external_type],h.texel_format=[b.keywords.r8unorm,b.keywords.r8snorm,b.keywords.r8uint,b.keywords.r8sint,b.keywords.r16uint,b.keywords.r16sint,b.keywords.r16float,b.keywords.rg8unorm,b.keywords.rg8snorm,b.keywords.rg8uint,b.keywords.rg8sint,b.keywords.r32uint,b.keywords.r32sint,b.keywords.r32float,b.keywords.rg16uint,b.keywords.rg16sint,b.keywords.rg16float,b.keywords.rgba8unorm,b.keywords.rgba8unorm_srgb,b.keywords.rgba8snorm,b.keywords.rgba8uint,b.keywords.rgba8sint,b.keywords.bgra8unorm,b.keywords.bgra8unorm_srgb,b.keywords.rgb10a2unorm,b.keywords.rg11b10float,b.keywords.rg32uint,b.keywords.rg32sint,b.keywords.rg32float,b.keywords.rgba16uint,b.keywords.rgba16sint,b.keywords.rgba16float,b.keywords.rgba32uint,b.keywords.rgba32sint,b.keywords.rgba32float],h.const_literal=[b.tokens.int_literal,b.tokens.uint_literal,b.tokens.decimal_float_literal,b.tokens.hex_float_literal,b.keywords.true,b.keywords.false],h.literal_or_ident=[b.tokens.ident,b.tokens.int_literal,b.tokens.uint_literal,b.tokens.decimal_float_literal,b.tokens.hex_float_literal,b.tokens.name],h.element_count_expression=[b.tokens.int_literal,b.tokens.uint_literal,b.tokens.ident],h.template_types=[b.keywords.vec2,b.keywords.vec3,b.keywords.vec4,b.keywords.mat2x2,b.keywords.mat2x3,b.keywords.mat2x4,b.keywords.mat3x2,b.keywords.mat3x3,b.keywords.mat3x4,b.keywords.mat4x2,b.keywords.mat4x3,b.keywords.mat4x4,b.keywords.atomic,b.keywords.bitcast,...b.any_texture_type],h.attribute_name=[b.tokens.ident,b.keywords.block,b.keywords.diagnostic],h.assignment_operators=[b.tokens.equal,b.tokens.plus_equal,b.tokens.minus_equal,b.tokens.times_equal,b.tokens.division_equal,b.tokens.modulo_equal,b.tokens.and_equal,b.tokens.or_equal,b.tokens.xor_equal,b.tokens.shift_right_equal,b.tokens.shift_left_equal],h.increment_operators=[b.tokens.plus_plus,b.tokens.minus_minus];var Co=class{constructor(e,r,n,s,o){this.type=e,this.lexeme=r,this.line=n,this.start=s,this.end=o}toString(){return this.lexeme}isTemplateType(){return h.template_types.indexOf(this.type)!=-1}isArrayType(){return this.type==h.keywords.array}isArrayOrTemplateType(){return this.isArrayType()||this.isTemplateType()}},Xi=class{constructor(e){this._tokens=[],this._start=0,this._current=0,this._line=1,this._source=e??""}scanTokens(){for(;!this._isAtEnd();)if(this._start=this._current,!this.scanToken())throw`Invalid syntax at line ${this._line}`;return this._tokens.push(new Co(h.eof,"",this._line,this._current,this._current)),this._tokens}scanToken(){let e=this._advance();if(e==`
41
+ `}C(){let t=this.g;t.activeTexture(t.TEXTURE1),this.j=vr(this,t),t.activeTexture(t.TEXTURE2),this.B=vr(this,t)}m(){super.m();let t=this.g;this.K=Ke(t.getUniformLocation(this.h,"defaultTexture"),"Uniform location"),this.L=Ke(t.getUniformLocation(this.h,"overlayTexture"),"Uniform location"),this.I=Ke(t.getUniformLocation(this.h,"maskTexture"),"Uniform location")}l(){super.l();let t=this.g;t.uniform1i(this.I,0),t.uniform1i(this.K,1),t.uniform1i(this.L,2)}close(){this.j&&this.g.deleteTexture(this.j),this.B&&this.g.deleteTexture(this.B),super.close()}};function tr(t,e){switch(e){case 0:return t.g.find(r=>r instanceof Uint8Array);case 1:return t.g.find(r=>r instanceof Float32Array);case 2:return t.g.find(r=>typeof WebGLTexture<"u"&&r instanceof WebGLTexture);default:throw Error(`Type is not supported: ${e}`)}}function _a(t){var e=tr(t,1);if(!e){if(e=tr(t,0))e=new Float32Array(e).map(n=>n/255);else{e=new Float32Array(t.width*t.height);let n=en(t);var r=bi(t);if(eo(r,n,kf(t)),"iPad Simulator;iPhone Simulator;iPod Simulator;iPad;iPhone;iPod".split(";").includes(navigator.platform)||navigator.userAgent.includes("Mac")&&"document"in self&&"ontouchend"in self.document){r=new Float32Array(t.width*t.height*4),n.readPixels(0,0,t.width,t.height,n.RGBA,n.FLOAT,r);for(let s=0,o=0;s<e.length;++s,o+=4)e[s]=r[o]}else n.readPixels(0,0,t.width,t.height,n.RED,n.FLOAT,e)}t.g.push(e)}return e}function kf(t){let e=tr(t,2);if(!e){let r=en(t);e=Af(t);let n=_a(t),s=Ef(t);r.texImage2D(r.TEXTURE_2D,0,s,t.width,t.height,0,r.RED,r.FLOAT,n),ba(t)}return e}function en(t){if(!t.canvas)throw Error("Conversion to different image formats require that a canvas is passed when initializing the image.");return t.h||(t.h=Ke(t.canvas.getContext("webgl2"),"You cannot use a canvas that is already bound to a different type of rendering context.")),t.h}function Ef(t){if(t=en(t),!hs)if(t.getExtension("EXT_color_buffer_float")&&t.getExtension("OES_texture_float_linear")&&t.getExtension("EXT_float_blend"))hs=t.R32F;else{if(!t.getExtension("EXT_color_buffer_half_float"))throw Error("GPU does not fully support 4-channel float32 or float16 formats");hs=t.R16F}return hs}function bi(t){return t.l||(t.l=new dn),t.l}function Af(t){let e=en(t);e.viewport(0,0,t.width,t.height),e.activeTexture(e.TEXTURE0);let r=tr(t,2);return r||(r=vr(bi(t),e,t.m?e.LINEAR:e.NEAREST),t.g.push(r),t.j=!0),e.bindTexture(e.TEXTURE_2D,r),r}function ba(t){t.h.bindTexture(t.h.TEXTURE_2D,null)}var hs,Oe=class{constructor(t,e,r,n,s,o,a){this.g=t,this.m=e,this.j=r,this.canvas=n,this.l=s,this.width=o,this.height=a,this.j&&--xc===0&&console.error("You seem to be creating MPMask instances without invoking .close(). This leaks resources.")}Ga(){return!!tr(this,0)}ka(){return!!tr(this,1)}R(){return!!tr(this,2)}ja(){return(e=tr(t=this,0))||(e=_a(t),e=new Uint8Array(e.map(r=>255*r)),t.g.push(e)),e;var t,e}ia(){return _a(this)}N(){return kf(this)}clone(){let t=[];for(let e of this.g){let r;if(e instanceof Uint8Array)r=new Uint8Array(e);else if(e instanceof Float32Array)r=new Float32Array(e);else{if(!(e instanceof WebGLTexture))throw Error(`Type is not supported: ${e}`);{let n=en(this),s=bi(this);n.activeTexture(n.TEXTURE1),r=vr(s,n,this.m?n.LINEAR:n.NEAREST),n.bindTexture(n.TEXTURE_2D,r);let o=Ef(this);n.texImage2D(n.TEXTURE_2D,0,o,this.width,this.height,0,n.RED,n.FLOAT,null),n.bindTexture(n.TEXTURE_2D,null),eo(s,n,r),Yn(s,n,!1,()=>{Af(this),n.clearColor(0,0,0,0),n.clear(n.COLOR_BUFFER_BIT),n.drawArrays(n.TRIANGLE_FAN,0,4),ba(this)}),_i(s),ba(this)}}t.push(r)}return new Oe(t,this.m,this.R(),this.canvas,this.l,this.width,this.height)}close(){this.j&&en(this).deleteTexture(tr(this,2)),xc=-1}};Oe.prototype.close=Oe.prototype.close,Oe.prototype.clone=Oe.prototype.clone,Oe.prototype.getAsWebGLTexture=Oe.prototype.N,Oe.prototype.getAsFloat32Array=Oe.prototype.ia,Oe.prototype.getAsUint8Array=Oe.prototype.ja,Oe.prototype.hasWebGLTexture=Oe.prototype.R,Oe.prototype.hasFloat32Array=Oe.prototype.ka,Oe.prototype.hasUint8Array=Oe.prototype.Ga;var xc=250,fm={color:"white",lineWidth:4,radius:6};function ra(t){return{...fm,fillColor:(t=t||{}).color,...t}}function Qt(t,e){return t instanceof Function?t(e):t}function yc(t,e,r){return Math.max(Math.min(e,r),Math.min(Math.max(e,r),t))}function Cn(t){if(!t.l)throw Error("CPU rendering requested but CanvasRenderingContext2D not provided.");return t.l}function Wn(t){if(!t.j)throw Error("GPU rendering requested but WebGL2RenderingContext not provided.");return t.j}function _c(t,e,r){if(e.R())r(e.N());else{let n=e.ka()?e.ia():e.ja();t.m=t.m??new dn;let s=Wn(t);r((t=new Oe([n],e.m,!1,s.canvas,t.m,e.width,e.height)).N()),t.close()}}function bc(t,e,r,n){let s=function(i){return i.g||(i.g=new cm),i.g}(t),o=Wn(t),a=Array.isArray(r)?new ImageData(new Uint8ClampedArray(r),1,1):r;Yn(s,o,!0,()=>{(function(u,l,c,f){let d=u.g;if(d.activeTexture(d.TEXTURE0),d.bindTexture(d.TEXTURE_2D,l),d.activeTexture(d.TEXTURE1),d.bindTexture(d.TEXTURE_2D,u.B),d.texImage2D(d.TEXTURE_2D,0,d.RGBA,d.RGBA,d.UNSIGNED_BYTE,c),u.I&&function(p,v){if(p!==v)return!1;p=p.entries(),v=v.entries();for(let[w,S]of p){p=w;let k=S;var A=v.next();if(A.done)return!1;let[E,I]=A.value;if(A=I,p!==E||k[0]!==A[0]||k[1]!==A[1]||k[2]!==A[2]||k[3]!==A[3])return!1}return!!v.next().done}(u.I,f))d.activeTexture(d.TEXTURE2),d.bindTexture(d.TEXTURE_2D,u.j);else{u.I=f;let p=Array(1024).fill(0);f.forEach((v,A)=>{if(v.length!==4)throw Error(`Color at index ${A} is not a four-channel value.`);p[4*A]=v[0],p[4*A+1]=v[1],p[4*A+2]=v[2],p[4*A+3]=v[3]}),d.activeTexture(d.TEXTURE2),d.bindTexture(d.TEXTURE_2D,u.j),d.texImage2D(d.TEXTURE_2D,0,d.RGBA,256,1,0,d.RGBA,d.UNSIGNED_BYTE,new Uint8Array(p))}})(s,e,a,n),o.clearColor(0,0,0,0),o.clear(o.COLOR_BUFFER_BIT),o.drawArrays(o.TRIANGLE_FAN,0,4);let i=s.g;i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,null),i.activeTexture(i.TEXTURE1),i.bindTexture(i.TEXTURE_2D,null),i.activeTexture(i.TEXTURE2),i.bindTexture(i.TEXTURE_2D,null)})}function vc(t,e,r,n){let s=Wn(t),o=function(u){return u.h||(u.h=new lm),u.h}(t),a=Array.isArray(r)?new ImageData(new Uint8ClampedArray(r),1,1):r,i=Array.isArray(n)?new ImageData(new Uint8ClampedArray(n),1,1):n;Yn(o,s,!0,()=>{var u=o.g;u.activeTexture(u.TEXTURE0),u.bindTexture(u.TEXTURE_2D,e),u.activeTexture(u.TEXTURE1),u.bindTexture(u.TEXTURE_2D,o.j),u.texImage2D(u.TEXTURE_2D,0,u.RGBA,u.RGBA,u.UNSIGNED_BYTE,a),u.activeTexture(u.TEXTURE2),u.bindTexture(u.TEXTURE_2D,o.B),u.texImage2D(u.TEXTURE_2D,0,u.RGBA,u.RGBA,u.UNSIGNED_BYTE,i),s.clearColor(0,0,0,0),s.clear(s.COLOR_BUFFER_BIT),s.drawArrays(s.TRIANGLE_FAN,0,4),s.bindTexture(s.TEXTURE_2D,null),(u=o.g).activeTexture(u.TEXTURE0),u.bindTexture(u.TEXTURE_2D,null),u.activeTexture(u.TEXTURE1),u.bindTexture(u.TEXTURE_2D,null),u.activeTexture(u.TEXTURE2),u.bindTexture(u.TEXTURE_2D,null)})}var qe=class{constructor(t,e){t instanceof CanvasRenderingContext2D||t instanceof OffscreenCanvasRenderingContext2D?(this.l=t,this.j=e):this.j=t}za(t,e){if(t){var r=Cn(this);e=ra(e),r.save();var n=r.canvas,s=0;for(let o of t)r.fillStyle=Qt(e.fillColor,{index:s,from:o}),r.strokeStyle=Qt(e.color,{index:s,from:o}),r.lineWidth=Qt(e.lineWidth,{index:s,from:o}),(t=new Path2D).arc(o.x*n.width,o.y*n.height,Qt(e.radius,{index:s,from:o}),0,2*Math.PI),r.fill(t),r.stroke(t),++s;r.restore()}}ya(t,e,r){if(t&&e){var n=Cn(this);r=ra(r),n.save();var s=n.canvas,o=0;for(let a of e){n.beginPath(),e=t[a.start];let i=t[a.end];e&&i&&(n.strokeStyle=Qt(r.color,{index:o,from:e,to:i}),n.lineWidth=Qt(r.lineWidth,{index:o,from:e,to:i}),n.moveTo(e.x*s.width,e.y*s.height),n.lineTo(i.x*s.width,i.y*s.height)),++o,n.stroke()}n.restore()}}va(t,e){let r=Cn(this);e=ra(e),r.save(),r.beginPath(),r.lineWidth=Qt(e.lineWidth,{}),r.strokeStyle=Qt(e.color,{}),r.fillStyle=Qt(e.fillColor,{}),r.moveTo(t.originX,t.originY),r.lineTo(t.originX+t.width,t.originY),r.lineTo(t.originX+t.width,t.originY+t.height),r.lineTo(t.originX,t.originY+t.height),r.lineTo(t.originX,t.originY),r.stroke(),r.fill(),r.restore()}wa(t,e,r=[0,0,0,255]){this.l?function(n,s,o,a){let i=Wn(n);_c(n,s,u=>{bc(n,u,o,a),(u=Cn(n)).drawImage(i.canvas,0,0,u.canvas.width,u.canvas.height)})}(this,t,r,e):bc(this,t.N(),r,e)}xa(t,e,r){this.l?function(n,s,o,a){let i=Wn(n);_c(n,s,u=>{vc(n,u,o,a),(u=Cn(n)).drawImage(i.canvas,0,0,u.canvas.width,u.canvas.height)})}(this,t,e,r):vc(this,t.N(),e,r)}close(){this.g?.close(),this.g=void 0,this.h?.close(),this.h=void 0,this.m?.close(),this.m=void 0}};function Xt(t,e){switch(e){case 0:return t.g.find(r=>r instanceof ImageData);case 1:return t.g.find(r=>typeof ImageBitmap<"u"&&r instanceof ImageBitmap);case 2:return t.g.find(r=>typeof WebGLTexture<"u"&&r instanceof WebGLTexture);default:throw Error(`Type is not supported: ${e}`)}}function Rf(t){var e=Xt(t,0);if(!e){e=tn(t);let r=to(t),n=new Uint8Array(t.width*t.height*4);eo(r,e,ys(t)),e.readPixels(0,0,t.width,t.height,e.RGBA,e.UNSIGNED_BYTE,n),_i(r),e=new ImageData(new Uint8ClampedArray(n.buffer),t.width,t.height),t.g.push(e)}return e}function ys(t){let e=Xt(t,2);if(!e){let r=tn(t);e=_s(t);let n=Xt(t,1)||Rf(t);r.texImage2D(r.TEXTURE_2D,0,r.RGBA,r.RGBA,r.UNSIGNED_BYTE,n),Un(t)}return e}function tn(t){if(!t.canvas)throw Error("Conversion to different image formats require that a canvas is passed when iniitializing the image.");return t.h||(t.h=Ke(t.canvas.getContext("webgl2"),"You cannot use a canvas that is already bound to a different type of rendering context.")),t.h}function to(t){return t.l||(t.l=new dn),t.l}function _s(t){let e=tn(t);e.viewport(0,0,t.width,t.height),e.activeTexture(e.TEXTURE0);let r=Xt(t,2);return r||(r=vr(to(t),e),t.g.push(r),t.m=!0),e.bindTexture(e.TEXTURE_2D,r),r}function Un(t){t.h.bindTexture(t.h.TEXTURE_2D,null)}function wc(t){let e=tn(t);return Yn(to(t),e,!0,()=>function(r,n){let s=r.canvas;if(s.width===r.width&&s.height===r.height)return n();let o=s.width,a=s.height;return s.width=r.width,s.height=r.height,r=n(),s.width=o,s.height=a,r}(t,()=>{if(e.bindFramebuffer(e.FRAMEBUFFER,null),e.clearColor(0,0,0,0),e.clear(e.COLOR_BUFFER_BIT),e.drawArrays(e.TRIANGLE_FAN,0,4),!(t.canvas instanceof OffscreenCanvas))throw Error("Conversion to ImageBitmap requires that the MediaPipe Tasks is initialized with an OffscreenCanvas");return t.canvas.transferToImageBitmap()}))}qe.prototype.close=qe.prototype.close,qe.prototype.drawConfidenceMask=qe.prototype.xa,qe.prototype.drawCategoryMask=qe.prototype.wa,qe.prototype.drawBoundingBox=qe.prototype.va,qe.prototype.drawConnectors=qe.prototype.ya,qe.prototype.drawLandmarks=qe.prototype.za,qe.lerp=function(t,e,r,n,s){return yc(n*(1-(t-e)/(r-e))+s*(1-(r-t)/(r-e)),n,s)},qe.clamp=yc,Gc("DrawingUtils",qe);var Ne=class{constructor(t,e,r,n,s,o,a){this.g=t,this.j=e,this.m=r,this.canvas=n,this.l=s,this.width=o,this.height=a,(this.j||this.m)&&--Tc===0&&console.error("You seem to be creating MPImage instances without invoking .close(). This leaks resources.")}Fa(){return!!Xt(this,0)}la(){return!!Xt(this,1)}R(){return!!Xt(this,2)}Da(){return Rf(this)}Ca(){var t=Xt(this,1);return t||(ys(this),_s(this),t=wc(this),Un(this),this.g.push(t),this.j=!0),t}N(){return ys(this)}clone(){let t=[];for(let e of this.g){let r;if(e instanceof ImageData)r=new ImageData(e.data,this.width,this.height);else if(e instanceof WebGLTexture){let n=tn(this),s=to(this);n.activeTexture(n.TEXTURE1),r=vr(s,n),n.bindTexture(n.TEXTURE_2D,r),n.texImage2D(n.TEXTURE_2D,0,n.RGBA,this.width,this.height,0,n.RGBA,n.UNSIGNED_BYTE,null),n.bindTexture(n.TEXTURE_2D,null),eo(s,n,r),Yn(s,n,!1,()=>{_s(this),n.clearColor(0,0,0,0),n.clear(n.COLOR_BUFFER_BIT),n.drawArrays(n.TRIANGLE_FAN,0,4),Un(this)}),_i(s),Un(this)}else{if(!(e instanceof ImageBitmap))throw Error(`Type is not supported: ${e}`);ys(this),_s(this),r=wc(this),Un(this)}t.push(r)}return new Ne(t,this.la(),this.R(),this.canvas,this.l,this.width,this.height)}close(){this.j&&Xt(this,1).close(),this.m&&tn(this).deleteTexture(Xt(this,2)),Tc=-1}};Ne.prototype.close=Ne.prototype.close,Ne.prototype.clone=Ne.prototype.clone,Ne.prototype.getAsWebGLTexture=Ne.prototype.N,Ne.prototype.getAsImageBitmap=Ne.prototype.Ca,Ne.prototype.getAsImageData=Ne.prototype.Da,Ne.prototype.hasWebGLTexture=Ne.prototype.R,Ne.prototype.hasImageBitmap=Ne.prototype.la,Ne.prototype.hasImageData=Ne.prototype.Fa;var Tc=250;function Mt(...t){return t.map(([e,r])=>({start:e,end:r}))}var hm=function(t){return class extends t{La(){this.i._registerModelResourcesGraphService()}}}((kc=class{constructor(t,e){this.l=!0,this.i=t,this.g=null,this.h=0,this.m=typeof this.i._addIntToInputStream=="function",e!==void 0?this.i.canvas=e:wf()?this.i.canvas=new OffscreenCanvas(1,1):(console.warn("OffscreenCanvas not supported and GraphRunner constructor glCanvas parameter is undefined. Creating backup canvas."),this.i.canvas=document.createElement("canvas"))}async initializeGraph(t){let e=await(await fetch(t)).arrayBuffer();t=!(t.endsWith(".pbtxt")||t.endsWith(".textproto")),this.setGraph(new Uint8Array(e),t)}setGraphFromString(t){this.setGraph(new TextEncoder().encode(t),!1)}setGraph(t,e){let r=t.length,n=this.i._malloc(r);this.i.HEAPU8.set(t,n),e?this.i._changeBinaryGraph(r,n):this.i._changeTextGraph(r,n),this.i._free(n)}configureAudio(t,e,r,n,s){this.i._configureAudio||console.warn('Attempting to use configureAudio without support for input audio. Is build dep ":gl_graph_runner_audio" missing?'),W(this,n||"input_audio",o=>{W(this,s=s||"audio_header",a=>{this.i._configureAudio(o,a,t,e??0,r)})})}setAutoResizeCanvas(t){this.l=t}setAutoRenderToScreen(t){this.i._setAutoRenderToScreen(t)}setGpuBufferVerticalFlip(t){this.i.gpuOriginForWebTexturesIsBottomLeft=t}ea(t){$t(this,"__graph_config__",e=>{t(e)}),W(this,"__graph_config__",e=>{this.i._getGraphConfig(e,void 0)}),delete this.i.simpleListeners.__graph_config__}attachErrorListener(t){this.i.errorListener=t}attachEmptyPacketListener(t,e){this.i.emptyPacketListeners=this.i.emptyPacketListeners||{},this.i.emptyPacketListeners[t]=e}addAudioToStream(t,e,r){this.addAudioToStreamWithShape(t,0,0,e,r)}addAudioToStreamWithShape(t,e,r,n,s){let o=4*t.length;this.h!==o&&(this.g&&this.i._free(this.g),this.g=this.i._malloc(o),this.h=o),this.i.HEAPF32.set(t,this.g/4),W(this,n,a=>{this.i._addAudioToInputStream(this.g,e,r,a,s)})}addGpuBufferToStream(t,e,r){W(this,e,n=>{let[s,o]=hc(this,t,n);this.i._addBoundTextureToStream(n,s,o,r)})}addBoolToStream(t,e,r){W(this,e,n=>{this.i._addBoolToInputStream(t,n,r)})}addDoubleToStream(t,e,r){W(this,e,n=>{this.i._addDoubleToInputStream(t,n,r)})}addFloatToStream(t,e,r){W(this,e,n=>{this.i._addFloatToInputStream(t,n,r)})}addIntToStream(t,e,r){W(this,e,n=>{this.i._addIntToInputStream(t,n,r)})}addUintToStream(t,e,r){W(this,e,n=>{this.i._addUintToInputStream(t,n,r)})}addStringToStream(t,e,r){W(this,e,n=>{W(this,t,s=>{this.i._addStringToInputStream(s,n,r)})})}addStringRecordToStream(t,e,r){W(this,e,n=>{dc(this,Object.keys(t),s=>{dc(this,Object.values(t),o=>{this.i._addFlatHashMapToInputStream(s,o,Object.keys(t).length,n,r)})})})}addProtoToStream(t,e,r,n){W(this,r,s=>{W(this,e,o=>{let a=this.i._malloc(t.length);this.i.HEAPU8.set(t,a),this.i._addProtoToInputStream(a,t.length,o,s,n),this.i._free(a)})})}addEmptyPacketToStream(t,e){W(this,t,r=>{this.i._addEmptyPacketToInputStream(r,e)})}addBoolVectorToStream(t,e,r){W(this,e,n=>{let s=this.i._allocateBoolVector(t.length);if(!s)throw Error("Unable to allocate new bool vector on heap.");for(let o of t)this.i._addBoolVectorEntry(s,o);this.i._addBoolVectorToInputStream(s,n,r)})}addDoubleVectorToStream(t,e,r){W(this,e,n=>{let s=this.i._allocateDoubleVector(t.length);if(!s)throw Error("Unable to allocate new double vector on heap.");for(let o of t)this.i._addDoubleVectorEntry(s,o);this.i._addDoubleVectorToInputStream(s,n,r)})}addFloatVectorToStream(t,e,r){W(this,e,n=>{let s=this.i._allocateFloatVector(t.length);if(!s)throw Error("Unable to allocate new float vector on heap.");for(let o of t)this.i._addFloatVectorEntry(s,o);this.i._addFloatVectorToInputStream(s,n,r)})}addIntVectorToStream(t,e,r){W(this,e,n=>{let s=this.i._allocateIntVector(t.length);if(!s)throw Error("Unable to allocate new int vector on heap.");for(let o of t)this.i._addIntVectorEntry(s,o);this.i._addIntVectorToInputStream(s,n,r)})}addUintVectorToStream(t,e,r){W(this,e,n=>{let s=this.i._allocateUintVector(t.length);if(!s)throw Error("Unable to allocate new unsigned int vector on heap.");for(let o of t)this.i._addUintVectorEntry(s,o);this.i._addUintVectorToInputStream(s,n,r)})}addStringVectorToStream(t,e,r){W(this,e,n=>{let s=this.i._allocateStringVector(t.length);if(!s)throw Error("Unable to allocate new string vector on heap.");for(let o of t)W(this,o,a=>{this.i._addStringVectorEntry(s,a)});this.i._addStringVectorToInputStream(s,n,r)})}addBoolToInputSidePacket(t,e){W(this,e,r=>{this.i._addBoolToInputSidePacket(t,r)})}addDoubleToInputSidePacket(t,e){W(this,e,r=>{this.i._addDoubleToInputSidePacket(t,r)})}addFloatToInputSidePacket(t,e){W(this,e,r=>{this.i._addFloatToInputSidePacket(t,r)})}addIntToInputSidePacket(t,e){W(this,e,r=>{this.i._addIntToInputSidePacket(t,r)})}addUintToInputSidePacket(t,e){W(this,e,r=>{this.i._addUintToInputSidePacket(t,r)})}addStringToInputSidePacket(t,e){W(this,e,r=>{W(this,t,n=>{this.i._addStringToInputSidePacket(n,r)})})}addProtoToInputSidePacket(t,e,r){W(this,r,n=>{W(this,e,s=>{let o=this.i._malloc(t.length);this.i.HEAPU8.set(t,o),this.i._addProtoToInputSidePacket(o,t.length,s,n),this.i._free(o)})})}addBoolVectorToInputSidePacket(t,e){W(this,e,r=>{let n=this.i._allocateBoolVector(t.length);if(!n)throw Error("Unable to allocate new bool vector on heap.");for(let s of t)this.i._addBoolVectorEntry(n,s);this.i._addBoolVectorToInputSidePacket(n,r)})}addDoubleVectorToInputSidePacket(t,e){W(this,e,r=>{let n=this.i._allocateDoubleVector(t.length);if(!n)throw Error("Unable to allocate new double vector on heap.");for(let s of t)this.i._addDoubleVectorEntry(n,s);this.i._addDoubleVectorToInputSidePacket(n,r)})}addFloatVectorToInputSidePacket(t,e){W(this,e,r=>{let n=this.i._allocateFloatVector(t.length);if(!n)throw Error("Unable to allocate new float vector on heap.");for(let s of t)this.i._addFloatVectorEntry(n,s);this.i._addFloatVectorToInputSidePacket(n,r)})}addIntVectorToInputSidePacket(t,e){W(this,e,r=>{let n=this.i._allocateIntVector(t.length);if(!n)throw Error("Unable to allocate new int vector on heap.");for(let s of t)this.i._addIntVectorEntry(n,s);this.i._addIntVectorToInputSidePacket(n,r)})}addUintVectorToInputSidePacket(t,e){W(this,e,r=>{let n=this.i._allocateUintVector(t.length);if(!n)throw Error("Unable to allocate new unsigned int vector on heap.");for(let s of t)this.i._addUintVectorEntry(n,s);this.i._addUintVectorToInputSidePacket(n,r)})}addStringVectorToInputSidePacket(t,e){W(this,e,r=>{let n=this.i._allocateStringVector(t.length);if(!n)throw Error("Unable to allocate new string vector on heap.");for(let s of t)W(this,s,o=>{this.i._addStringVectorEntry(n,o)});this.i._addStringVectorToInputSidePacket(n,r)})}attachBoolListener(t,e){$t(this,t,e),W(this,t,r=>{this.i._attachBoolListener(r)})}attachBoolVectorListener(t,e){lr(this,t,e),W(this,t,r=>{this.i._attachBoolVectorListener(r)})}attachIntListener(t,e){$t(this,t,e),W(this,t,r=>{this.i._attachIntListener(r)})}attachIntVectorListener(t,e){lr(this,t,e),W(this,t,r=>{this.i._attachIntVectorListener(r)})}attachUintListener(t,e){$t(this,t,e),W(this,t,r=>{this.i._attachUintListener(r)})}attachUintVectorListener(t,e){lr(this,t,e),W(this,t,r=>{this.i._attachUintVectorListener(r)})}attachDoubleListener(t,e){$t(this,t,e),W(this,t,r=>{this.i._attachDoubleListener(r)})}attachDoubleVectorListener(t,e){lr(this,t,e),W(this,t,r=>{this.i._attachDoubleVectorListener(r)})}attachFloatListener(t,e){$t(this,t,e),W(this,t,r=>{this.i._attachFloatListener(r)})}attachFloatVectorListener(t,e){lr(this,t,e),W(this,t,r=>{this.i._attachFloatVectorListener(r)})}attachStringListener(t,e){$t(this,t,e),W(this,t,r=>{this.i._attachStringListener(r)})}attachStringVectorListener(t,e){lr(this,t,e),W(this,t,r=>{this.i._attachStringVectorListener(r)})}attachProtoListener(t,e,r){$t(this,t,e),W(this,t,n=>{this.i._attachProtoListener(n,r||!1)})}attachProtoVectorListener(t,e,r){lr(this,t,e),W(this,t,n=>{this.i._attachProtoVectorListener(n,r||!1)})}attachAudioListener(t,e,r){this.i._attachAudioListener||console.warn('Attempting to use attachAudioListener without support for output audio. Is build dep ":gl_graph_runner_audio_out" missing?'),$t(this,t,(n,s)=>{n=new Float32Array(n.buffer,n.byteOffset,n.length/4),e(n,s)}),W(this,t,n=>{this.i._attachAudioListener(n,r||!1)})}finishProcessing(){this.i._waitUntilIdle()}closeGraph(){this.i._closeGraph(),this.i.simpleListeners=void 0,this.i.emptyPacketListeners=void 0}},class extends kc{get fa(){return this.i}ra(t,e,r){W(this,e,n=>{let[s,o]=hc(this,t,n);this.fa._addBoundTextureAsImageToStream(n,s,o,r)})}V(t,e){$t(this,t,e),W(this,t,r=>{this.fa._attachImageListener(r)})}da(t,e){lr(this,t,e),W(this,t,r=>{this.fa._attachImageVectorListener(r)})}})),kc,kt=class extends hm{};async function X(t,e,r){return async function(n,s,o,a){return um(n,s,o,a)}(t,r.canvas??(wf()?void 0:document.createElement("canvas")),e,r)}function If(t,e,r,n){if(t.U){let o=new Kl;if(r?.regionOfInterest){if(!t.qa)throw Error("This task doesn't support region-of-interest.");var s=r.regionOfInterest;if(s.left>=s.right||s.top>=s.bottom)throw Error("Expected RectF with left < right and top < bottom.");if(s.left<0||s.top<0||s.right>1||s.bottom>1)throw Error("Expected RectF values to be in [0,1].");G(o,1,(s.left+s.right)/2),G(o,2,(s.top+s.bottom)/2),G(o,4,s.right-s.left),G(o,3,s.bottom-s.top)}else G(o,1,.5),G(o,2,.5),G(o,4,1),G(o,3,1);if(r?.rotationDegrees){if(r?.rotationDegrees%90!=0)throw Error("Expected rotation to be a multiple of 90\xB0.");if(G(o,5,-Math.PI*r.rotationDegrees/180),r?.rotationDegrees%180!=0){let[a,i]=Tf(e);r=Se(o,3)*i/a,s=Se(o,4)*a/i,G(o,4,r),G(o,3,s)}}t.g.addProtoToStream(o.g(),"mediapipe.NormalizedRect",t.U,n)}t.g.ra(e,t.ba,n??performance.now()),t.finishProcessing()}function Et(t,e,r){if(t.baseOptions?.g())throw Error("Task is not initialized with image mode. 'runningMode' must be set to 'IMAGE'.");If(t,e,r,t.B+1)}function qt(t,e,r,n){if(!t.baseOptions?.g())throw Error("Task is not initialized with video mode. 'runningMode' must be set to 'VIDEO'.");If(t,e,r,n)}function rn(t,e,r,n){var s=e.data;let o=e.width,a=o*(e=e.height);if((s instanceof Uint8Array||s instanceof Float32Array)&&s.length!==a)throw Error("Unsupported channel count: "+s.length/a);return t=new Oe([s],r,!1,t.g.i.canvas,t.P,o,e),n?t.clone():t}var rt=class extends xs{constructor(t,e,r,n){super(t),this.g=t,this.ba=e,this.U=r,this.qa=n,this.P=new dn}l(t,e=!0){if("runningMode"in t&&Gn(this.baseOptions,2,!!t.runningMode&&t.runningMode!=="IMAGE"),t.canvas!==void 0&&this.g.i.canvas!==t.canvas)throw Error("You must create a new task to reset the canvas.");return super.l(t,e)}close(){this.P.close(),super.close()}};rt.prototype.close=rt.prototype.close;var yt=class extends rt{constructor(t,e){super(new kt(t,e),"image_in","norm_rect_in",!1),this.j={detections:[]},$(t=this.h=new Ks,0,1,e=new ye),G(this.h,2,.5),G(this.h,3,.3)}get baseOptions(){return Y(this.h,ye,1)}set baseOptions(t){$(this.h,0,1,t)}o(t){return"minDetectionConfidence"in t&&G(this.h,2,t.minDetectionConfidence??.5),"minSuppressionThreshold"in t&&G(this.h,3,t.minSuppressionThreshold??.3),this.l(t)}D(t,e){return this.j={detections:[]},Et(this,t,e),this.j}F(t,e,r){return this.j={detections:[]},qt(this,t,r,e),this.j}m(){var t=new nt;ge(t,"image_in"),ge(t,"norm_rect_in"),Z(t,"detections");let e=new lt;Pt(e,Yd,this.h);let r=new Ze;ht(r,"mediapipe.tasks.vision.face_detector.FaceDetectorGraph"),le(r,"IMAGE:image_in"),le(r,"NORM_RECT:norm_rect_in"),j(r,"DETECTIONS:detections"),r.o(e),dt(t,r),this.g.attachProtoVectorListener("detections",(n,s)=>{for(let o of n)n=jl(o),this.j.detections.push(bf(n));D(this,s)}),this.g.attachEmptyPacketListener("detections",n=>{D(this,n)}),t=t.g(),this.setGraph(new Uint8Array(t),!0)}};yt.prototype.detectForVideo=yt.prototype.F,yt.prototype.detect=yt.prototype.D,yt.prototype.setOptions=yt.prototype.o,yt.createFromModelPath=async function(t,e){return X(yt,t,{baseOptions:{modelAssetPath:e}})},yt.createFromModelBuffer=function(t,e){return X(yt,t,{baseOptions:{modelAssetBuffer:e}})},yt.createFromOptions=function(t,e){return X(yt,t,e)};var vi=Mt([61,146],[146,91],[91,181],[181,84],[84,17],[17,314],[314,405],[405,321],[321,375],[375,291],[61,185],[185,40],[40,39],[39,37],[37,0],[0,267],[267,269],[269,270],[270,409],[409,291],[78,95],[95,88],[88,178],[178,87],[87,14],[14,317],[317,402],[402,318],[318,324],[324,308],[78,191],[191,80],[80,81],[81,82],[82,13],[13,312],[312,311],[311,310],[310,415],[415,308]),wi=Mt([263,249],[249,390],[390,373],[373,374],[374,380],[380,381],[381,382],[382,362],[263,466],[466,388],[388,387],[387,386],[386,385],[385,384],[384,398],[398,362]),Ti=Mt([276,283],[283,282],[282,295],[295,285],[300,293],[293,334],[334,296],[296,336]),Sf=Mt([474,475],[475,476],[476,477],[477,474]),ki=Mt([33,7],[7,163],[163,144],[144,145],[145,153],[153,154],[154,155],[155,133],[33,246],[246,161],[161,160],[160,159],[159,158],[158,157],[157,173],[173,133]),Ei=Mt([46,53],[53,52],[52,65],[65,55],[70,63],[63,105],[105,66],[66,107]),Ff=Mt([469,470],[470,471],[471,472],[472,469]),Ai=Mt([10,338],[338,297],[297,332],[332,284],[284,251],[251,389],[389,356],[356,454],[454,323],[323,361],[361,288],[288,397],[397,365],[365,379],[379,378],[378,400],[400,377],[377,152],[152,148],[148,176],[176,149],[149,150],[150,136],[136,172],[172,58],[58,132],[132,93],[93,234],[234,127],[127,162],[162,21],[21,54],[54,103],[103,67],[67,109],[109,10]),Cf=[...vi,...wi,...Ti,...ki,...Ei,...Ai],Bf=Mt([127,34],[34,139],[139,127],[11,0],[0,37],[37,11],[232,231],[231,120],[120,232],[72,37],[37,39],[39,72],[128,121],[121,47],[47,128],[232,121],[121,128],[128,232],[104,69],[69,67],[67,104],[175,171],[171,148],[148,175],[118,50],[50,101],[101,118],[73,39],[39,40],[40,73],[9,151],[151,108],[108,9],[48,115],[115,131],[131,48],[194,204],[204,211],[211,194],[74,40],[40,185],[185,74],[80,42],[42,183],[183,80],[40,92],[92,186],[186,40],[230,229],[229,118],[118,230],[202,212],[212,214],[214,202],[83,18],[18,17],[17,83],[76,61],[61,146],[146,76],[160,29],[29,30],[30,160],[56,157],[157,173],[173,56],[106,204],[204,194],[194,106],[135,214],[214,192],[192,135],[203,165],[165,98],[98,203],[21,71],[71,68],[68,21],[51,45],[45,4],[4,51],[144,24],[24,23],[23,144],[77,146],[146,91],[91,77],[205,50],[50,187],[187,205],[201,200],[200,18],[18,201],[91,106],[106,182],[182,91],[90,91],[91,181],[181,90],[85,84],[84,17],[17,85],[206,203],[203,36],[36,206],[148,171],[171,140],[140,148],[92,40],[40,39],[39,92],[193,189],[189,244],[244,193],[159,158],[158,28],[28,159],[247,246],[246,161],[161,247],[236,3],[3,196],[196,236],[54,68],[68,104],[104,54],[193,168],[168,8],[8,193],[117,228],[228,31],[31,117],[189,193],[193,55],[55,189],[98,97],[97,99],[99,98],[126,47],[47,100],[100,126],[166,79],[79,218],[218,166],[155,154],[154,26],[26,155],[209,49],[49,131],[131,209],[135,136],[136,150],[150,135],[47,126],[126,217],[217,47],[223,52],[52,53],[53,223],[45,51],[51,134],[134,45],[211,170],[170,140],[140,211],[67,69],[69,108],[108,67],[43,106],[106,91],[91,43],[230,119],[119,120],[120,230],[226,130],[130,247],[247,226],[63,53],[53,52],[52,63],[238,20],[20,242],[242,238],[46,70],[70,156],[156,46],[78,62],[62,96],[96,78],[46,53],[53,63],[63,46],[143,34],[34,227],[227,143],[123,117],[117,111],[111,123],[44,125],[125,19],[19,44],[236,134],[134,51],[51,236],[216,206],[206,205],[205,216],[154,153],[153,22],[22,154],[39,37],[37,167],[167,39],[200,201],[201,208],[208,200],[36,142],[142,100],[100,36],[57,212],[212,202],[202,57],[20,60],[60,99],[99,20],[28,158],[158,157],[157,28],[35,226],[226,113],[113,35],[160,159],[159,27],[27,160],[204,202],[202,210],[210,204],[113,225],[225,46],[46,113],[43,202],[202,204],[204,43],[62,76],[76,77],[77,62],[137,123],[123,116],[116,137],[41,38],[38,72],[72,41],[203,129],[129,142],[142,203],[64,98],[98,240],[240,64],[49,102],[102,64],[64,49],[41,73],[73,74],[74,41],[212,216],[216,207],[207,212],[42,74],[74,184],[184,42],[169,170],[170,211],[211,169],[170,149],[149,176],[176,170],[105,66],[66,69],[69,105],[122,6],[6,168],[168,122],[123,147],[147,187],[187,123],[96,77],[77,90],[90,96],[65,55],[55,107],[107,65],[89,90],[90,180],[180,89],[101,100],[100,120],[120,101],[63,105],[105,104],[104,63],[93,137],[137,227],[227,93],[15,86],[86,85],[85,15],[129,102],[102,49],[49,129],[14,87],[87,86],[86,14],[55,8],[8,9],[9,55],[100,47],[47,121],[121,100],[145,23],[23,22],[22,145],[88,89],[89,179],[179,88],[6,122],[122,196],[196,6],[88,95],[95,96],[96,88],[138,172],[172,136],[136,138],[215,58],[58,172],[172,215],[115,48],[48,219],[219,115],[42,80],[80,81],[81,42],[195,3],[3,51],[51,195],[43,146],[146,61],[61,43],[171,175],[175,199],[199,171],[81,82],[82,38],[38,81],[53,46],[46,225],[225,53],[144,163],[163,110],[110,144],[52,65],[65,66],[66,52],[229,228],[228,117],[117,229],[34,127],[127,234],[234,34],[107,108],[108,69],[69,107],[109,108],[108,151],[151,109],[48,64],[64,235],[235,48],[62,78],[78,191],[191,62],[129,209],[209,126],[126,129],[111,35],[35,143],[143,111],[117,123],[123,50],[50,117],[222,65],[65,52],[52,222],[19,125],[125,141],[141,19],[221,55],[55,65],[65,221],[3,195],[195,197],[197,3],[25,7],[7,33],[33,25],[220,237],[237,44],[44,220],[70,71],[71,139],[139,70],[122,193],[193,245],[245,122],[247,130],[130,33],[33,247],[71,21],[21,162],[162,71],[170,169],[169,150],[150,170],[188,174],[174,196],[196,188],[216,186],[186,92],[92,216],[2,97],[97,167],[167,2],[141,125],[125,241],[241,141],[164,167],[167,37],[37,164],[72,38],[38,12],[12,72],[38,82],[82,13],[13,38],[63,68],[68,71],[71,63],[226,35],[35,111],[111,226],[101,50],[50,205],[205,101],[206,92],[92,165],[165,206],[209,198],[198,217],[217,209],[165,167],[167,97],[97,165],[220,115],[115,218],[218,220],[133,112],[112,243],[243,133],[239,238],[238,241],[241,239],[214,135],[135,169],[169,214],[190,173],[173,133],[133,190],[171,208],[208,32],[32,171],[125,44],[44,237],[237,125],[86,87],[87,178],[178,86],[85,86],[86,179],[179,85],[84,85],[85,180],[180,84],[83,84],[84,181],[181,83],[201,83],[83,182],[182,201],[137,93],[93,132],[132,137],[76,62],[62,183],[183,76],[61,76],[76,184],[184,61],[57,61],[61,185],[185,57],[212,57],[57,186],[186,212],[214,207],[207,187],[187,214],[34,143],[143,156],[156,34],[79,239],[239,237],[237,79],[123,137],[137,177],[177,123],[44,1],[1,4],[4,44],[201,194],[194,32],[32,201],[64,102],[102,129],[129,64],[213,215],[215,138],[138,213],[59,166],[166,219],[219,59],[242,99],[99,97],[97,242],[2,94],[94,141],[141,2],[75,59],[59,235],[235,75],[24,110],[110,228],[228,24],[25,130],[130,226],[226,25],[23,24],[24,229],[229,23],[22,23],[23,230],[230,22],[26,22],[22,231],[231,26],[112,26],[26,232],[232,112],[189,190],[190,243],[243,189],[221,56],[56,190],[190,221],[28,56],[56,221],[221,28],[27,28],[28,222],[222,27],[29,27],[27,223],[223,29],[30,29],[29,224],[224,30],[247,30],[30,225],[225,247],[238,79],[79,20],[20,238],[166,59],[59,75],[75,166],[60,75],[75,240],[240,60],[147,177],[177,215],[215,147],[20,79],[79,166],[166,20],[187,147],[147,213],[213,187],[112,233],[233,244],[244,112],[233,128],[128,245],[245,233],[128,114],[114,188],[188,128],[114,217],[217,174],[174,114],[131,115],[115,220],[220,131],[217,198],[198,236],[236,217],[198,131],[131,134],[134,198],[177,132],[132,58],[58,177],[143,35],[35,124],[124,143],[110,163],[163,7],[7,110],[228,110],[110,25],[25,228],[356,389],[389,368],[368,356],[11,302],[302,267],[267,11],[452,350],[350,349],[349,452],[302,303],[303,269],[269,302],[357,343],[343,277],[277,357],[452,453],[453,357],[357,452],[333,332],[332,297],[297,333],[175,152],[152,377],[377,175],[347,348],[348,330],[330,347],[303,304],[304,270],[270,303],[9,336],[336,337],[337,9],[278,279],[279,360],[360,278],[418,262],[262,431],[431,418],[304,408],[408,409],[409,304],[310,415],[415,407],[407,310],[270,409],[409,410],[410,270],[450,348],[348,347],[347,450],[422,430],[430,434],[434,422],[313,314],[314,17],[17,313],[306,307],[307,375],[375,306],[387,388],[388,260],[260,387],[286,414],[414,398],[398,286],[335,406],[406,418],[418,335],[364,367],[367,416],[416,364],[423,358],[358,327],[327,423],[251,284],[284,298],[298,251],[281,5],[5,4],[4,281],[373,374],[374,253],[253,373],[307,320],[320,321],[321,307],[425,427],[427,411],[411,425],[421,313],[313,18],[18,421],[321,405],[405,406],[406,321],[320,404],[404,405],[405,320],[315,16],[16,17],[17,315],[426,425],[425,266],[266,426],[377,400],[400,369],[369,377],[322,391],[391,269],[269,322],[417,465],[465,464],[464,417],[386,257],[257,258],[258,386],[466,260],[260,388],[388,466],[456,399],[399,419],[419,456],[284,332],[332,333],[333,284],[417,285],[285,8],[8,417],[346,340],[340,261],[261,346],[413,441],[441,285],[285,413],[327,460],[460,328],[328,327],[355,371],[371,329],[329,355],[392,439],[439,438],[438,392],[382,341],[341,256],[256,382],[429,420],[420,360],[360,429],[364,394],[394,379],[379,364],[277,343],[343,437],[437,277],[443,444],[444,283],[283,443],[275,440],[440,363],[363,275],[431,262],[262,369],[369,431],[297,338],[338,337],[337,297],[273,375],[375,321],[321,273],[450,451],[451,349],[349,450],[446,342],[342,467],[467,446],[293,334],[334,282],[282,293],[458,461],[461,462],[462,458],[276,353],[353,383],[383,276],[308,324],[324,325],[325,308],[276,300],[300,293],[293,276],[372,345],[345,447],[447,372],[352,345],[345,340],[340,352],[274,1],[1,19],[19,274],[456,248],[248,281],[281,456],[436,427],[427,425],[425,436],[381,256],[256,252],[252,381],[269,391],[391,393],[393,269],[200,199],[199,428],[428,200],[266,330],[330,329],[329,266],[287,273],[273,422],[422,287],[250,462],[462,328],[328,250],[258,286],[286,384],[384,258],[265,353],[353,342],[342,265],[387,259],[259,257],[257,387],[424,431],[431,430],[430,424],[342,353],[353,276],[276,342],[273,335],[335,424],[424,273],[292,325],[325,307],[307,292],[366,447],[447,345],[345,366],[271,303],[303,302],[302,271],[423,266],[266,371],[371,423],[294,455],[455,460],[460,294],[279,278],[278,294],[294,279],[271,272],[272,304],[304,271],[432,434],[434,427],[427,432],[272,407],[407,408],[408,272],[394,430],[430,431],[431,394],[395,369],[369,400],[400,395],[334,333],[333,299],[299,334],[351,417],[417,168],[168,351],[352,280],[280,411],[411,352],[325,319],[319,320],[320,325],[295,296],[296,336],[336,295],[319,403],[403,404],[404,319],[330,348],[348,349],[349,330],[293,298],[298,333],[333,293],[323,454],[454,447],[447,323],[15,16],[16,315],[315,15],[358,429],[429,279],[279,358],[14,15],[15,316],[316,14],[285,336],[336,9],[9,285],[329,349],[349,350],[350,329],[374,380],[380,252],[252,374],[318,402],[402,403],[403,318],[6,197],[197,419],[419,6],[318,319],[319,325],[325,318],[367,364],[364,365],[365,367],[435,367],[367,397],[397,435],[344,438],[438,439],[439,344],[272,271],[271,311],[311,272],[195,5],[5,281],[281,195],[273,287],[287,291],[291,273],[396,428],[428,199],[199,396],[311,271],[271,268],[268,311],[283,444],[444,445],[445,283],[373,254],[254,339],[339,373],[282,334],[334,296],[296,282],[449,347],[347,346],[346,449],[264,447],[447,454],[454,264],[336,296],[296,299],[299,336],[338,10],[10,151],[151,338],[278,439],[439,455],[455,278],[292,407],[407,415],[415,292],[358,371],[371,355],[355,358],[340,345],[345,372],[372,340],[346,347],[347,280],[280,346],[442,443],[443,282],[282,442],[19,94],[94,370],[370,19],[441,442],[442,295],[295,441],[248,419],[419,197],[197,248],[263,255],[255,359],[359,263],[440,275],[275,274],[274,440],[300,383],[383,368],[368,300],[351,412],[412,465],[465,351],[263,467],[467,466],[466,263],[301,368],[368,389],[389,301],[395,378],[378,379],[379,395],[412,351],[351,419],[419,412],[436,426],[426,322],[322,436],[2,164],[164,393],[393,2],[370,462],[462,461],[461,370],[164,0],[0,267],[267,164],[302,11],[11,12],[12,302],[268,12],[12,13],[13,268],[293,300],[300,301],[301,293],[446,261],[261,340],[340,446],[330,266],[266,425],[425,330],[426,423],[423,391],[391,426],[429,355],[355,437],[437,429],[391,327],[327,326],[326,391],[440,457],[457,438],[438,440],[341,382],[382,362],[362,341],[459,457],[457,461],[461,459],[434,430],[430,394],[394,434],[414,463],[463,362],[362,414],[396,369],[369,262],[262,396],[354,461],[461,457],[457,354],[316,403],[403,402],[402,316],[315,404],[404,403],[403,315],[314,405],[405,404],[404,314],[313,406],[406,405],[405,313],[421,418],[418,406],[406,421],[366,401],[401,361],[361,366],[306,408],[408,407],[407,306],[291,409],[409,408],[408,291],[287,410],[410,409],[409,287],[432,436],[436,410],[410,432],[434,416],[416,411],[411,434],[264,368],[368,383],[383,264],[309,438],[438,457],[457,309],[352,376],[376,401],[401,352],[274,275],[275,4],[4,274],[421,428],[428,262],[262,421],[294,327],[327,358],[358,294],[433,416],[416,367],[367,433],[289,455],[455,439],[439,289],[462,370],[370,326],[326,462],[2,326],[326,370],[370,2],[305,460],[460,455],[455,305],[254,449],[449,448],[448,254],[255,261],[261,446],[446,255],[253,450],[450,449],[449,253],[252,451],[451,450],[450,252],[256,452],[452,451],[451,256],[341,453],[453,452],[452,341],[413,464],[464,463],[463,413],[441,413],[413,414],[414,441],[258,442],[442,441],[441,258],[257,443],[443,442],[442,257],[259,444],[444,443],[443,259],[260,445],[445,444],[444,260],[467,342],[342,445],[445,467],[459,458],[458,250],[250,459],[289,392],[392,290],[290,289],[290,328],[328,460],[460,290],[376,433],[433,435],[435,376],[250,290],[290,392],[392,250],[411,416],[416,433],[433,411],[341,463],[463,464],[464,341],[453,464],[464,465],[465,453],[357,465],[465,412],[412,357],[343,412],[412,399],[399,343],[360,363],[363,440],[440,360],[437,399],[399,456],[456,437],[420,456],[456,363],[363,420],[401,435],[435,288],[288,401],[372,383],[383,353],[353,372],[339,255],[255,249],[249,339],[448,261],[261,255],[255,448],[133,243],[243,190],[190,133],[133,155],[155,112],[112,133],[33,246],[246,247],[247,33],[33,130],[130,25],[25,33],[398,384],[384,286],[286,398],[362,398],[398,414],[414,362],[362,463],[463,341],[341,362],[263,359],[359,467],[467,263],[263,249],[249,255],[255,263],[466,467],[467,260],[260,466],[75,60],[60,166],[166,75],[238,239],[239,79],[79,238],[162,127],[127,139],[139,162],[72,11],[11,37],[37,72],[121,232],[232,120],[120,121],[73,72],[72,39],[39,73],[114,128],[128,47],[47,114],[233,232],[232,128],[128,233],[103,104],[104,67],[67,103],[152,175],[175,148],[148,152],[119,118],[118,101],[101,119],[74,73],[73,40],[40,74],[107,9],[9,108],[108,107],[49,48],[48,131],[131,49],[32,194],[194,211],[211,32],[184,74],[74,185],[185,184],[191,80],[80,183],[183,191],[185,40],[40,186],[186,185],[119,230],[230,118],[118,119],[210,202],[202,214],[214,210],[84,83],[83,17],[17,84],[77,76],[76,146],[146,77],[161,160],[160,30],[30,161],[190,56],[56,173],[173,190],[182,106],[106,194],[194,182],[138,135],[135,192],[192,138],[129,203],[203,98],[98,129],[54,21],[21,68],[68,54],[5,51],[51,4],[4,5],[145,144],[144,23],[23,145],[90,77],[77,91],[91,90],[207,205],[205,187],[187,207],[83,201],[201,18],[18,83],[181,91],[91,182],[182,181],[180,90],[90,181],[181,180],[16,85],[85,17],[17,16],[205,206],[206,36],[36,205],[176,148],[148,140],[140,176],[165,92],[92,39],[39,165],[245,193],[193,244],[244,245],[27,159],[159,28],[28,27],[30,247],[247,161],[161,30],[174,236],[236,196],[196,174],[103,54],[54,104],[104,103],[55,193],[193,8],[8,55],[111,117],[117,31],[31,111],[221,189],[189,55],[55,221],[240,98],[98,99],[99,240],[142,126],[126,100],[100,142],[219,166],[166,218],[218,219],[112,155],[155,26],[26,112],[198,209],[209,131],[131,198],[169,135],[135,150],[150,169],[114,47],[47,217],[217,114],[224,223],[223,53],[53,224],[220,45],[45,134],[134,220],[32,211],[211,140],[140,32],[109,67],[67,108],[108,109],[146,43],[43,91],[91,146],[231,230],[230,120],[120,231],[113,226],[226,247],[247,113],[105,63],[63,52],[52,105],[241,238],[238,242],[242,241],[124,46],[46,156],[156,124],[95,78],[78,96],[96,95],[70,46],[46,63],[63,70],[116,143],[143,227],[227,116],[116,123],[123,111],[111,116],[1,44],[44,19],[19,1],[3,236],[236,51],[51,3],[207,216],[216,205],[205,207],[26,154],[154,22],[22,26],[165,39],[39,167],[167,165],[199,200],[200,208],[208,199],[101,36],[36,100],[100,101],[43,57],[57,202],[202,43],[242,20],[20,99],[99,242],[56,28],[28,157],[157,56],[124,35],[35,113],[113,124],[29,160],[160,27],[27,29],[211,204],[204,210],[210,211],[124,113],[113,46],[46,124],[106,43],[43,204],[204,106],[96,62],[62,77],[77,96],[227,137],[137,116],[116,227],[73,41],[41,72],[72,73],[36,203],[203,142],[142,36],[235,64],[64,240],[240,235],[48,49],[49,64],[64,48],[42,41],[41,74],[74,42],[214,212],[212,207],[207,214],[183,42],[42,184],[184,183],[210,169],[169,211],[211,210],[140,170],[170,176],[176,140],[104,105],[105,69],[69,104],[193,122],[122,168],[168,193],[50,123],[123,187],[187,50],[89,96],[96,90],[90,89],[66,65],[65,107],[107,66],[179,89],[89,180],[180,179],[119,101],[101,120],[120,119],[68,63],[63,104],[104,68],[234,93],[93,227],[227,234],[16,15],[15,85],[85,16],[209,129],[129,49],[49,209],[15,14],[14,86],[86,15],[107,55],[55,9],[9,107],[120,100],[100,121],[121,120],[153,145],[145,22],[22,153],[178,88],[88,179],[179,178],[197,6],[6,196],[196,197],[89,88],[88,96],[96,89],[135,138],[138,136],[136,135],[138,215],[215,172],[172,138],[218,115],[115,219],[219,218],[41,42],[42,81],[81,41],[5,195],[195,51],[51,5],[57,43],[43,61],[61,57],[208,171],[171,199],[199,208],[41,81],[81,38],[38,41],[224,53],[53,225],[225,224],[24,144],[144,110],[110,24],[105,52],[52,66],[66,105],[118,229],[229,117],[117,118],[227,34],[34,234],[234,227],[66,107],[107,69],[69,66],[10,109],[109,151],[151,10],[219,48],[48,235],[235,219],[183,62],[62,191],[191,183],[142,129],[129,126],[126,142],[116,111],[111,143],[143,116],[118,117],[117,50],[50,118],[223,222],[222,52],[52,223],[94,19],[19,141],[141,94],[222,221],[221,65],[65,222],[196,3],[3,197],[197,196],[45,220],[220,44],[44,45],[156,70],[70,139],[139,156],[188,122],[122,245],[245,188],[139,71],[71,162],[162,139],[149,170],[170,150],[150,149],[122,188],[188,196],[196,122],[206,216],[216,92],[92,206],[164,2],[2,167],[167,164],[242,141],[141,241],[241,242],[0,164],[164,37],[37,0],[11,72],[72,12],[12,11],[12,38],[38,13],[13,12],[70,63],[63,71],[71,70],[31,226],[226,111],[111,31],[36,101],[101,205],[205,36],[203,206],[206,165],[165,203],[126,209],[209,217],[217,126],[98,165],[165,97],[97,98],[237,220],[220,218],[218,237],[237,239],[239,241],[241,237],[210,214],[214,169],[169,210],[140,171],[171,32],[32,140],[241,125],[125,237],[237,241],[179,86],[86,178],[178,179],[180,85],[85,179],[179,180],[181,84],[84,180],[180,181],[182,83],[83,181],[181,182],[194,201],[201,182],[182,194],[177,137],[137,132],[132,177],[184,76],[76,183],[183,184],[185,61],[61,184],[184,185],[186,57],[57,185],[185,186],[216,212],[212,186],[186,216],[192,214],[214,187],[187,192],[139,34],[34,156],[156,139],[218,79],[79,237],[237,218],[147,123],[123,177],[177,147],[45,44],[44,4],[4,45],[208,201],[201,32],[32,208],[98,64],[64,129],[129,98],[192,213],[213,138],[138,192],[235,59],[59,219],[219,235],[141,242],[242,97],[97,141],[97,2],[2,141],[141,97],[240,75],[75,235],[235,240],[229,24],[24,228],[228,229],[31,25],[25,226],[226,31],[230,23],[23,229],[229,230],[231,22],[22,230],[230,231],[232,26],[26,231],[231,232],[233,112],[112,232],[232,233],[244,189],[189,243],[243,244],[189,221],[221,190],[190,189],[222,28],[28,221],[221,222],[223,27],[27,222],[222,223],[224,29],[29,223],[223,224],[225,30],[30,224],[224,225],[113,247],[247,225],[225,113],[99,60],[60,240],[240,99],[213,147],[147,215],[215,213],[60,20],[20,166],[166,60],[192,187],[187,213],[213,192],[243,112],[112,244],[244,243],[244,233],[233,245],[245,244],[245,128],[128,188],[188,245],[188,114],[114,174],[174,188],[134,131],[131,220],[220,134],[174,217],[217,236],[236,174],[236,198],[198,134],[134,236],[215,177],[177,58],[58,215],[156,143],[143,124],[124,156],[25,110],[110,7],[7,25],[31,228],[228,25],[25,31],[264,356],[356,368],[368,264],[0,11],[11,267],[267,0],[451,452],[452,349],[349,451],[267,302],[302,269],[269,267],[350,357],[357,277],[277,350],[350,452],[452,357],[357,350],[299,333],[333,297],[297,299],[396,175],[175,377],[377,396],[280,347],[347,330],[330,280],[269,303],[303,270],[270,269],[151,9],[9,337],[337,151],[344,278],[278,360],[360,344],[424,418],[418,431],[431,424],[270,304],[304,409],[409,270],[272,310],[310,407],[407,272],[322,270],[270,410],[410,322],[449,450],[450,347],[347,449],[432,422],[422,434],[434,432],[18,313],[313,17],[17,18],[291,306],[306,375],[375,291],[259,387],[387,260],[260,259],[424,335],[335,418],[418,424],[434,364],[364,416],[416,434],[391,423],[423,327],[327,391],[301,251],[251,298],[298,301],[275,281],[281,4],[4,275],[254,373],[373,253],[253,254],[375,307],[307,321],[321,375],[280,425],[425,411],[411,280],[200,421],[421,18],[18,200],[335,321],[321,406],[406,335],[321,320],[320,405],[405,321],[314,315],[315,17],[17,314],[423,426],[426,266],[266,423],[396,377],[377,369],[369,396],[270,322],[322,269],[269,270],[413,417],[417,464],[464,413],[385,386],[386,258],[258,385],[248,456],[456,419],[419,248],[298,284],[284,333],[333,298],[168,417],[417,8],[8,168],[448,346],[346,261],[261,448],[417,413],[413,285],[285,417],[326,327],[327,328],[328,326],[277,355],[355,329],[329,277],[309,392],[392,438],[438,309],[381,382],[382,256],[256,381],[279,429],[429,360],[360,279],[365,364],[364,379],[379,365],[355,277],[277,437],[437,355],[282,443],[443,283],[283,282],[281,275],[275,363],[363,281],[395,431],[431,369],[369,395],[299,297],[297,337],[337,299],[335,273],[273,321],[321,335],[348,450],[450,349],[349,348],[359,446],[446,467],[467,359],[283,293],[293,282],[282,283],[250,458],[458,462],[462,250],[300,276],[276,383],[383,300],[292,308],[308,325],[325,292],[283,276],[276,293],[293,283],[264,372],[372,447],[447,264],[346,352],[352,340],[340,346],[354,274],[274,19],[19,354],[363,456],[456,281],[281,363],[426,436],[436,425],[425,426],[380,381],[381,252],[252,380],[267,269],[269,393],[393,267],[421,200],[200,428],[428,421],[371,266],[266,329],[329,371],[432,287],[287,422],[422,432],[290,250],[250,328],[328,290],[385,258],[258,384],[384,385],[446,265],[265,342],[342,446],[386,387],[387,257],[257,386],[422,424],[424,430],[430,422],[445,342],[342,276],[276,445],[422,273],[273,424],[424,422],[306,292],[292,307],[307,306],[352,366],[366,345],[345,352],[268,271],[271,302],[302,268],[358,423],[423,371],[371,358],[327,294],[294,460],[460,327],[331,279],[279,294],[294,331],[303,271],[271,304],[304,303],[436,432],[432,427],[427,436],[304,272],[272,408],[408,304],[395,394],[394,431],[431,395],[378,395],[395,400],[400,378],[296,334],[334,299],[299,296],[6,351],[351,168],[168,6],[376,352],[352,411],[411,376],[307,325],[325,320],[320,307],[285,295],[295,336],[336,285],[320,319],[319,404],[404,320],[329,330],[330,349],[349,329],[334,293],[293,333],[333,334],[366,323],[323,447],[447,366],[316,15],[15,315],[315,316],[331,358],[358,279],[279,331],[317,14],[14,316],[316,317],[8,285],[285,9],[9,8],[277,329],[329,350],[350,277],[253,374],[374,252],[252,253],[319,318],[318,403],[403,319],[351,6],[6,419],[419,351],[324,318],[318,325],[325,324],[397,367],[367,365],[365,397],[288,435],[435,397],[397,288],[278,344],[344,439],[439,278],[310,272],[272,311],[311,310],[248,195],[195,281],[281,248],[375,273],[273,291],[291,375],[175,396],[396,199],[199,175],[312,311],[311,268],[268,312],[276,283],[283,445],[445,276],[390,373],[373,339],[339,390],[295,282],[282,296],[296,295],[448,449],[449,346],[346,448],[356,264],[264,454],[454,356],[337,336],[336,299],[299,337],[337,338],[338,151],[151,337],[294,278],[278,455],[455,294],[308,292],[292,415],[415,308],[429,358],[358,355],[355,429],[265,340],[340,372],[372,265],[352,346],[346,280],[280,352],[295,442],[442,282],[282,295],[354,19],[19,370],[370,354],[285,441],[441,295],[295,285],[195,248],[248,197],[197,195],[457,440],[440,274],[274,457],[301,300],[300,368],[368,301],[417,351],[351,465],[465,417],[251,301],[301,389],[389,251],[394,395],[395,379],[379,394],[399,412],[412,419],[419,399],[410,436],[436,322],[322,410],[326,2],[2,393],[393,326],[354,370],[370,461],[461,354],[393,164],[164,267],[267,393],[268,302],[302,12],[12,268],[312,268],[268,13],[13,312],[298,293],[293,301],[301,298],[265,446],[446,340],[340,265],[280,330],[330,425],[425,280],[322,426],[426,391],[391,322],[420,429],[429,437],[437,420],[393,391],[391,326],[326,393],[344,440],[440,438],[438,344],[458,459],[459,461],[461,458],[364,434],[434,394],[394,364],[428,396],[396,262],[262,428],[274,354],[354,457],[457,274],[317,316],[316,402],[402,317],[316,315],[315,403],[403,316],[315,314],[314,404],[404,315],[314,313],[313,405],[405,314],[313,421],[421,406],[406,313],[323,366],[366,361],[361,323],[292,306],[306,407],[407,292],[306,291],[291,408],[408,306],[291,287],[287,409],[409,291],[287,432],[432,410],[410,287],[427,434],[434,411],[411,427],[372,264],[264,383],[383,372],[459,309],[309,457],[457,459],[366,352],[352,401],[401,366],[1,274],[274,4],[4,1],[418,421],[421,262],[262,418],[331,294],[294,358],[358,331],[435,433],[433,367],[367,435],[392,289],[289,439],[439,392],[328,462],[462,326],[326,328],[94,2],[2,370],[370,94],[289,305],[305,455],[455,289],[339,254],[254,448],[448,339],[359,255],[255,446],[446,359],[254,253],[253,449],[449,254],[253,252],[252,450],[450,253],[252,256],[256,451],[451,252],[256,341],[341,452],[452,256],[414,413],[413,463],[463,414],[286,441],[441,414],[414,286],[286,258],[258,441],[441,286],[258,257],[257,442],[442,258],[257,259],[259,443],[443,257],[259,260],[260,444],[444,259],[260,467],[467,445],[445,260],[309,459],[459,250],[250,309],[305,289],[289,290],[290,305],[305,290],[290,460],[460,305],[401,376],[376,435],[435,401],[309,250],[250,392],[392,309],[376,411],[411,433],[433,376],[453,341],[341,464],[464,453],[357,453],[453,465],[465,357],[343,357],[357,412],[412,343],[437,343],[343,399],[399,437],[344,360],[360,440],[440,344],[420,437],[437,456],[456,420],[360,420],[420,363],[363,360],[361,401],[401,288],[288,361],[265,372],[372,353],[353,265],[390,339],[339,249],[249,390],[339,448],[448,255],[255,339]);function Ec(t){t.j={faceLandmarks:[],faceBlendshapes:[],facialTransformationMatrixes:[]}}var we=class extends rt{constructor(t,e){super(new kt(t,e),"image_in","norm_rect",!1),this.j={faceLandmarks:[],faceBlendshapes:[],facialTransformationMatrixes:[]},this.outputFacialTransformationMatrixes=this.outputFaceBlendshapes=!1,$(t=this.h=new tf,0,1,e=new ye),this.v=new ef,$(this.h,0,3,this.v),this.s=new Ks,$(this.h,0,2,this.s),Yt(this.s,4,1),G(this.s,2,.5),G(this.v,2,.5),G(this.h,4,.5)}get baseOptions(){return Y(this.h,ye,1)}set baseOptions(t){$(this.h,0,1,t)}o(t){return"numFaces"in t&&Yt(this.s,4,t.numFaces??1),"minFaceDetectionConfidence"in t&&G(this.s,2,t.minFaceDetectionConfidence??.5),"minTrackingConfidence"in t&&G(this.h,4,t.minTrackingConfidence??.5),"minFacePresenceConfidence"in t&&G(this.v,2,t.minFacePresenceConfidence??.5),"outputFaceBlendshapes"in t&&(this.outputFaceBlendshapes=!!t.outputFaceBlendshapes),"outputFacialTransformationMatrixes"in t&&(this.outputFacialTransformationMatrixes=!!t.outputFacialTransformationMatrixes),this.l(t)}D(t,e){return Ec(this),Et(this,t,e),this.j}F(t,e,r){return Ec(this),qt(this,t,r,e),this.j}m(){var t=new nt;ge(t,"image_in"),ge(t,"norm_rect"),Z(t,"face_landmarks");let e=new lt;Pt(e,Kd,this.h);let r=new Ze;ht(r,"mediapipe.tasks.vision.face_landmarker.FaceLandmarkerGraph"),le(r,"IMAGE:image_in"),le(r,"NORM_RECT:norm_rect"),j(r,"NORM_LANDMARKS:face_landmarks"),r.o(e),dt(t,r),this.g.attachProtoVectorListener("face_landmarks",(n,s)=>{for(let o of n)n=jn(o),this.j.faceLandmarks.push(Zs(n));D(this,s)}),this.g.attachEmptyPacketListener("face_landmarks",n=>{D(this,n)}),this.outputFaceBlendshapes&&(Z(t,"blendshapes"),j(r,"BLENDSHAPES:blendshapes"),this.g.attachProtoVectorListener("blendshapes",(n,s)=>{if(this.outputFaceBlendshapes)for(let o of n)n=qs(o),this.j.faceBlendshapes.push(xi(n.g()??[]));D(this,s)}),this.g.attachEmptyPacketListener("blendshapes",n=>{D(this,n)})),this.outputFacialTransformationMatrixes&&(Z(t,"face_geometry"),j(r,"FACE_GEOMETRY:face_geometry"),this.g.attachProtoVectorListener("face_geometry",(n,s)=>{if(this.outputFacialTransformationMatrixes)for(let o of n)(n=Y(qd(o),Gd,2))&&this.j.facialTransformationMatrixes.push({rows:Ut(wt(n,1),0)??0,columns:Ut(wt(n,2),0)??0,data:Fr(n,3,Tr,Sr()).slice()??[]});D(this,s)}),this.g.attachEmptyPacketListener("face_geometry",n=>{D(this,n)})),t=t.g(),this.setGraph(new Uint8Array(t),!0)}};we.prototype.detectForVideo=we.prototype.F,we.prototype.detect=we.prototype.D,we.prototype.setOptions=we.prototype.o,we.createFromModelPath=function(t,e){return X(we,t,{baseOptions:{modelAssetPath:e}})},we.createFromModelBuffer=function(t,e){return X(we,t,{baseOptions:{modelAssetBuffer:e}})},we.createFromOptions=function(t,e){return X(we,t,e)},we.FACE_LANDMARKS_LIPS=vi,we.FACE_LANDMARKS_LEFT_EYE=wi,we.FACE_LANDMARKS_LEFT_EYEBROW=Ti,we.FACE_LANDMARKS_LEFT_IRIS=Sf,we.FACE_LANDMARKS_RIGHT_EYE=ki,we.FACE_LANDMARKS_RIGHT_EYEBROW=Ei,we.FACE_LANDMARKS_RIGHT_IRIS=Ff,we.FACE_LANDMARKS_FACE_OVAL=Ai,we.FACE_LANDMARKS_CONTOURS=Cf,we.FACE_LANDMARKS_TESSELATION=Bf;var zt=class extends rt{constructor(t,e){super(new kt(t,e),"image_in","norm_rect",!0),$(t=this.j=new nf,0,1,e=new ye)}get baseOptions(){return Y(this.j,ye,1)}set baseOptions(t){$(this.j,0,1,t)}o(t){return super.l(t)}Oa(t,e,r){let n=typeof e!="function"?e:{};if(this.h=typeof e=="function"?e:r,Et(this,t,n??{}),!this.h)return this.s}m(){var t=new nt;ge(t,"image_in"),ge(t,"norm_rect"),Z(t,"stylized_image");let e=new lt;Pt(e,Zd,this.j);let r=new Ze;ht(r,"mediapipe.tasks.vision.face_stylizer.FaceStylizerGraph"),le(r,"IMAGE:image_in"),le(r,"NORM_RECT:norm_rect"),j(r,"STYLIZED_IMAGE:stylized_image"),r.o(e),dt(t,r),this.g.V("stylized_image",(n,s)=>{var o=!this.h,a=n.data,i=n.width;let u=i*(n=n.height);if(a instanceof Uint8Array)if(a.length===3*u){let l=new Uint8ClampedArray(4*u);for(let c=0;c<u;++c)l[4*c]=a[3*c],l[4*c+1]=a[3*c+1],l[4*c+2]=a[3*c+2],l[4*c+3]=255;a=new ImageData(l,i,n)}else{if(a.length!==4*u)throw Error("Unsupported channel count: "+a.length/u);a=new ImageData(new Uint8ClampedArray(a.buffer,a.byteOffset,a.length),i,n)}else if(!(a instanceof WebGLTexture))throw Error(`Unsupported format: ${a.constructor.name}`);i=new Ne([a],!1,!1,this.g.i.canvas,this.P,i,n),this.s=o=o?i.clone():i,this.h&&this.h(o),D(this,s)}),this.g.attachEmptyPacketListener("stylized_image",n=>{this.s=null,this.h&&this.h(null),D(this,n)}),t=t.g(),this.setGraph(new Uint8Array(t),!0)}};zt.prototype.stylize=zt.prototype.Oa,zt.prototype.setOptions=zt.prototype.o,zt.createFromModelPath=function(t,e){return X(zt,t,{baseOptions:{modelAssetPath:e}})},zt.createFromModelBuffer=function(t,e){return X(zt,t,{baseOptions:{modelAssetBuffer:e}})},zt.createFromOptions=function(t,e){return X(zt,t,e)};var Ri=Mt([0,1],[1,2],[2,3],[3,4],[0,5],[5,6],[6,7],[7,8],[5,9],[9,10],[10,11],[11,12],[9,13],[13,14],[14,15],[15,16],[13,17],[0,17],[17,18],[18,19],[19,20]);function Ac(t){t.gestures=[],t.landmarks=[],t.worldLandmarks=[],t.handedness=[]}function Rc(t){return t.gestures.length===0?{gestures:[],landmarks:[],worldLandmarks:[],handedness:[],handednesses:[]}:{gestures:t.gestures,landmarks:t.landmarks,worldLandmarks:t.worldLandmarks,handedness:t.handedness,handednesses:t.handedness}}function Ic(t,e=!0){let r=[];for(let s of t){var n=qs(s);t=[];for(let o of n.g())n=e&&wt(o,1)!=null?Ut(wt(o,1),0):-1,t.push({score:Se(o,2)??0,index:n,categoryName:jt(o,3)??"",displayName:jt(o,4)??""});r.push(t)}return r}var ot=class extends rt{constructor(t,e){super(new kt(t,e),"image_in","norm_rect",!1),this.gestures=[],this.landmarks=[],this.worldLandmarks=[],this.handedness=[],$(t=this.j=new af,0,1,e=new ye),this.s=new di,$(this.j,0,2,this.s),this.C=new hi,$(this.s,0,3,this.C),this.v=new of,$(this.s,0,2,this.v),this.h=new Jd,$(this.j,0,3,this.h),G(this.v,2,.5),G(this.s,4,.5),G(this.C,2,.5)}get baseOptions(){return Y(this.j,ye,1)}set baseOptions(t){$(this.j,0,1,t)}o(t){if(Yt(this.v,3,t.numHands??1),"minHandDetectionConfidence"in t&&G(this.v,2,t.minHandDetectionConfidence??.5),"minTrackingConfidence"in t&&G(this.s,4,t.minTrackingConfidence??.5),"minHandPresenceConfidence"in t&&G(this.C,2,t.minHandPresenceConfidence??.5),t.cannedGesturesClassifierOptions){var e=new $r,r=e,n=xa(t.cannedGesturesClassifierOptions,Y(this.h,$r,3)?.h());$(r,0,2,n),$(this.h,0,3,e)}else t.cannedGesturesClassifierOptions===void 0&&Y(this.h,$r,3)?.g();return t.customGesturesClassifierOptions?($(r=e=new $r,0,2,n=xa(t.customGesturesClassifierOptions,Y(this.h,$r,4)?.h())),$(this.h,0,4,e)):t.customGesturesClassifierOptions===void 0&&Y(this.h,$r,4)?.g(),this.l(t)}Ja(t,e){return Ac(this),Et(this,t,e),Rc(this)}Ka(t,e,r){return Ac(this),qt(this,t,r,e),Rc(this)}m(){var t=new nt;ge(t,"image_in"),ge(t,"norm_rect"),Z(t,"hand_gestures"),Z(t,"hand_landmarks"),Z(t,"world_hand_landmarks"),Z(t,"handedness");let e=new lt;Pt(e,Qd,this.j);let r=new Ze;ht(r,"mediapipe.tasks.vision.gesture_recognizer.GestureRecognizerGraph"),le(r,"IMAGE:image_in"),le(r,"NORM_RECT:norm_rect"),j(r,"HAND_GESTURES:hand_gestures"),j(r,"LANDMARKS:hand_landmarks"),j(r,"WORLD_LANDMARKS:world_hand_landmarks"),j(r,"HANDEDNESS:handedness"),r.o(e),dt(t,r),this.g.attachProtoVectorListener("hand_landmarks",(n,s)=>{for(let o of n){n=jn(o);let a=[];for(let i of sr(n,ql,1))a.push({x:Se(i,1)??0,y:Se(i,2)??0,z:Se(i,3)??0,visibility:Se(i,4)??0});this.landmarks.push(a)}D(this,s)}),this.g.attachEmptyPacketListener("hand_landmarks",n=>{D(this,n)}),this.g.attachProtoVectorListener("world_hand_landmarks",(n,s)=>{for(let o of n){n=Yr(o);let a=[];for(let i of sr(n,Yl,1))a.push({x:Se(i,1)??0,y:Se(i,2)??0,z:Se(i,3)??0,visibility:Se(i,4)??0});this.worldLandmarks.push(a)}D(this,s)}),this.g.attachEmptyPacketListener("world_hand_landmarks",n=>{D(this,n)}),this.g.attachProtoVectorListener("hand_gestures",(n,s)=>{this.gestures.push(...Ic(n,!1)),D(this,s)}),this.g.attachEmptyPacketListener("hand_gestures",n=>{D(this,n)}),this.g.attachProtoVectorListener("handedness",(n,s)=>{this.handedness.push(...Ic(n)),D(this,s)}),this.g.attachEmptyPacketListener("handedness",n=>{D(this,n)}),t=t.g(),this.setGraph(new Uint8Array(t),!0)}};function Sc(t){return{landmarks:t.landmarks,worldLandmarks:t.worldLandmarks,handednesses:t.handedness,handedness:t.handedness}}ot.prototype.recognizeForVideo=ot.prototype.Ka,ot.prototype.recognize=ot.prototype.Ja,ot.prototype.setOptions=ot.prototype.o,ot.createFromModelPath=function(t,e){return X(ot,t,{baseOptions:{modelAssetPath:e}})},ot.createFromModelBuffer=function(t,e){return X(ot,t,{baseOptions:{modelAssetBuffer:e}})},ot.createFromOptions=function(t,e){return X(ot,t,e)},ot.HAND_CONNECTIONS=Ri;var at=class extends rt{constructor(t,e){super(new kt(t,e),"image_in","norm_rect",!1),this.landmarks=[],this.worldLandmarks=[],this.handedness=[],$(t=this.h=new di,0,1,e=new ye),this.s=new hi,$(this.h,0,3,this.s),this.j=new of,$(this.h,0,2,this.j),Yt(this.j,3,1),G(this.j,2,.5),G(this.s,2,.5),G(this.h,4,.5)}get baseOptions(){return Y(this.h,ye,1)}set baseOptions(t){$(this.h,0,1,t)}o(t){return"numHands"in t&&Yt(this.j,3,t.numHands??1),"minHandDetectionConfidence"in t&&G(this.j,2,t.minHandDetectionConfidence??.5),"minTrackingConfidence"in t&&G(this.h,4,t.minTrackingConfidence??.5),"minHandPresenceConfidence"in t&&G(this.s,2,t.minHandPresenceConfidence??.5),this.l(t)}D(t,e){return this.landmarks=[],this.worldLandmarks=[],this.handedness=[],Et(this,t,e),Sc(this)}F(t,e,r){return this.landmarks=[],this.worldLandmarks=[],this.handedness=[],qt(this,t,r,e),Sc(this)}m(){var t=new nt;ge(t,"image_in"),ge(t,"norm_rect"),Z(t,"hand_landmarks"),Z(t,"world_hand_landmarks"),Z(t,"handedness");let e=new lt;Pt(e,em,this.h);let r=new Ze;ht(r,"mediapipe.tasks.vision.hand_landmarker.HandLandmarkerGraph"),le(r,"IMAGE:image_in"),le(r,"NORM_RECT:norm_rect"),j(r,"LANDMARKS:hand_landmarks"),j(r,"WORLD_LANDMARKS:world_hand_landmarks"),j(r,"HANDEDNESS:handedness"),r.o(e),dt(t,r),this.g.attachProtoVectorListener("hand_landmarks",(n,s)=>{for(let o of n)n=jn(o),this.landmarks.push(Zs(n));D(this,s)}),this.g.attachEmptyPacketListener("hand_landmarks",n=>{D(this,n)}),this.g.attachProtoVectorListener("world_hand_landmarks",(n,s)=>{for(let o of n)n=Yr(o),this.worldLandmarks.push(Dn(n));D(this,s)}),this.g.attachEmptyPacketListener("world_hand_landmarks",n=>{D(this,n)}),this.g.attachProtoVectorListener("handedness",(n,s)=>{var o=this.handedness,a=o.push;let i=[];for(let u of n){n=qs(u);let l=[];for(let c of n.g())l.push({score:Se(c,2)??0,index:Ut(wt(c,1),0)??-1,categoryName:jt(c,3)??"",displayName:jt(c,4)??""});i.push(l)}a.call(o,...i),D(this,s)}),this.g.attachEmptyPacketListener("handedness",n=>{D(this,n)}),t=t.g(),this.setGraph(new Uint8Array(t),!0)}};at.prototype.detectForVideo=at.prototype.F,at.prototype.detect=at.prototype.D,at.prototype.setOptions=at.prototype.o,at.createFromModelPath=function(t,e){return X(at,t,{baseOptions:{modelAssetPath:e}})},at.createFromModelBuffer=function(t,e){return X(at,t,{baseOptions:{modelAssetBuffer:e}})},at.createFromOptions=function(t,e){return X(at,t,e)},at.HAND_CONNECTIONS=Ri;var Uf=Mt([0,1],[1,2],[2,3],[3,7],[0,4],[4,5],[5,6],[6,8],[9,10],[11,12],[11,13],[13,15],[15,17],[15,19],[15,21],[17,19],[12,14],[14,16],[16,18],[16,20],[16,22],[18,20],[11,23],[12,24],[23,24],[23,25],[24,26],[25,27],[26,28],[27,29],[28,30],[29,31],[30,32],[27,31],[28,32]);function Fc(t){t.h={faceLandmarks:[],faceBlendshapes:[],poseLandmarks:[],poseWorldLandmarks:[],poseSegmentationMasks:[],leftHandLandmarks:[],leftHandWorldLandmarks:[],rightHandLandmarks:[],rightHandWorldLandmarks:[]}}function Cc(t){try{if(!t.C)return t.h;t.C(t.h)}finally{Qs(t)}}function ds(t,e){t=jn(t),e.push(Zs(t))}var xe=class extends rt{constructor(t,e){super(new kt(t,e),"input_frames_image",null,!1),this.h={faceLandmarks:[],faceBlendshapes:[],poseLandmarks:[],poseWorldLandmarks:[],poseSegmentationMasks:[],leftHandLandmarks:[],leftHandWorldLandmarks:[],rightHandLandmarks:[],rightHandWorldLandmarks:[]},this.outputPoseSegmentationMasks=this.outputFaceBlendshapes=!1,$(t=this.j=new hf,0,1,e=new ye),this.K=new hi,$(this.j,0,2,this.K),this.aa=new tm,$(this.j,0,3,this.aa),this.s=new Ks,$(this.j,0,4,this.s),this.I=new ef,$(this.j,0,5,this.I),this.v=new lf,$(this.j,0,6,this.v),this.L=new ff,$(this.j,0,7,this.L),G(this.s,2,.5),G(this.s,3,.3),G(this.I,2,.5),G(this.v,2,.5),G(this.v,3,.3),G(this.L,2,.5),G(this.K,2,.5)}get baseOptions(){return Y(this.j,ye,1)}set baseOptions(t){$(this.j,0,1,t)}o(t){return"minFaceDetectionConfidence"in t&&G(this.s,2,t.minFaceDetectionConfidence??.5),"minFaceSuppressionThreshold"in t&&G(this.s,3,t.minFaceSuppressionThreshold??.3),"minFacePresenceConfidence"in t&&G(this.I,2,t.minFacePresenceConfidence??.5),"outputFaceBlendshapes"in t&&(this.outputFaceBlendshapes=!!t.outputFaceBlendshapes),"minPoseDetectionConfidence"in t&&G(this.v,2,t.minPoseDetectionConfidence??.5),"minPoseSuppressionThreshold"in t&&G(this.v,3,t.minPoseSuppressionThreshold??.3),"minPosePresenceConfidence"in t&&G(this.L,2,t.minPosePresenceConfidence??.5),"outputPoseSegmentationMasks"in t&&(this.outputPoseSegmentationMasks=!!t.outputPoseSegmentationMasks),"minHandLandmarksConfidence"in t&&G(this.K,2,t.minHandLandmarksConfidence??.5),this.l(t)}D(t,e,r){let n=typeof e!="function"?e:{};return this.C=typeof e=="function"?e:r,Fc(this),Et(this,t,n),Cc(this)}F(t,e,r,n){let s=typeof r!="function"?r:{};return this.C=typeof r=="function"?r:n,Fc(this),qt(this,t,s,e),Cc(this)}m(){var t=new nt;ge(t,"input_frames_image"),Z(t,"pose_landmarks"),Z(t,"pose_world_landmarks"),Z(t,"face_landmarks"),Z(t,"left_hand_landmarks"),Z(t,"left_hand_world_landmarks"),Z(t,"right_hand_landmarks"),Z(t,"right_hand_world_landmarks");let e=new lt,r=new Ku;la(r,1,an("type.googleapis.com/mediapipe.tasks.vision.holistic_landmarker.proto.HolisticLandmarkerGraphOptions"),""),function(s,o){if(o!=null)if(Array.isArray(o))ce(s,2,Ds(o,Ga,void 0,void 0,!1));else{if(!(typeof o=="string"||o instanceof rr||$n(o)))throw Error("invalid value in Any.value field: "+o+" expected a ByteString, a base64 encoded string, a Uint8Array or a jspb array");la(s,2,Ca(o,!1),Ur())}}(r,this.j.g());let n=new Ze;ht(n,"mediapipe.tasks.vision.holistic_landmarker.HolisticLandmarkerGraph"),Es(n,8,Ku,r),le(n,"IMAGE:input_frames_image"),j(n,"POSE_LANDMARKS:pose_landmarks"),j(n,"POSE_WORLD_LANDMARKS:pose_world_landmarks"),j(n,"FACE_LANDMARKS:face_landmarks"),j(n,"LEFT_HAND_LANDMARKS:left_hand_landmarks"),j(n,"LEFT_HAND_WORLD_LANDMARKS:left_hand_world_landmarks"),j(n,"RIGHT_HAND_LANDMARKS:right_hand_landmarks"),j(n,"RIGHT_HAND_WORLD_LANDMARKS:right_hand_world_landmarks"),n.o(e),dt(t,n),Js(this,t),this.g.attachProtoListener("pose_landmarks",(s,o)=>{ds(s,this.h.poseLandmarks),D(this,o)}),this.g.attachEmptyPacketListener("pose_landmarks",s=>{D(this,s)}),this.g.attachProtoListener("pose_world_landmarks",(s,o)=>{var a=this.h.poseWorldLandmarks;s=Yr(s),a.push(Dn(s)),D(this,o)}),this.g.attachEmptyPacketListener("pose_world_landmarks",s=>{D(this,s)}),this.outputPoseSegmentationMasks&&(j(n,"POSE_SEGMENTATION_MASK:pose_segmentation_mask"),Qr(this,"pose_segmentation_mask"),this.g.V("pose_segmentation_mask",(s,o)=>{this.h.poseSegmentationMasks=[rn(this,s,!0,!this.C)],D(this,o)}),this.g.attachEmptyPacketListener("pose_segmentation_mask",s=>{this.h.poseSegmentationMasks=[],D(this,s)})),this.g.attachProtoListener("face_landmarks",(s,o)=>{ds(s,this.h.faceLandmarks),D(this,o)}),this.g.attachEmptyPacketListener("face_landmarks",s=>{D(this,s)}),this.outputFaceBlendshapes&&(Z(t,"extra_blendshapes"),j(n,"FACE_BLENDSHAPES:extra_blendshapes"),this.g.attachProtoListener("extra_blendshapes",(s,o)=>{var a=this.h.faceBlendshapes;this.outputFaceBlendshapes&&(s=qs(s),a.push(xi(s.g()??[]))),D(this,o)}),this.g.attachEmptyPacketListener("extra_blendshapes",s=>{D(this,s)})),this.g.attachProtoListener("left_hand_landmarks",(s,o)=>{ds(s,this.h.leftHandLandmarks),D(this,o)}),this.g.attachEmptyPacketListener("left_hand_landmarks",s=>{D(this,s)}),this.g.attachProtoListener("left_hand_world_landmarks",(s,o)=>{var a=this.h.leftHandWorldLandmarks;s=Yr(s),a.push(Dn(s)),D(this,o)}),this.g.attachEmptyPacketListener("left_hand_world_landmarks",s=>{D(this,s)}),this.g.attachProtoListener("right_hand_landmarks",(s,o)=>{ds(s,this.h.rightHandLandmarks),D(this,o)}),this.g.attachEmptyPacketListener("right_hand_landmarks",s=>{D(this,s)}),this.g.attachProtoListener("right_hand_world_landmarks",(s,o)=>{var a=this.h.rightHandWorldLandmarks;s=Yr(s),a.push(Dn(s)),D(this,o)}),this.g.attachEmptyPacketListener("right_hand_world_landmarks",s=>{D(this,s)}),t=t.g(),this.setGraph(new Uint8Array(t),!0)}};xe.prototype.detectForVideo=xe.prototype.F,xe.prototype.detect=xe.prototype.D,xe.prototype.setOptions=xe.prototype.o,xe.createFromModelPath=function(t,e){return X(xe,t,{baseOptions:{modelAssetPath:e}})},xe.createFromModelBuffer=function(t,e){return X(xe,t,{baseOptions:{modelAssetBuffer:e}})},xe.createFromOptions=function(t,e){return X(xe,t,e)},xe.HAND_CONNECTIONS=Ri,xe.POSE_CONNECTIONS=Uf,xe.FACE_LANDMARKS_LIPS=vi,xe.FACE_LANDMARKS_LEFT_EYE=wi,xe.FACE_LANDMARKS_LEFT_EYEBROW=Ti,xe.FACE_LANDMARKS_LEFT_IRIS=Sf,xe.FACE_LANDMARKS_RIGHT_EYE=ki,xe.FACE_LANDMARKS_RIGHT_EYEBROW=Ei,xe.FACE_LANDMARKS_RIGHT_IRIS=Ff,xe.FACE_LANDMARKS_FACE_OVAL=Ai,xe.FACE_LANDMARKS_CONTOURS=Cf,xe.FACE_LANDMARKS_TESSELATION=Bf;var _t=class extends rt{constructor(t,e){super(new kt(t,e),"input_image","norm_rect",!0),this.j={classifications:[]},$(t=this.h=new df,0,1,e=new ye)}get baseOptions(){return Y(this.h,ye,1)}set baseOptions(t){$(this.h,0,1,t)}o(t){return $(this.h,0,2,xa(t,Y(this.h,ci,2))),this.l(t)}ta(t,e){return this.j={classifications:[]},Et(this,t,e),this.j}ua(t,e,r){return this.j={classifications:[]},qt(this,t,r,e),this.j}m(){var t=new nt;ge(t,"input_image"),ge(t,"norm_rect"),Z(t,"classifications");let e=new lt;Pt(e,rm,this.h);let r=new Ze;ht(r,"mediapipe.tasks.vision.image_classifier.ImageClassifierGraph"),le(r,"IMAGE:input_image"),le(r,"NORM_RECT:norm_rect"),j(r,"CLASSIFICATIONS:classifications"),r.o(e),dt(t,r),this.g.attachProtoListener("classifications",(n,s)=>{this.j=function(o){let a={classifications:sr(o,Wd,1).map(i=>xi(Y(i,Hl,4)?.g()??[],Ut(wt(i,2),0),jt(i,3)))};return Ts(yr(o,2))!=null&&(a.timestampMs=Ut(Ts(yr(o,2)),0)),a}($d(n)),D(this,s)}),this.g.attachEmptyPacketListener("classifications",n=>{D(this,n)}),t=t.g(),this.setGraph(new Uint8Array(t),!0)}};_t.prototype.classifyForVideo=_t.prototype.ua,_t.prototype.classify=_t.prototype.ta,_t.prototype.setOptions=_t.prototype.o,_t.createFromModelPath=function(t,e){return X(_t,t,{baseOptions:{modelAssetPath:e}})},_t.createFromModelBuffer=function(t,e){return X(_t,t,{baseOptions:{modelAssetBuffer:e}})},_t.createFromOptions=function(t,e){return X(_t,t,e)};var it=class extends rt{constructor(t,e){super(new kt(t,e),"image_in","norm_rect",!0),this.h=new mf,this.embeddings={embeddings:[]},$(t=this.h,0,1,e=new ye)}get baseOptions(){return Y(this.h,ye,1)}set baseOptions(t){$(this.h,0,1,t)}o(t){var e=this.h,r=Y(this.h,oc,2);return r=r?r.clone():new oc,t.l2Normalize!==void 0?Gn(r,1,t.l2Normalize):"l2Normalize"in t&&ce(r,1),t.quantize!==void 0?Gn(r,2,t.quantize):"quantize"in t&&ce(r,2),$(e,0,2,r),this.l(t)}Aa(t,e){return Et(this,t,e),this.embeddings}Ba(t,e,r){return qt(this,t,r,e),this.embeddings}m(){var t=new nt;ge(t,"image_in"),ge(t,"norm_rect"),Z(t,"embeddings_out");let e=new lt;Pt(e,nm,this.h);let r=new Ze;ht(r,"mediapipe.tasks.vision.image_embedder.ImageEmbedderGraph"),le(r,"IMAGE:image_in"),le(r,"NORM_RECT:norm_rect"),j(r,"EMBEDDINGS:embeddings_out"),r.o(e),dt(t,r),this.g.attachProtoListener("embeddings_out",(n,s)=>{n=Xd(n),this.embeddings=function(o){return{embeddings:sr(o,Hd,1).map(a=>{let i={headIndex:Ut(wt(a,3),0)??-1,headName:jt(a,4)??""};if(ll(a,sc,Ko(a,1))!==void 0)a=Fr(a=Y(a,sc,Ko(a,1)),1,Tr,Sr()),i.floatEmbedding=a.slice();else{let u=new Uint8Array(0);i.quantizedEmbedding=Y(a,zd,Ko(a,2))?.pa()?.h()??u}return i}),timestampMs:Ut(Ts(yr(o,2)),0)}}(n),D(this,s)}),this.g.attachEmptyPacketListener("embeddings_out",n=>{D(this,n)}),t=t.g(),this.setGraph(new Uint8Array(t),!0)}};it.cosineSimilarity=function(t,e){if(t.floatEmbedding&&e.floatEmbedding)t=lc(t.floatEmbedding,e.floatEmbedding);else{if(!t.quantizedEmbedding||!e.quantizedEmbedding)throw Error("Cannot compute cosine similarity between quantized and float embeddings.");t=lc(cc(t.quantizedEmbedding),cc(e.quantizedEmbedding))}return t},it.prototype.embedForVideo=it.prototype.Ba,it.prototype.embed=it.prototype.Aa,it.prototype.setOptions=it.prototype.o,it.createFromModelPath=function(t,e){return X(it,t,{baseOptions:{modelAssetPath:e}})},it.createFromModelBuffer=function(t,e){return X(it,t,{baseOptions:{modelAssetBuffer:e}})},it.createFromOptions=function(t,e){return X(it,t,e)};var va=class{constructor(t,e,r){this.confidenceMasks=t,this.categoryMask=e,this.qualityScores=r}close(){this.confidenceMasks?.forEach(t=>{t.close()}),this.categoryMask?.close()}};function Bc(t){t.categoryMask=void 0,t.confidenceMasks=void 0,t.qualityScores=void 0}function Uc(t){try{let e=new va(t.confidenceMasks,t.categoryMask,t.qualityScores);if(!t.j)return e;t.j(e)}finally{Qs(t)}}va.prototype.close=va.prototype.close;var Xe=class extends rt{constructor(t,e){super(new kt(t,e),"image_in","norm_rect",!1),this.s=[],this.outputCategoryMask=!1,this.outputConfidenceMasks=!0,this.h=new gi,this.v=new pf,$(this.h,0,3,this.v),$(t=this.h,0,1,e=new ye)}get baseOptions(){return Y(this.h,ye,1)}set baseOptions(t){$(this.h,0,1,t)}o(t){return t.displayNamesLocale!==void 0?ce(this.h,2,an(t.displayNamesLocale)):"displayNamesLocale"in t&&ce(this.h,2),"outputCategoryMask"in t&&(this.outputCategoryMask=t.outputCategoryMask??!1),"outputConfidenceMasks"in t&&(this.outputConfidenceMasks=t.outputConfidenceMasks??!0),super.l(t)}J(){(function(t){let e=sr(t.ea(),Ze,1).filter(r=>jt(r,1).includes("mediapipe.tasks.TensorsToSegmentationCalculator"));if(t.s=[],e.length>1)throw Error("The graph has more than one mediapipe.tasks.TensorsToSegmentationCalculator.");e.length===1&&(Y(e[0],lt,7)?.l()?.g()??new Map).forEach((r,n)=>{t.s[Number(n)]=jt(r,1)})})(this)}segment(t,e,r){let n=typeof e!="function"?e:{};return this.j=typeof e=="function"?e:r,Bc(this),Et(this,t,n),Uc(this)}Ma(t,e,r,n){let s=typeof r!="function"?r:{};return this.j=typeof r=="function"?r:n,Bc(this),qt(this,t,s,e),Uc(this)}Ea(){return this.s}m(){var t=new nt;ge(t,"image_in"),ge(t,"norm_rect");let e=new lt;Pt(e,xf,this.h);let r=new Ze;ht(r,"mediapipe.tasks.vision.image_segmenter.ImageSegmenterGraph"),le(r,"IMAGE:image_in"),le(r,"NORM_RECT:norm_rect"),r.o(e),dt(t,r),Js(this,t),this.outputConfidenceMasks&&(Z(t,"confidence_masks"),j(r,"CONFIDENCE_MASKS:confidence_masks"),Qr(this,"confidence_masks"),this.g.da("confidence_masks",(n,s)=>{this.confidenceMasks=n.map(o=>rn(this,o,!0,!this.j)),D(this,s)}),this.g.attachEmptyPacketListener("confidence_masks",n=>{this.confidenceMasks=[],D(this,n)})),this.outputCategoryMask&&(Z(t,"category_mask"),j(r,"CATEGORY_MASK:category_mask"),Qr(this,"category_mask"),this.g.V("category_mask",(n,s)=>{this.categoryMask=rn(this,n,!1,!this.j),D(this,s)}),this.g.attachEmptyPacketListener("category_mask",n=>{this.categoryMask=void 0,D(this,n)})),Z(t,"quality_scores"),j(r,"QUALITY_SCORES:quality_scores"),this.g.attachFloatVectorListener("quality_scores",(n,s)=>{this.qualityScores=n,D(this,s)}),this.g.attachEmptyPacketListener("quality_scores",n=>{this.categoryMask=void 0,D(this,n)}),t=t.g(),this.setGraph(new Uint8Array(t),!0)}};Xe.prototype.getLabels=Xe.prototype.Ea,Xe.prototype.segmentForVideo=Xe.prototype.Ma,Xe.prototype.segment=Xe.prototype.segment,Xe.prototype.setOptions=Xe.prototype.o,Xe.createFromModelPath=function(t,e){return X(Xe,t,{baseOptions:{modelAssetPath:e}})},Xe.createFromModelBuffer=function(t,e){return X(Xe,t,{baseOptions:{modelAssetBuffer:e}})},Xe.createFromOptions=function(t,e){return X(Xe,t,e)};var wa=class{constructor(t,e,r){this.confidenceMasks=t,this.categoryMask=e,this.qualityScores=r}close(){this.confidenceMasks?.forEach(t=>{t.close()}),this.categoryMask?.close()}};wa.prototype.close=wa.prototype.close;var dm=class extends M{constructor(t){super(t)}},zr=[0,ke,-2],Fs=[0,er,-3,_e,er,-1],Lc=[0,Fs],Pc=[0,Fs,ke,-1],na=class extends M{constructor(t){super(t)}},Oc=[0,er,-1,_e],mm=class extends M{constructor(){super()}},Dc=class extends M{constructor(t){super(t)}},Ta=[1,2,3,4,5,6,7,8,9,10,14,15],Lf=class extends M{constructor(){super()}};Lf.prototype.g=Ys([0,De,[0,Ta,se,Fs,se,[0,Fs,zr],se,Lc,se,[0,Lc,zr],se,Oc,se,[0,er,-3,_e,Lt],se,[0,er,-3,_e],se,[0,ne,er,-2,_e,ke,_e,-1,2,er,zr],se,Pc,se,[0,Pc,zr],er,zr,ne,se,[0,er,-3,_e,zr,-1],se,[0,De,Oc]],ne,[0,ne,ke,-1,_e]]);var Ht=class extends rt{constructor(t,e){super(new kt(t,e),"image_in","norm_rect_in",!1),this.outputCategoryMask=!1,this.outputConfidenceMasks=!0,this.h=new gi,this.s=new pf,$(this.h,0,3,this.s),$(t=this.h,0,1,e=new ye)}get baseOptions(){return Y(this.h,ye,1)}set baseOptions(t){$(this.h,0,1,t)}o(t){return"outputCategoryMask"in t&&(this.outputCategoryMask=t.outputCategoryMask??!1),"outputConfidenceMasks"in t&&(this.outputConfidenceMasks=t.outputConfidenceMasks??!0),super.l(t)}segment(t,e,r,n){let s=typeof r!="function"?r:{};this.j=typeof r=="function"?r:n,this.qualityScores=this.categoryMask=this.confidenceMasks=void 0,r=this.B+1,n=new Lf;let o=new Dc;var a=new dm;if(Yt(a,1,255),$(o,0,12,a),e.keypoint&&e.scribble)throw Error("Cannot provide both keypoint and scribble.");if(e.keypoint){var i=new na;Gn(i,3,!0),G(i,1,e.keypoint.x),G(i,2,e.keypoint.y),Pn(o,5,Ta,i)}else{if(!e.scribble)throw Error("Must provide either a keypoint or a scribble.");for(i of(a=new mm,e.scribble))Gn(e=new na,3,!0),G(e,1,i.x),G(e,2,i.y),Es(a,1,na,e);Pn(o,15,Ta,a)}Es(n,1,Dc,o),this.g.addProtoToStream(n.g(),"drishti.RenderData","roi_in",r),Et(this,t,s);e:{try{let l=new wa(this.confidenceMasks,this.categoryMask,this.qualityScores);if(!this.j){var u=l;break e}this.j(l)}finally{Qs(this)}u=void 0}return u}m(){var t=new nt;ge(t,"image_in"),ge(t,"roi_in"),ge(t,"norm_rect_in");let e=new lt;Pt(e,xf,this.h);let r=new Ze;ht(r,"mediapipe.tasks.vision.interactive_segmenter.InteractiveSegmenterGraph"),le(r,"IMAGE:image_in"),le(r,"ROI:roi_in"),le(r,"NORM_RECT:norm_rect_in"),r.o(e),dt(t,r),Js(this,t),this.outputConfidenceMasks&&(Z(t,"confidence_masks"),j(r,"CONFIDENCE_MASKS:confidence_masks"),Qr(this,"confidence_masks"),this.g.da("confidence_masks",(n,s)=>{this.confidenceMasks=n.map(o=>rn(this,o,!0,!this.j)),D(this,s)}),this.g.attachEmptyPacketListener("confidence_masks",n=>{this.confidenceMasks=[],D(this,n)})),this.outputCategoryMask&&(Z(t,"category_mask"),j(r,"CATEGORY_MASK:category_mask"),Qr(this,"category_mask"),this.g.V("category_mask",(n,s)=>{this.categoryMask=rn(this,n,!1,!this.j),D(this,s)}),this.g.attachEmptyPacketListener("category_mask",n=>{this.categoryMask=void 0,D(this,n)})),Z(t,"quality_scores"),j(r,"QUALITY_SCORES:quality_scores"),this.g.attachFloatVectorListener("quality_scores",(n,s)=>{this.qualityScores=n,D(this,s)}),this.g.attachEmptyPacketListener("quality_scores",n=>{this.categoryMask=void 0,D(this,n)}),t=t.g(),this.setGraph(new Uint8Array(t),!0)}};Ht.prototype.segment=Ht.prototype.segment,Ht.prototype.setOptions=Ht.prototype.o,Ht.createFromModelPath=function(t,e){return X(Ht,t,{baseOptions:{modelAssetPath:e}})},Ht.createFromModelBuffer=function(t,e){return X(Ht,t,{baseOptions:{modelAssetBuffer:e}})},Ht.createFromOptions=function(t,e){return X(Ht,t,e)};var bt=class extends rt{constructor(t,e){super(new kt(t,e),"input_frame_gpu","norm_rect",!1),this.j={detections:[]},$(t=this.h=new yf,0,1,e=new ye)}get baseOptions(){return Y(this.h,ye,1)}set baseOptions(t){$(this.h,0,1,t)}o(t){return t.displayNamesLocale!==void 0?ce(this.h,2,an(t.displayNamesLocale)):"displayNamesLocale"in t&&ce(this.h,2),t.maxResults!==void 0?Yt(this.h,3,t.maxResults):"maxResults"in t&&ce(this.h,3),t.scoreThreshold!==void 0?G(this.h,4,t.scoreThreshold):"scoreThreshold"in t&&ce(this.h,4),t.categoryAllowlist!==void 0?As(this.h,5,t.categoryAllowlist):"categoryAllowlist"in t&&ce(this.h,5),t.categoryDenylist!==void 0?As(this.h,6,t.categoryDenylist):"categoryDenylist"in t&&ce(this.h,6),this.l(t)}D(t,e){return this.j={detections:[]},Et(this,t,e),this.j}F(t,e,r){return this.j={detections:[]},qt(this,t,r,e),this.j}m(){var t=new nt;ge(t,"input_frame_gpu"),ge(t,"norm_rect"),Z(t,"detections");let e=new lt;Pt(e,om,this.h);let r=new Ze;ht(r,"mediapipe.tasks.vision.ObjectDetectorGraph"),le(r,"IMAGE:input_frame_gpu"),le(r,"NORM_RECT:norm_rect"),j(r,"DETECTIONS:detections"),r.o(e),dt(t,r),this.g.attachProtoVectorListener("detections",(n,s)=>{for(let o of n)n=jl(o),this.j.detections.push(bf(n));D(this,s)}),this.g.attachEmptyPacketListener("detections",n=>{D(this,n)}),t=t.g(),this.setGraph(new Uint8Array(t),!0)}};bt.prototype.detectForVideo=bt.prototype.F,bt.prototype.detect=bt.prototype.D,bt.prototype.setOptions=bt.prototype.o,bt.createFromModelPath=async function(t,e){return X(bt,t,{baseOptions:{modelAssetPath:e}})},bt.createFromModelBuffer=function(t,e){return X(bt,t,{baseOptions:{modelAssetBuffer:e}})},bt.createFromOptions=function(t,e){return X(bt,t,e)};var ka=class{constructor(t,e,r){this.landmarks=t,this.worldLandmarks=e,this.segmentationMasks=r}close(){this.segmentationMasks?.forEach(t=>{t.close()})}};function Mc(t){t.landmarks=[],t.worldLandmarks=[],t.segmentationMasks=void 0}function Nc(t){try{let e=new ka(t.landmarks,t.worldLandmarks,t.segmentationMasks);if(!t.s)return e;t.s(e)}finally{Qs(t)}}ka.prototype.close=ka.prototype.close;var ut=class extends rt{constructor(t,e){super(new kt(t,e),"image_in","norm_rect",!1),this.landmarks=[],this.worldLandmarks=[],this.outputSegmentationMasks=!1,$(t=this.h=new _f,0,1,e=new ye),this.v=new ff,$(this.h,0,3,this.v),this.j=new lf,$(this.h,0,2,this.j),Yt(this.j,4,1),G(this.j,2,.5),G(this.v,2,.5),G(this.h,4,.5)}get baseOptions(){return Y(this.h,ye,1)}set baseOptions(t){$(this.h,0,1,t)}o(t){return"numPoses"in t&&Yt(this.j,4,t.numPoses??1),"minPoseDetectionConfidence"in t&&G(this.j,2,t.minPoseDetectionConfidence??.5),"minTrackingConfidence"in t&&G(this.h,4,t.minTrackingConfidence??.5),"minPosePresenceConfidence"in t&&G(this.v,2,t.minPosePresenceConfidence??.5),"outputSegmentationMasks"in t&&(this.outputSegmentationMasks=t.outputSegmentationMasks??!1),this.l(t)}D(t,e,r){let n=typeof e!="function"?e:{};return this.s=typeof e=="function"?e:r,Mc(this),Et(this,t,n),Nc(this)}F(t,e,r,n){let s=typeof r!="function"?r:{};return this.s=typeof r=="function"?r:n,Mc(this),qt(this,t,s,e),Nc(this)}m(){var t=new nt;ge(t,"image_in"),ge(t,"norm_rect"),Z(t,"normalized_landmarks"),Z(t,"world_landmarks"),Z(t,"segmentation_masks");let e=new lt;Pt(e,am,this.h);let r=new Ze;ht(r,"mediapipe.tasks.vision.pose_landmarker.PoseLandmarkerGraph"),le(r,"IMAGE:image_in"),le(r,"NORM_RECT:norm_rect"),j(r,"NORM_LANDMARKS:normalized_landmarks"),j(r,"WORLD_LANDMARKS:world_landmarks"),r.o(e),dt(t,r),Js(this,t),this.g.attachProtoVectorListener("normalized_landmarks",(n,s)=>{this.landmarks=[];for(let o of n)n=jn(o),this.landmarks.push(Zs(n));D(this,s)}),this.g.attachEmptyPacketListener("normalized_landmarks",n=>{this.landmarks=[],D(this,n)}),this.g.attachProtoVectorListener("world_landmarks",(n,s)=>{this.worldLandmarks=[];for(let o of n)n=Yr(o),this.worldLandmarks.push(Dn(n));D(this,s)}),this.g.attachEmptyPacketListener("world_landmarks",n=>{this.worldLandmarks=[],D(this,n)}),this.outputSegmentationMasks&&(j(r,"SEGMENTATION_MASK:segmentation_masks"),Qr(this,"segmentation_masks"),this.g.da("segmentation_masks",(n,s)=>{this.segmentationMasks=n.map(o=>rn(this,o,!0,!this.s)),D(this,s)}),this.g.attachEmptyPacketListener("segmentation_masks",n=>{this.segmentationMasks=[],D(this,n)})),t=t.g(),this.setGraph(new Uint8Array(t),!0)}};ut.prototype.detectForVideo=ut.prototype.F,ut.prototype.detect=ut.prototype.D,ut.prototype.setOptions=ut.prototype.o,ut.createFromModelPath=function(t,e){return X(ut,t,{baseOptions:{modelAssetPath:e}})},ut.createFromModelBuffer=function(t,e){return X(ut,t,{baseOptions:{modelAssetBuffer:e}})},ut.createFromOptions=function(t,e){return X(ut,t,e)},ut.POSE_CONNECTIONS=Uf;var Of=(t,e)=>{let r={},n={},s={};for(let o of Object.keys(t))Object.prototype.hasOwnProperty.call(t,o)&&(Object.prototype.hasOwnProperty.call(e,o)?Ii(t[o],e[o])||(s[o]={old:t[o],new:e[o]}):n[o]=t[o]);for(let o of Object.keys(e))Object.prototype.hasOwnProperty.call(e,o)&&!Object.prototype.hasOwnProperty.call(t,o)&&(r[o]=e[o]);return{added:r,removed:n,changed:s}},Ii=(t,e)=>{if(Object.is(t,e))return!0;if(typeof t!="object"||typeof e!="object"||t===null||e===null)return!1;let r=Array.isArray(t),n=Array.isArray(e);if(r!==n)return!1;if(r){let i=t,u=e;if(i.length!==u.length)return!1;for(let l=0;l<i.length;l++)if(!Ii(i[l],u[l]))return!1;return!0}if(!Pf(t)||!Pf(e))return!1;let s=t,o=e,a=Object.keys(s);if(a.length!==Object.keys(o).length)return!1;for(let i=0;i<a.length;i++){let u=a[i];if(!u||!Object.prototype.hasOwnProperty.call(o,u)||!Ii(s[u],o[u]))return!1}return!0},Pf=t=>typeof t=="object"&&t!==null&&!Array.isArray(t)&&Object.getPrototypeOf(t)===Object.prototype;var pm="utils/memoize/noValue",K1=Symbol(pm);var Si=t=>t;var Fi=(t,...e)=>{let r=e.reduce((n,s)=>o=>s(n(o)),Si);return(...n)=>r(t(...n))};var gm=t=>`(${t})`;var Df=t=>gm(`?:${t}`),xm=t=>`${Df(t)}?`,ym=t=>`${Df(t)}*`;var _m=t=>`^${t}`,bm=t=>`${t}$`,vm=t=>typeof t=="function",wm=t=>e=>vm(e)?e(t):e;var Tm=()=>t=>t,ro=(t,e=Tm)=>r=>n=>Fi(wm(n),e(n),t)(r);var rg=ro(t=>xm(t)),ng=ro(t=>ym(t));var sg=ro(t=>_m(t)),og=ro(t=>bm(t));var F=(t,e="AssertError")=>{if(!t)throw new Error(e,{cause:t});return t};var Mf=[.5,.42],mn=432,pn=768,Ci=[.2,.8],Nf=5,qn=2,Ee={Closed:"closed",Closing:"closing",Destroyed:"destroyed",Destroying:"destroying",Error:"Error",Idle:"idle",New:"new",Opened:"opened",Opening:"opening",Processing:"processing",Updated:"updated",Updating:"updating"},Gf={None:"none",Blur:"blur",Overlay:"overlay"},Vf={WebGL:"webgl",WebGPU:"webgpu"},O={ContextCreationError:"ContextCreationError",ContextLost:"ContextLost",ContextRestored:"ContextRestored",Error:"Error",ProcessorRestarted:"ProcessorRestarted",SamplingError:"SamplingError"};var Em=t=>!!(typeof t=="string"&&Object.values(O).includes(t)),no=t=>Em(t)?t:O.Error,so=t=>t instanceof Error?t.message:String(t),oo=t=>{let e=new Set(Object.keys(t));return r=>{for(let n in r)e.has(n)&&typeof t[n]==typeof r[n]&&(t[n]=r[n])}},Am="ImageFetchError",Rm=t=>t?t.toLowerCase().startsWith("image/"):!1,Wf=t=>{let e=new Map(t),r=new Set,n=async(a,i)=>{let u=await fetch(a,{signal:i});if(u.ok&&Rm(u.headers.get("content-type"))){let l=await u.blob();return await createImageBitmap(l)}},s=async(a,i)=>{let u=e.get(a);if(!u){if(r.has(a))return null;r.add(a);try{let l=await n(a,i);if(l)return e.set(a,l),l}catch(l){if(l instanceof Error){if(l.name!=="AbortError")throw new Error(Am,{cause:l});return}throw l}finally{r.delete(a)}}return u},o=a=>(e.get(a)?.close(),e.delete(a));return{tryFetchingImage:s,setImage:(a,i)=>{e.has(a)&&o(a),e.set(a,i)},getImage:a=>e.get(a)??null,removeImage:o,clear:()=>{for(let a of e.values())a.close();e.clear()}}},At=(t,e)=>r=>Math.min(Math.max(r,t),e);var gn=t=>{let e={};return new Proxy(e,{get(r,n,s){return r[n]||(r[n]=t[n]?.(e)),Reflect.get(r,n,s)}})},$f=(t,e,r)=>{let n=a=>{a.preventDefault(),r?.(),e.contextLost(a.statusMessage)},s=a=>{e.contextRestored(a.statusMessage)},o=a=>{e.contextCreationError(a.statusMessage)};return t.addEventListener("webglcontextlost",n),t.addEventListener("webglcontextrestored",s),t.addEventListener("webglcontextcreationerror",o),()=>{t.removeEventListener("webglcontextlost",n),t.removeEventListener("webglcontextrestored",s),t.removeEventListener("webglcontextcreationerror",o)}};function zf(t,e){let r=0,n=0;for(let s=0;s<t.length;s++){let o=t[s]>=128,a=e[s]>=128;o&&a&&r++,(o||a)&&n++}return n?r/n:0}function Hf(t,e,r,n){let s=1,o=[0];function a(l){return o[l]===void 0?l:(o[l]!==l&&(o[l]=a(o[l])),o[l])}function i(l,c){!l||!c||(l=a(l),c=a(c),l!==c&&(o[c]=l))}for(let l=0;l<n;l++)for(let c=0;c<r;c++){let f=l*r+c;if(t[f]<128){e[f]=0;continue}let d=c>0?e[f-1]:0,p=l>0?e[f-r]:0,v=c>0&&l>0?e[f-r-1]:0,A=c<r-1&&l>0?e[f-r+1]:0,w=d||p||v||A;w||(w=s++,o[w]=w),e[f]=w,d&&d!==w&&i(w,d),p&&p!==w&&i(w,p),v&&v!==w&&i(w,v),A&&A!==w&&i(w,A)}for(let l=0;l<e.length;l++){let c=e[l];e[l]=c?a(c):0}let u=new Map;for(let l=0;l<n;l++)for(let c=0;c<r;c++){let f=e[l*r+c];if(!f)continue;let d=u.get(f)??{sumX:0,sumY:0,count:0,minX:r,minY:n,maxX:-1,maxY:-1};d.sumX+=c,d.sumY+=l,d.count++,c<d.minX&&(d.minX=c),c>d.maxX&&(d.maxX=c),l<d.minY&&(d.minY=l),l>d.maxY&&(d.maxY=l),u.set(f,d)}return u}function Xf(t,e,r,n,s){let o=t.count,a=t.maxY-t.minY+1,i=t.sumX/t.count,u=t.sumY/t.count,l=(i-r.centerX)**2+(u-r.centerY)**2,c=1-Math.min(1,Math.sqrt(l)/Math.max(n,s)),f=o/(n*s),d=a/s;return r.iou*e+r.area*f+r.height*d+r.center*c}var nu=(t,e)=>((t+e-1)/e|0)*e;function Im(t){return Object.keys(t)}function Sm(t,e){return new Array(t).fill(0).map((r,n)=>e(n))}var jf=t=>ArrayBuffer.isView(t)&&!(t instanceof DataView),Jf=t=>t,q=Jf({i32:{numElements:1,align:4,size:4,type:"i32",View:Int32Array},u32:{numElements:1,align:4,size:4,type:"u32",View:Uint32Array},f32:{numElements:1,align:4,size:4,type:"f32",View:Float32Array},f16:{numElements:1,align:2,size:2,type:"u16",View:Uint16Array},vec2f:{numElements:2,align:8,size:8,type:"f32",View:Float32Array},vec2i:{numElements:2,align:8,size:8,type:"i32",View:Int32Array},vec2u:{numElements:2,align:8,size:8,type:"u32",View:Uint32Array},vec2h:{numElements:2,align:4,size:4,type:"u16",View:Uint16Array},vec3i:{numElements:3,align:16,size:12,type:"i32",View:Int32Array},vec3u:{numElements:3,align:16,size:12,type:"u32",View:Uint32Array},vec3f:{numElements:3,align:16,size:12,type:"f32",View:Float32Array},vec3h:{numElements:3,align:8,size:6,type:"u16",View:Uint16Array},vec4i:{numElements:4,align:16,size:16,type:"i32",View:Int32Array},vec4u:{numElements:4,align:16,size:16,type:"u32",View:Uint32Array},vec4f:{numElements:4,align:16,size:16,type:"f32",View:Float32Array},vec4h:{numElements:4,align:8,size:8,type:"u16",View:Uint16Array},mat2x2f:{numElements:4,align:8,size:16,type:"f32",View:Float32Array},mat2x2h:{numElements:4,align:4,size:8,type:"u16",View:Uint16Array},mat3x2f:{numElements:6,align:8,size:24,type:"f32",View:Float32Array},mat3x2h:{numElements:6,align:4,size:12,type:"u16",View:Uint16Array},mat4x2f:{numElements:8,align:8,size:32,type:"f32",View:Float32Array},mat4x2h:{numElements:8,align:4,size:16,type:"u16",View:Uint16Array},mat2x3f:{numElements:8,align:16,size:32,pad:[3,1],type:"f32",View:Float32Array},mat2x3h:{numElements:8,align:8,size:16,pad:[3,1],type:"u16",View:Uint16Array},mat3x3f:{numElements:12,align:16,size:48,pad:[3,1],type:"f32",View:Float32Array},mat3x3h:{numElements:12,align:8,size:24,pad:[3,1],type:"u16",View:Uint16Array},mat4x3f:{numElements:16,align:16,size:64,pad:[3,1],type:"f32",View:Float32Array},mat4x3h:{numElements:16,align:8,size:32,pad:[3,1],type:"u16",View:Uint16Array},mat2x4f:{numElements:8,align:16,size:32,type:"f32",View:Float32Array},mat2x4h:{numElements:8,align:8,size:16,type:"u16",View:Uint16Array},mat3x4f:{numElements:12,align:16,size:48,pad:[3,1],type:"f32",View:Float32Array},mat3x4h:{numElements:12,align:8,size:24,pad:[3,1],type:"u16",View:Uint16Array},mat4x4f:{numElements:16,align:16,size:64,type:"f32",View:Float32Array},mat4x4h:{numElements:16,align:8,size:32,type:"u16",View:Uint16Array},bool:{numElements:0,align:1,size:0,type:"bool",View:Uint32Array}}),kn=Jf({...q,"atomic<i32>":q.i32,"atomic<u32>":q.u32,"vec2<i32>":q.vec2i,"vec2<u32>":q.vec2u,"vec2<f32>":q.vec2f,"vec2<f16>":q.vec2h,"vec3<i32>":q.vec3i,"vec3<u32>":q.vec3u,"vec3<f32>":q.vec3f,"vec3<f16>":q.vec3h,"vec4<i32>":q.vec4i,"vec4<u32>":q.vec4u,"vec4<f32>":q.vec4f,"vec4<f16>":q.vec4h,"mat2x2<f32>":q.mat2x2f,"mat2x2<f16>":q.mat2x2h,"mat3x2<f32>":q.mat3x2f,"mat3x2<f16>":q.mat3x2h,"mat4x2<f32>":q.mat4x2f,"mat4x2<f16>":q.mat4x2h,"mat2x3<f32>":q.mat2x3f,"mat2x3<f16>":q.mat2x3h,"mat3x3<f32>":q.mat3x3f,"mat3x3<f16>":q.mat3x3h,"mat4x3<f32>":q.mat4x3f,"mat4x3<f16>":q.mat4x3h,"mat2x4<f32>":q.mat2x4f,"mat2x4<f16>":q.mat2x4h,"mat3x4<f32>":q.mat3x4f,"mat3x4<f16>":q.mat3x4h,"mat4x4<f32>":q.mat4x4f,"mat4x4<f16>":q.mat4x4h}),Fm=Im(kn);function Cm(t=[],e){let r=new Set;for(let n of Fm){let s=kn[n];r.has(s)||(r.add(s),s.flatten=t.includes(n)?e:!e)}}Cm();function Bm(t){let e=t;if(e.elementType)return e.size;{let n=t,s=e.numElements||1;if(n.fields)return t.size*s;{let o=t,{align:a}=kn[o.type];return s>1?nu(t.size,a)*s:t.size}}}function Yf(t,e,r,n){let{size:s,type:o}=t;try{let{View:a,align:i,size:u}=kn[o],l=n!==void 0,c=l?nu(s,i):u,f=c/a.BYTES_PER_ELEMENT,d=l?n===0?(e.byteLength-r)/c:n:1;return new a(e,r,f*d)}catch{throw new Error(`unknown type: ${o}`)}}function Um(t){return!t.fields&&!t.elementType}function Lm(t,e,r){let n=r||0,s=e||new ArrayBuffer(Bm(t)),o=(a,i)=>{let u=a,l=u.elementType;if(l){if(Um(l)&&kn[l.type].flatten)return Yf(l,s,i,u.numElements);{let{size:c}=Qf(a),f=u.numElements===0?(s.byteLength-i)/c:u.numElements;return Sm(f,d=>o(l,i+c*d))}}else{if(typeof a=="string")throw Error("unreachable");{let c=a.fields;if(c){let f={};for(let[d,{type:p,offset:v}]of Object.entries(c))f[d]=o(p,i+v);return f}else return Yf(a,s,i)}}};return{views:o(t,n),arrayBuffer:s}}function Oi(t,e){if(t!==void 0)if(jf(e)){let r=e;if(r.length===1&&typeof t=="number")r[0]=t;else if(Array.isArray(t[0])||jf(t[0])){let n=t[0].length,s=n===3?4:n;for(let o=0;o<t.length;++o){let a=o*s;r.set(t[o],a)}}else r.set(t)}else if(Array.isArray(e)){let r=e;t.forEach((n,s)=>{Oi(n,r[s])})}else{let r=e;for(let[n,s]of Object.entries(t)){let o=r[n];o&&Oi(s,o)}}}function xt(t,e,r=0){let n=t,s=n.group===void 0?t:n.typeDefinition,o=Lm(s,e,r);return{...o,set(a){Oi(a,o.views)}}}function Di(t){let r=t.elementType;if(r)return Di(r);let s=t.fields;if(s)return Object.values(s).reduce((i,{type:u})=>Math.max(i,Di(u)),0);let{type:o}=t,{align:a}=kn[o];return a}function Qf(t){let r=t.elementType;if(r){let o=r.size,a=Di(r);return{unalignedSize:o,align:a,size:nu(o,a)}}let s=t.fields;if(s){let o=Object.values(s).pop();if(o.type.size===0)return Qf(o.type)}return{size:0,unalignedSize:0,align:1}}var st=class{constructor(e,r){this.name=e,this.attributes=r,this.size=0}get isArray(){return!1}get isStruct(){return!1}get isTemplate(){return!1}get isPointer(){return!1}getTypeName(){return this.name}},ao=class{constructor(e,r,n){this.name=e,this.type=r,this.attributes=n,this.offset=0,this.size=0}get isArray(){return this.type.isArray}get isStruct(){return this.type.isStruct}get isTemplate(){return this.type.isTemplate}get align(){return this.type.isStruct?this.type.align:0}get members(){return this.type.isStruct?this.type.members:null}get format(){return this.type.isArray||this.type.isTemplate?this.type.format:null}get count(){return this.type.isArray?this.type.count:0}get stride(){return this.type.isArray?this.type.stride:this.size}},Kt=class extends st{constructor(e,r){super(e,r),this.members=[],this.align=0,this.startLine=-1,this.endLine=-1,this.inUse=!1}get isStruct(){return!0}},Zt=class extends st{constructor(e,r){super(e,r),this.count=0,this.stride=0}get isArray(){return!0}getTypeName(){return`array<${this.format.getTypeName()}, ${this.count}>`}},Zn=class extends st{constructor(e,r,n){super(e,n),this.format=r}get isPointer(){return!0}getTypeName(){return`&${this.format.getTypeName()}`}},ur=class extends st{constructor(e,r,n,s){super(e,n),this.format=r,this.access=s}get isTemplate(){return!0}getTypeName(){let e=this.name;if(this.format!==null){if(e==="vec2"||e==="vec3"||e==="vec4"||e==="mat2x2"||e==="mat2x3"||e==="mat2x4"||e==="mat3x2"||e==="mat3x3"||e==="mat3x4"||e==="mat4x2"||e==="mat4x3"||e==="mat4x4"){if(this.format.name==="f32")return e+="f",e;if(this.format.name==="i32")return e+="i",e;if(this.format.name==="u32")return e+="u",e;if(this.format.name==="bool")return e+="b",e;if(this.format.name==="f16")return e+="h",e}e+=`<${this.format.name}>`}else if(e==="vec2"||e==="vec3"||e==="vec4")return e;return e}},Ie;(t=>{t[t.Uniform=0]="Uniform",t[t.Storage=1]="Storage",t[t.Immediate=2]="Immediate",t[t.Texture=3]="Texture",t[t.Sampler=4]="Sampler",t[t.StorageTexture=5]="StorageTexture"})(Ie||(Ie={}));var Or=class{constructor(e,r,n,s,o,a,i){this.relations=null,this.name=e,this.type=r,this.group=n,this.binding=s,this.attributes=o,this.resourceType=a,this.access=i}get isArray(){return this.type.isArray}get isStruct(){return this.type.isStruct}get isTemplate(){return this.type.isTemplate}get size(){return this.type.size}get align(){return this.type.isStruct?this.type.align:0}get members(){return this.type.isStruct?this.type.members:null}get format(){return this.type.isArray||this.type.isTemplate?this.type.format:null}get count(){return this.type.isArray?this.type.count:0}get stride(){return this.type.isArray?this.type.stride:this.size}},Mi=class{constructor(e,r){this.name=e,this.type=r}},Ni=class{constructor(e,r,n,s){this.name=e,this.type=r,this.locationType=n,this.location=s,this.interpolation=null}},io=class{constructor(e,r,n,s){this.name=e,this.type=r,this.locationType=n,this.location=s}},Gi=class{constructor(e,r,n,s){this.name=e,this.type=r,this.attributes=n,this.id=s}},Vi=class{constructor(e,r,n){this.name=e,this.type=r,this.attributes=n}},Wi=class{constructor(e,r=null,n){this.stage=null,this.inputs=[],this.outputs=[],this.arguments=[],this.returnType=null,this.resources=[],this.overrides=[],this.startLine=-1,this.endLine=-1,this.inUse=!1,this.calls=new Set,this.name=e,this.stage=r,this.attributes=n}},$i=class{constructor(){this.vertex=[],this.fragment=[],this.compute=[]}};function Pm(t){var e=(32768&t)>>15,r=(31744&t)>>10,n=1023&t;return r==0?(e?-1:1)*Math.pow(2,-14)*(n/Math.pow(2,10)):r==31?n?NaN:1/0*(e?-1:1):(e?-1:1)*Math.pow(2,r-15)*(1+n/Math.pow(2,10))}var eh=new Float32Array(1),Om=new Int32Array(eh.buffer),Ye=new Uint16Array(1);function Dm(t){eh[0]=t;let e=Om[0],r=e>>31&1,n=e>>23&255,s=8388607&e;if(n===255)return Ye[0]=r<<15|31744|(s!==0?512:0),Ye[0];if(n===0){if(s===0)return Ye[0]=r<<15,Ye[0];s|=8388608;let o=113;for(;!(8388608&s);)s<<=1,o--;return n=127-o,s&=8388607,n>0?(s=(s>>126-n)+(s>>127-n&1),Ye[0]=r<<15|n<<10|s>>13,Ye[0]):(Ye[0]=r<<15,Ye[0])}return n=n-127+15,n>=31?(Ye[0]=r<<15|31744,Ye[0]):n<=0?n<-10?(Ye[0]=r<<15,Ye[0]):(s=(8388608|s)>>1-n,Ye[0]=r<<15|s>>13,Ye[0]):(s>>=13,Ye[0]=r<<15|n<<10|s,Ye[0])}var su=new Uint32Array(1),th=new Float32Array(su.buffer,0,1);function qf(t){let e=112+(t>>6&31)<<23|(63&t)<<17;return su[0]=e,th[0]}function Mm(t,e,r,n,s,o,a,i,u){let l=n*(a>>=s)*(o>>=s)+r*a+e*i;switch(u){case"r8unorm":return[Q(t,l,"8unorm",1)[0]];case"r8snorm":return[Q(t,l,"8snorm",1)[0]];case"r8uint":return[Q(t,l,"8uint",1)[0]];case"r8sint":return[Q(t,l,"8sint",1)[0]];case"rg8unorm":{let c=Q(t,l,"8unorm",2);return[c[0],c[1]]}case"rg8snorm":{let c=Q(t,l,"8snorm",2);return[c[0],c[1]]}case"rg8uint":{let c=Q(t,l,"8uint",2);return[c[0],c[1]]}case"rg8sint":{let c=Q(t,l,"8sint",2);return[c[0],c[1]]}case"rgba8unorm-srgb":case"rgba8unorm":{let c=Q(t,l,"8unorm",4);return[c[0],c[1],c[2],c[3]]}case"rgba8snorm":{let c=Q(t,l,"8snorm",4);return[c[0],c[1],c[2],c[3]]}case"rgba8uint":{let c=Q(t,l,"8uint",4);return[c[0],c[1],c[2],c[3]]}case"rgba8sint":{let c=Q(t,l,"8sint",4);return[c[0],c[1],c[2],c[3]]}case"bgra8unorm-srgb":case"bgra8unorm":{let c=Q(t,l,"8unorm",4);return[c[2],c[1],c[0],c[3]]}case"r16uint":return[Q(t,l,"16uint",1)[0]];case"r16sint":return[Q(t,l,"16sint",1)[0]];case"r16float":return[Q(t,l,"16float",1)[0]];case"rg16uint":{let c=Q(t,l,"16uint",2);return[c[0],c[1]]}case"rg16sint":{let c=Q(t,l,"16sint",2);return[c[0],c[1]]}case"rg16float":{let c=Q(t,l,"16float",2);return[c[0],c[1]]}case"rgba16uint":{let c=Q(t,l,"16uint",4);return[c[0],c[1],c[2],c[3]]}case"rgba16sint":{let c=Q(t,l,"16sint",4);return[c[0],c[1],c[2],c[3]]}case"rgba16float":{let c=Q(t,l,"16float",4);return[c[0],c[1],c[2],c[3]]}case"r32uint":return[Q(t,l,"32uint",1)[0]];case"r32sint":return[Q(t,l,"32sint",1)[0]];case"depth16unorm":case"depth24plus":case"depth24plus-stencil8":case"depth32float":case"depth32float-stencil8":case"r32float":return[Q(t,l,"32float",1)[0]];case"rg32uint":{let c=Q(t,l,"32uint",2);return[c[0],c[1]]}case"rg32sint":{let c=Q(t,l,"32sint",2);return[c[0],c[1]]}case"rg32float":{let c=Q(t,l,"32float",2);return[c[0],c[1]]}case"rgba32uint":{let c=Q(t,l,"32uint",4);return[c[0],c[1],c[2],c[3]]}case"rgba32sint":{let c=Q(t,l,"32sint",4);return[c[0],c[1],c[2],c[3]]}case"rgba32float":{let c=Q(t,l,"32float",4);return[c[0],c[1],c[2],c[3]]}case"rg11b10ufloat":{let c=new Uint32Array(t.buffer,l,1)[0],f=(4192256&c)>>11,d=(4290772992&c)>>22;return[qf(2047&c),qf(f),function(p){let v=112+(p>>5&31)<<23|(31&p)<<18;return su[0]=v,th[0]}(d),1]}}return null}function Q(t,e,r,n){let s=[0,0,0,0];for(let o=0;o<n;++o)switch(r){case"8unorm":s[o]=t[e]/255,e++;break;case"8snorm":s[o]=t[e]/255*2-1,e++;break;case"8uint":s[o]=t[e],e++;break;case"8sint":s[o]=t[e]-127,e++;break;case"16uint":s[o]=t[e]|t[e+1]<<8,e+=2;break;case"16sint":s[o]=(t[e]|t[e+1]<<8)-32768,e+=2;break;case"16float":s[o]=Pm(t[e]|t[e+1]<<8),e+=2;break;case"32uint":case"32sint":s[o]=t[e]|t[e+1]<<8|t[e+2]<<16|t[e+3]<<24,e+=4;break;case"32float":s[o]=new Float32Array(t.buffer,e,1)[0],e+=4}return s}function ee(t,e,r,n,s){for(let o=0;o<n;++o)switch(r){case"8unorm":t[e]=255*s[o],e++;break;case"8snorm":t[e]=.5*(s[o]+1)*255,e++;break;case"8uint":t[e]=s[o],e++;break;case"8sint":t[e]=s[o]+127,e++;break;case"16uint":new Uint16Array(t.buffer,e,1)[0]=s[o],e+=2;break;case"16sint":new Int16Array(t.buffer,e,1)[0]=s[o],e+=2;break;case"16float":{let a=Dm(s[o]);new Uint16Array(t.buffer,e,1)[0]=a,e+=2;break}case"32uint":new Uint32Array(t.buffer,e,1)[0]=s[o],e+=4;break;case"32sint":new Int32Array(t.buffer,e,1)[0]=s[o],e+=4;break;case"32float":new Float32Array(t.buffer,e,1)[0]=s[o],e+=4}return s}var Bi={r8unorm:{bytesPerBlock:1,blockWidth:1,blockHeight:1,isCompressed:!1,channels:1},r8snorm:{bytesPerBlock:1,blockWidth:1,blockHeight:1,isCompressed:!1,channels:1},r8uint:{bytesPerBlock:1,blockWidth:1,blockHeight:1,isCompressed:!1,channels:1},r8sint:{bytesPerBlock:1,blockWidth:1,blockHeight:1,isCompressed:!1,channels:1},rg8unorm:{bytesPerBlock:2,blockWidth:1,blockHeight:1,isCompressed:!1,channels:2},rg8snorm:{bytesPerBlock:2,blockWidth:1,blockHeight:1,isCompressed:!1,channels:2},rg8uint:{bytesPerBlock:2,blockWidth:1,blockHeight:1,isCompressed:!1,channels:2},rg8sint:{bytesPerBlock:2,blockWidth:1,blockHeight:1,isCompressed:!1,channels:2},rgba8unorm:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},"rgba8unorm-srgb":{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},rgba8snorm:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},rgba8uint:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},rgba8sint:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},bgra8unorm:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},"bgra8unorm-srgb":{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},r16uint:{bytesPerBlock:2,blockWidth:1,blockHeight:1,isCompressed:!1,channels:1},r16sint:{bytesPerBlock:2,blockWidth:1,blockHeight:1,isCompressed:!1,channels:1},r16float:{bytesPerBlock:2,blockWidth:1,blockHeight:1,isCompressed:!1,channels:1},rg16uint:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:2},rg16sint:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:2},rg16float:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:2},rgba16uint:{bytesPerBlock:8,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},rgba16sint:{bytesPerBlock:8,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},rgba16float:{bytesPerBlock:8,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},r32uint:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:1},r32sint:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:1},r32float:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:1},rg32uint:{bytesPerBlock:8,blockWidth:1,blockHeight:1,isCompressed:!1,channels:2},rg32sint:{bytesPerBlock:8,blockWidth:1,blockHeight:1,isCompressed:!1,channels:2},rg32float:{bytesPerBlock:8,blockWidth:1,blockHeight:1,isCompressed:!1,channels:2},rgba32uint:{bytesPerBlock:16,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},rgba32sint:{bytesPerBlock:16,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},rgba32float:{bytesPerBlock:16,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},rgb10a2uint:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},rgb10a2unorm:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},rg11b10ufloat:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},stencil8:{bytesPerBlock:1,blockWidth:1,blockHeight:1,isCompressed:!1,isDepthStencil:!0,hasDepth:!1,hasStencil:!0,channels:1},depth16unorm:{bytesPerBlock:2,blockWidth:1,blockHeight:1,isCompressed:!1,isDepthStencil:!0,hasDepth:!0,hasStencil:!1,channels:1},depth24plus:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,isDepthStencil:!0,hasDepth:!0,hasStencil:!1,depthOnlyFormat:"depth32float",channels:1},"depth24plus-stencil8":{bytesPerBlock:8,blockWidth:1,blockHeight:1,isCompressed:!1,isDepthStencil:!0,hasDepth:!0,hasStencil:!0,depthOnlyFormat:"depth32float",channels:1},depth32float:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,isDepthStencil:!0,hasDepth:!0,hasStencil:!1,channels:1},"depth32float-stencil8":{bytesPerBlock:8,blockWidth:1,blockHeight:1,isCompressed:!1,isDepthStencil:!0,hasDepth:!0,hasStencil:!0,stencilOnlyFormat:"depth32float",channels:1},rgb9e5ufloat:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},"bc1-rgba-unorm":{bytesPerBlock:8,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},"bc1-rgba-unorm-srgb":{bytesPerBlock:8,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},"bc2-rgba-unorm":{bytesPerBlock:16,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},"bc2-rgba-unorm-srgb":{bytesPerBlock:16,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},"bc3-rgba-unorm":{bytesPerBlock:16,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},"bc3-rgba-unorm-srgb":{bytesPerBlock:16,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},"bc4-r-unorm":{bytesPerBlock:8,blockWidth:4,blockHeight:4,isCompressed:!0,channels:1},"bc4-r-snorm":{bytesPerBlock:8,blockWidth:4,blockHeight:4,isCompressed:!0,channels:1},"bc5-rg-unorm":{bytesPerBlock:16,blockWidth:4,blockHeight:4,isCompressed:!0,channels:2},"bc5-rg-snorm":{bytesPerBlock:16,blockWidth:4,blockHeight:4,isCompressed:!0,channels:2},"bc6h-rgb-ufloat":{bytesPerBlock:16,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},"bc6h-rgb-float":{bytesPerBlock:16,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},"bc7-rgba-unorm":{bytesPerBlock:16,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},"bc7-rgba-unorm-srgb":{bytesPerBlock:16,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},"etc2-rgb8unorm":{bytesPerBlock:8,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},"etc2-rgb8unorm-srgb":{bytesPerBlock:8,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},"etc2-rgb8a1unorm":{bytesPerBlock:8,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},"etc2-rgb8a1unorm-srgb":{bytesPerBlock:8,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},"etc2-rgba8unorm":{bytesPerBlock:16,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},"etc2-rgba8unorm-srgb":{bytesPerBlock:16,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},"eac-r11unorm":{bytesPerBlock:8,blockWidth:1,blockHeight:1,isCompressed:!0,channels:1},"eac-r11snorm":{bytesPerBlock:8,blockWidth:1,blockHeight:1,isCompressed:!0,channels:1},"eac-rg11unorm":{bytesPerBlock:16,blockWidth:1,blockHeight:1,isCompressed:!0,channels:2},"eac-rg11snorm":{bytesPerBlock:16,blockWidth:1,blockHeight:1,isCompressed:!0,channels:2},"astc-4x4-unorm":{bytesPerBlock:16,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},"astc-4x4-unorm-srgb":{bytesPerBlock:16,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},"astc-5x4-unorm":{bytesPerBlock:16,blockWidth:5,blockHeight:4,isCompressed:!0,channels:4},"astc-5x4-unorm-srgb":{bytesPerBlock:16,blockWidth:5,blockHeight:4,isCompressed:!0,channels:4},"astc-5x5-unorm":{bytesPerBlock:16,blockWidth:5,blockHeight:5,isCompressed:!0,channels:4},"astc-5x5-unorm-srgb":{bytesPerBlock:16,blockWidth:5,blockHeight:5,isCompressed:!0,channels:4},"astc-6x5-unorm":{bytesPerBlock:16,blockWidth:6,blockHeight:5,isCompressed:!0,channels:4},"astc-6x5-unorm-srgb":{bytesPerBlock:16,blockWidth:6,blockHeight:5,isCompressed:!0,channels:4},"astc-6x6-unorm":{bytesPerBlock:16,blockWidth:6,blockHeight:6,isCompressed:!0,channels:4},"astc-6x6-unorm-srgb":{bytesPerBlock:16,blockWidth:6,blockHeight:6,isCompressed:!0,channels:4},"astc-8x5-unorm":{bytesPerBlock:16,blockWidth:8,blockHeight:5,isCompressed:!0,channels:4},"astc-8x5-unorm-srgb":{bytesPerBlock:16,blockWidth:8,blockHeight:5,isCompressed:!0,channels:4},"astc-8x6-unorm":{bytesPerBlock:16,blockWidth:8,blockHeight:6,isCompressed:!0,channels:4},"astc-8x6-unorm-srgb":{bytesPerBlock:16,blockWidth:8,blockHeight:6,isCompressed:!0,channels:4},"astc-8x8-unorm":{bytesPerBlock:16,blockWidth:8,blockHeight:8,isCompressed:!0,channels:4},"astc-8x8-unorm-srgb":{bytesPerBlock:16,blockWidth:8,blockHeight:8,isCompressed:!0,channels:4},"astc-10x5-unorm":{bytesPerBlock:16,blockWidth:10,blockHeight:5,isCompressed:!0,channels:4},"astc-10x5-unorm-srgb":{bytesPerBlock:16,blockWidth:10,blockHeight:5,isCompressed:!0,channels:4},"astc-10x6-unorm":{bytesPerBlock:16,blockWidth:10,blockHeight:6,isCompressed:!0,channels:4},"astc-10x6-unorm-srgb":{bytesPerBlock:16,blockWidth:10,blockHeight:6,isCompressed:!0,channels:4},"astc-10x8-unorm":{bytesPerBlock:16,blockWidth:10,blockHeight:8,isCompressed:!0,channels:4},"astc-10x8-unorm-srgb":{bytesPerBlock:16,blockWidth:10,blockHeight:8,isCompressed:!0,channels:4},"astc-10x10-unorm":{bytesPerBlock:16,blockWidth:10,blockHeight:10,isCompressed:!0,channels:4},"astc-10x10-unorm-srgb":{bytesPerBlock:16,blockWidth:10,blockHeight:10,isCompressed:!0,channels:4},"astc-12x10-unorm":{bytesPerBlock:16,blockWidth:12,blockHeight:10,isCompressed:!0,channels:4},"astc-12x10-unorm-srgb":{bytesPerBlock:16,blockWidth:12,blockHeight:10,isCompressed:!0,channels:4},"astc-12x12-unorm":{bytesPerBlock:16,blockWidth:12,blockHeight:12,isCompressed:!0,channels:4},"astc-12x12-unorm-srgb":{bytesPerBlock:16,blockWidth:12,blockHeight:12,isCompressed:!0,channels:4}},St=class t{constructor(){this.id=t._id++,this.line=0}get isAstNode(){return!0}get astNodeType(){return""}search(e){e(this)}searchBlock(e,r){if(e){r(wn.instance);for(let n of e)n instanceof Array?this.searchBlock(n,r):n.search(r);r(Tn.instance)}}constEvaluate(e,r){throw new Error("Cannot evaluate node")}constEvaluateString(e){var r,n;return(n=(r=this.constEvaluate(e))===null||r===void 0?void 0:r.toString())!==null&&n!==void 0?n:""}};St._id=0;var wn=class extends St{};wn.instance=new wn;var Tn=class extends St{};Tn.instance=new Tn;var rh=new Set(["all","any","select","arrayLength","abs","acos","acosh","asin","asinh","atan","atanh","atan2","ceil","clamp","cos","cosh","countLeadingZeros","countOneBits","countTrailingZeros","cross","degrees","determinant","distance","dot","dot4U8Packed","dot4I8Packed","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","pack4xI8","pack4xU8","pack4x8Clamp","pack4xU8Clamp","pack2x16snorm","pack2x16unorm","pack2x16float","unpack4x8snorm","unpack4x8unorm","unpack4xI8","unpack4xU8","unpack2x16snorm","unpack2x16unorm","unpack2x16float","storageBarrier","textureBarrier","workgroupBarrier","workgroupUniformLoad","subgroupAdd","subgroupExclusiveAdd","subgroupInclusiveAdd","subgroupAll","subgroupAnd","subgroupAny","subgroupBallot","subgroupBroadcast","subgroupBroadcastFirst","subgroupElect","subgroupMax","subgroupMin","subgroupMul","subgroupExclusiveMul","subgroupInclusiveMul","subgroupOr","subgroupShuffle","subgroupShuffleDown","subgroupShuffleUp","subgroupShuffleXor","subgroupXor","quadBroadcast","quadSwapDiagonal","quadSwapX","quadSwapY"]),fe=class extends St{},Vr=class extends fe{constructor(e,r,n,s,o,a){super(),this.calls=new Set,this.name=e,this.args=r,this.returnType=n,this.body=s,this.startLine=o,this.endLine=a}get astNodeType(){return"function"}search(e){if(this.attributes)for(let r of this.attributes)e(r);e(this);for(let r of this.args)e(r);this.searchBlock(this.body,e)}},uo=class extends fe{constructor(e){super(),this.expression=e}get astNodeType(){return"staticAssert"}search(e){this.expression.search(e)}},co=class extends fe{constructor(e,r){super(),this.condition=e,this.body=r}get astNodeType(){return"while"}search(e){this.condition.search(e),this.searchBlock(this.body,e)}},Jn=class extends fe{constructor(e,r){super(),this.body=e,this.loopId=r}get astNodeType(){return"continuing"}search(e){this.searchBlock(this.body,e)}},lo=class extends fe{constructor(e,r,n,s){super(),this.init=e,this.condition=r,this.increment=n,this.body=s}get astNodeType(){return"for"}search(e){var r,n,s;(r=this.init)===null||r===void 0||r.search(e),(n=this.condition)===null||n===void 0||n.search(e),(s=this.increment)===null||s===void 0||s.search(e),this.searchBlock(this.body,e)}},It=class extends fe{constructor(e,r,n,s,o){super(),this.attributes=null,this.name=e,this.type=r,this.storage=n,this.access=s,this.value=o}get astNodeType(){return"var"}search(e){var r;e(this),(r=this.value)===null||r===void 0||r.search(e)}},Qn=class extends fe{constructor(e,r,n){super(),this.attributes=null,this.name=e,this.type=r,this.value=n}get astNodeType(){return"override"}search(e){var r;(r=this.value)===null||r===void 0||r.search(e)}},Mr=class extends fe{constructor(e,r,n,s,o){super(),this.attributes=null,this.name=e,this.type=r,this.storage=n,this.access=s,this.value=o}get astNodeType(){return"let"}search(e){var r;e(this),(r=this.value)===null||r===void 0||r.search(e)}},_n=class extends fe{constructor(e,r,n,s,o){super(),this.attributes=null,this.name=e,this.type=r,this.storage=n,this.access=s,this.value=o}get astNodeType(){return"const"}constEvaluate(e,r){return this.value.constEvaluate(e,r)}search(e){var r;e(this),(r=this.value)===null||r===void 0||r.search(e)}},xn,Kn,b,x;(t=>{t.increment="++",t.decrement="--"})(xn||(xn={})),(t=>{t.parse=function(e){let r=e;if(r==="parse")throw new Error("Invalid value for IncrementOperator");return t[r]}})(xn||(xn={}));var fo=class extends fe{constructor(e,r){super(),this.operator=e,this.variable=r}get astNodeType(){return"increment"}search(e){this.variable.search(e)}};(t=>{t.assign="=",t.addAssign="+=",t.subtractAssign="-=",t.multiplyAssign="*=",t.divideAssign="/=",t.moduloAssign="%=",t.andAssign="&=",t.orAssign="|=",t.xorAssign="^=",t.shiftLeftAssign="<<=",t.shiftRightAssign=">>="})(Kn||(Kn={})),(t=>{t.parse=function(e){let r=e;if(r==="parse")throw new Error("Invalid value for AssignOperator");return r}})(Kn||(Kn={}));var ho=class extends fe{constructor(e,r,n){super(),this.operator=e,this.variable=r,this.value=n}get astNodeType(){return"assign"}search(e){this.variable.search(e),this.value.search(e)}},es=class extends fe{constructor(e,r){super(),this.name=e,this.args=r}get astNodeType(){return"call"}isBuiltin(){return rh.has(this.name)}search(e){for(let r of this.args)r.search(e);e(this)}},mo=class extends fe{constructor(e,r){super(),this.body=e,this.continuing=r}get astNodeType(){return"loop"}search(e){var r;this.searchBlock(this.body,e),(r=this.continuing)===null||r===void 0||r.search(e)}},po=class extends fe{constructor(e,r){super(),this.condition=e,this.cases=r}get astNodeType(){return"switch"}search(e){e(this);for(let r of this.cases)r.search(e)}},go=class extends fe{constructor(e,r,n,s){super(),this.condition=e,this.body=r,this.elseif=n,this.else=s}get astNodeType(){return"if"}search(e){this.condition.search(e),this.searchBlock(this.body,e),this.searchBlock(this.elseif,e),this.searchBlock(this.else,e)}},xo=class extends fe{constructor(e){super(),this.value=e}get astNodeType(){return"return"}search(e){var r;(r=this.value)===null||r===void 0||r.search(e)}},zi=class extends fe{constructor(e){super(),this.name=e}get astNodeType(){return"enable"}},Hi=class extends fe{constructor(e){super(),this.extensions=e}get astNodeType(){return"requires"}},yo=class extends fe{constructor(e,r){super(),this.severity=e,this.rule=r}get astNodeType(){return"diagnostic"}},ts=class extends fe{constructor(e,r){super(),this.name=e,this.type=r}get astNodeType(){return"alias"}},Xi=class extends fe{get astNodeType(){return"discard"}},_o=class extends fe{constructor(){super(...arguments),this.condition=null,this.loopId=-1}get astNodeType(){return"break"}},bo=class extends fe{constructor(){super(...arguments),this.loopId=-1}get astNodeType(){return"continue"}},R=class t extends fe{constructor(e){super(),this.attributes=null,this.name=e}get astNodeType(){return"type"}get isStruct(){return!1}get isArray(){return!1}static maxFormatType(e){let r=e[0];if(r.name==="f32")return r;for(let n=1;n<e.length;++n){let s=t._priority.get(r.name);t._priority.get(e[n].name)<s&&(r=e[n])}return r.name==="x32"?t.i32:r}getTypeName(){return this.name}};R.x32=new R("x32"),R.f32=new R("f32"),R.i32=new R("i32"),R.u32=new R("u32"),R.f16=new R("f16"),R.bool=new R("bool"),R.void=new R("void"),R._priority=new Map([["f32",0],["f16",1],["u32",2],["i32",3],["x32",3]]);var vo=class extends R{constructor(e){super(e)}},Nt=class extends R{constructor(e,r,n,s){super(e),this.members=r,this.startLine=n,this.endLine=s}get astNodeType(){return"struct"}get isStruct(){return!0}getMemberIndex(e){for(let r=0;r<this.members.length;r++)if(this.members[r].name===e)return r;return-1}search(e){for(let r of this.members)e(r)}},_=class extends R{constructor(e,r,n){super(e),this.format=r,this.access=n}get astNodeType(){return"template"}getTypeName(){let e=this.name;if(this.format!==null){if(e==="vec2"||e==="vec3"||e==="vec4"||e==="mat2x2"||e==="mat2x3"||e==="mat2x4"||e==="mat3x2"||e==="mat3x3"||e==="mat3x4"||e==="mat4x2"||e==="mat4x3"||e==="mat4x4"){if(this.format.name==="f32")return e+="f",e;if(this.format.name==="i32")return e+="i",e;if(this.format.name==="u32")return e+="u",e;if(this.format.name==="bool")return e+="b",e;if(this.format.name==="f16")return e+="h",e}e+=`<${this.format.name}>`}else if(e==="vec2"||e==="vec3"||e==="vec4")return e;return e}};_.vec2f=new _("vec2",R.f32,null),_.vec3f=new _("vec3",R.f32,null),_.vec4f=new _("vec4",R.f32,null),_.vec2i=new _("vec2",R.i32,null),_.vec3i=new _("vec3",R.i32,null),_.vec4i=new _("vec4",R.i32,null),_.vec2u=new _("vec2",R.u32,null),_.vec3u=new _("vec3",R.u32,null),_.vec4u=new _("vec4",R.u32,null),_.vec2h=new _("vec2",R.f16,null),_.vec3h=new _("vec3",R.f16,null),_.vec4h=new _("vec4",R.f16,null),_.vec2b=new _("vec2",R.bool,null),_.vec3b=new _("vec3",R.bool,null),_.vec4b=new _("vec4",R.bool,null),_.mat2x2f=new _("mat2x2",R.f32,null),_.mat2x3f=new _("mat2x3",R.f32,null),_.mat2x4f=new _("mat2x4",R.f32,null),_.mat3x2f=new _("mat3x2",R.f32,null),_.mat3x3f=new _("mat3x3",R.f32,null),_.mat3x4f=new _("mat3x4",R.f32,null),_.mat4x2f=new _("mat4x2",R.f32,null),_.mat4x3f=new _("mat4x3",R.f32,null),_.mat4x4f=new _("mat4x4",R.f32,null),_.mat2x2h=new _("mat2x2",R.f16,null),_.mat2x3h=new _("mat2x3",R.f16,null),_.mat2x4h=new _("mat2x4",R.f16,null),_.mat3x2h=new _("mat3x2",R.f16,null),_.mat3x3h=new _("mat3x3",R.f16,null),_.mat3x4h=new _("mat3x4",R.f16,null),_.mat4x2h=new _("mat4x2",R.f16,null),_.mat4x3h=new _("mat4x3",R.f16,null),_.mat4x4h=new _("mat4x4",R.f16,null),_.mat2x2i=new _("mat2x2",R.i32,null),_.mat2x3i=new _("mat2x3",R.i32,null),_.mat2x4i=new _("mat2x4",R.i32,null),_.mat3x2i=new _("mat3x2",R.i32,null),_.mat3x3i=new _("mat3x3",R.i32,null),_.mat3x4i=new _("mat3x4",R.i32,null),_.mat4x2i=new _("mat4x2",R.i32,null),_.mat4x3i=new _("mat4x3",R.i32,null),_.mat4x4i=new _("mat4x4",R.i32,null),_.mat2x2u=new _("mat2x2",R.u32,null),_.mat2x3u=new _("mat2x3",R.u32,null),_.mat2x4u=new _("mat2x4",R.u32,null),_.mat3x2u=new _("mat3x2",R.u32,null),_.mat3x3u=new _("mat3x3",R.u32,null),_.mat3x4u=new _("mat3x4",R.u32,null),_.mat4x2u=new _("mat4x2",R.u32,null),_.mat4x3u=new _("mat4x3",R.u32,null),_.mat4x4u=new _("mat4x4",R.u32,null);var bn=class extends R{constructor(e,r,n,s){super(e),this.storage=r,this.type=n,this.access=s}get astNodeType(){return"pointer"}},Nr=class extends R{constructor(e,r,n,s){super(e),this.attributes=r,this.format=n,this.count=s}get astNodeType(){return"array"}get isArray(){return!0}},Dr=class extends R{constructor(e,r,n){super(e),this.format=r,this.access=n}get astNodeType(){return"sampler"}},gt=class extends St{constructor(){super(),this.postfix=null,this.hasParen=!1}},cr=class extends gt{constructor(e){super(),this.value=e}get astNodeType(){return"stringExpr"}toString(){return this.value}constEvaluateString(){return this.value}},Rt=class extends gt{constructor(e,r){super(),this.type=e,this.args=r}get astNodeType(){return"createExpr"}search(e){if(e(this),this.args)for(let r of this.args)r.search(e)}constEvaluate(e,r){return r&&(r[0]=this.type),e.evalExpression(this,e.context)}},rs=class extends gt{constructor(e,r){super(),this.cachedReturnValue=null,this.name=e,this.args=r}get astNodeType(){return"callExpr"}setCachedReturnValue(e){this.cachedReturnValue=e}get isBuiltin(){return rh.has(this.name)}constEvaluate(e,r){return e.evalExpression(this,e.context)}search(e){for(let r of this.args)r.search(e);e(this)}},We=class extends gt{constructor(e){super(),this.name=e}get astNodeType(){return"varExpr"}search(e){e(this),this.postfix&&this.postfix.search(e)}constEvaluate(e,r){return e.evalExpression(this,e.context)}},wo=class extends gt{constructor(e,r){super(),this.name=e,this.initializer=r}get astNodeType(){return"constExpr"}constEvaluate(e,r){let n=e.evalExpression(this.initializer,e.context);return n!==null&&this.postfix?n.getSubData(e,this.postfix,e.context):n}search(e){this.initializer.search(e)}},Be=class extends gt{constructor(e,r){super(),this.value=e,this.type=r}get astNodeType(){return"literalExpr"}constEvaluate(e,r){return r!==void 0&&(r[0]=this.type),this.value}get isScalar(){return this.value instanceof y}get isVector(){return this.value instanceof m||this.value instanceof H}get scalarValue(){return this.value instanceof y?this.value.value:(console.error("Value is not scalar."),0)}get vectorValue(){return this.value instanceof m||this.value instanceof H?this.value.data:(console.error("Value is not a vector or matrix."),new Float32Array(0))}},To=class extends gt{constructor(e,r){super(),this.type=e,this.value=r}get astNodeType(){return"bitcastExpr"}search(e){this.value.search(e)}},Ar=class extends gt{constructor(e){super(),this.index=e}search(e){this.index.search(e)}},ko=class extends gt{constructor(){super()}},Ae=class extends ko{constructor(e,r){super(),this.operator=e,this.right=r}get astNodeType(){return"unaryOp"}constEvaluate(e,r){return e.evalExpression(this,e.context)}search(e){this.right.search(e)}},mt=class extends ko{constructor(e,r,n){super(),this.operator=e,this.left=r,this.right=n}get astNodeType(){return"binaryOp"}_getPromotedType(e,r){return e.name===r.name?e:e.name==="f32"||r.name==="f32"?R.f32:e.name==="u32"||r.name==="u32"?R.u32:R.i32}constEvaluate(e,r){return e.evalExpression(this,e.context)}search(e){this.left.search(e),this.right.search(e)}},Eo=class extends St{constructor(e){super(),this.body=e}search(e){e(this),this.searchBlock(this.body,e)}},vn=class extends gt{get astNodeType(){return"default"}},Ao=class extends Eo{constructor(e,r){super(r),this.selectors=e}get astNodeType(){return"case"}search(e){this.searchBlock(this.body,e)}},Ro=class extends Eo{constructor(e){super(e)}get astNodeType(){return"default"}search(e){this.searchBlock(this.body,e)}},Io=class extends St{constructor(e,r,n){super(),this.name=e,this.type=r,this.attributes=n}get astNodeType(){return"argument"}},ji=class extends St{constructor(e,r){super(),this.condition=e,this.body=r}get astNodeType(){return"elseif"}search(e){this.condition.search(e),this.searchBlock(this.body,e)}},So=class extends St{constructor(e,r,n){super(),this.name=e,this.type=r,this.attributes=n}get astNodeType(){return"member"}},Fo=class extends St{constructor(e,r){super(),this.name=e,this.value=r}get astNodeType(){return"attribute"}},Gt=class t{constructor(e,r){this.parent=null,this.typeInfo=e,this.parent=r,this.id=t._id++}setDataValue(e,r,n,s){console.error(`SetDataValue: Not implemented for ${this.constructor.name}`)}getSubData(e,r,n){return console.error(`GetDataValue: Not implemented for ${this.constructor.name}`),null}toString(){return`<${this.typeInfo.getTypeName()}>`}};Gt._id=0;var Co=class extends Gt{constructor(e,r){super(e,r)}clone(){return this}toString(){return this.typeInfo.name}},ns=class extends Gt{constructor(){super(new st("void",null),null)}clone(){return this}toString(){return"void"}};ns.void=new ns;var Er=class extends Gt{constructor(e){super(new Zn("pointer",e.typeInfo,null),null),this.reference=e}clone(){return this}setDataValue(e,r,n,s){this.reference.setDataValue(e,r,n,s)}getSubData(e,r,n){return r?this.reference.getSubData(e,r,n):this}toString(){return`&${this.reference.toString()}`}},y=class t extends Gt{constructor(e,r,n=null){super(r,n),e instanceof Int32Array||e instanceof Uint32Array||e instanceof Float32Array?this.data=e:this.typeInfo.name==="x32"?e-Math.floor(e)!==0?this.data=new Float32Array([e]):this.data=e>=0?new Uint32Array([e]):new Int32Array([e]):this.typeInfo.name==="i32"||this.typeInfo.name==="bool"?this.data=new Int32Array([e]):this.typeInfo.name==="u32"?this.data=new Uint32Array([e]):this.typeInfo.name==="f32"||this.typeInfo.name==="f16"?this.data=new Float32Array([e]):console.error("ScalarData2: Invalid type",r)}clone(){if(this.data instanceof Float32Array)return new t(new Float32Array(this.data),this.typeInfo,null);if(this.data instanceof Int32Array)return new t(new Int32Array(this.data),this.typeInfo,null);if(this.data instanceof Uint32Array)return new t(new Uint32Array(this.data),this.typeInfo,null);throw new Error("ScalarData: Invalid data type")}get value(){return this.data[0]}set value(e){this.data[0]=e}setDataValue(e,r,n,s){if(n)return void console.error("SetDataValue: Scalar data does not support postfix",n);if(!(r instanceof t))return void console.error("SetDataValue: Invalid value",r);let o=r.data[0];this.typeInfo.name==="i32"||this.typeInfo.name==="u32"?o=Math.floor(o):this.typeInfo.name==="bool"&&(o=o?1:0),this.data[0]=o}getSubData(e,r,n){return r?(console.error("getSubData: Scalar data does not support postfix",r),null):this}toString(){return`${this.value}`}};function Nm(t,e,r){let n=e.length;return n===2?r==="f32"?new m(new Float32Array(e),t.getTypeInfo("vec2f")):r==="i32"||r==="bool"?new m(new Int32Array(e),t.getTypeInfo("vec2i")):r==="u32"?new m(new Uint32Array(e),t.getTypeInfo("vec2u")):r==="f16"?new m(new Float32Array(e),t.getTypeInfo("vec2h")):(console.error(`getSubData: Unknown format ${r}`),null):n===3?r==="f32"?new m(new Float32Array(e),t.getTypeInfo("vec3f")):r==="i32"||r==="bool"?new m(new Int32Array(e),t.getTypeInfo("vec3i")):r==="u32"?new m(new Uint32Array(e),t.getTypeInfo("vec3u")):r==="f16"?new m(new Float32Array(e),t.getTypeInfo("vec3h")):(console.error(`getSubData: Unknown format ${r}`),null):n===4?r==="f32"?new m(new Float32Array(e),t.getTypeInfo("vec4f")):r==="i32"||r==="bool"?new m(new Int32Array(e),t.getTypeInfo("vec4i")):r==="u32"?new m(new Uint32Array(e),t.getTypeInfo("vec4u")):r==="f16"?new m(new Float32Array(e),t.getTypeInfo("vec4h")):(console.error(`getSubData: Unknown format ${r}`),null):(console.error(`getSubData: Invalid vector size ${e.length}`),null)}var m=class t extends Gt{constructor(e,r,n=null){if(super(r,n),e instanceof Float32Array||e instanceof Uint32Array||e instanceof Int32Array)this.data=e;else{let s=this.typeInfo.name;s==="vec2f"||s==="vec3f"||s==="vec4f"?this.data=new Float32Array(e):s==="vec2i"||s==="vec3i"||s==="vec4i"?this.data=new Int32Array(e):s==="vec2u"||s==="vec3u"||s==="vec4u"?this.data=new Uint32Array(e):s==="vec2h"||s==="vec3h"||s==="vec4h"?this.data=new Float32Array(e):s==="vec2b"||s==="vec3b"||s==="vec4b"?this.data=new Int32Array(e):s==="vec2"||s==="vec3"||s==="vec4"?this.data=new Float32Array(e):console.error(`VectorData: Invalid type ${s}`)}}clone(){if(this.data instanceof Float32Array)return new t(new Float32Array(this.data),this.typeInfo,null);if(this.data instanceof Int32Array)return new t(new Int32Array(this.data),this.typeInfo,null);if(this.data instanceof Uint32Array)return new t(new Uint32Array(this.data),this.typeInfo,null);throw new Error("VectorData: Invalid data type")}setDataValue(e,r,n,s){n instanceof cr?console.error("TODO: Set vector postfix"):r instanceof t?this.data=r.data:console.error("SetDataValue: Invalid value",r)}getSubData(e,r,n){if(r===null)return this;let s=e.getTypeInfo("f32");if(this.typeInfo instanceof ur)s=this.typeInfo.format||s;else{let a=this.typeInfo.name;a==="vec2f"||a==="vec3f"||a==="vec4f"?s=e.getTypeInfo("f32"):a==="vec2i"||a==="vec3i"||a==="vec4i"?s=e.getTypeInfo("i32"):a==="vec2b"||a==="vec3b"||a==="vec4b"?s=e.getTypeInfo("bool"):a==="vec2u"||a==="vec3u"||a==="vec4u"?s=e.getTypeInfo("u32"):a==="vec2h"||a==="vec3h"||a==="vec4h"?s=e.getTypeInfo("f16"):console.error(`GetSubData: Unknown type ${a}`)}let o=this;for(;r!==null&&o!==null;){if(r instanceof Ar){let a=r.index,i=-1;if(a instanceof Be){if(!(a.value instanceof y))return console.error(`GetSubData: Invalid array index ${a.value}`),null;i=a.value.value}else{let u=e.evalExpression(a,n);if(!(u instanceof y))return console.error("GetSubData: Unknown index type",a),null;i=u.value}if(i<0||i>=o.data.length)return console.error("GetSubData: Index out of range",i),null;if(o.data instanceof Float32Array){let u=new Float32Array(o.data.buffer,o.data.byteOffset+4*i,1);return new y(u,s)}if(o.data instanceof Int32Array){let u=new Int32Array(o.data.buffer,o.data.byteOffset+4*i,1);return new y(u,s)}if(o.data instanceof Uint32Array){let u=new Uint32Array(o.data.buffer,o.data.byteOffset+4*i,1);return new y(u,s)}throw new Error("GetSubData: Invalid data type")}if(!(r instanceof cr))return console.error("GetSubData: Unknown postfix",r),null;{let a=r.value.toLowerCase();if(a.length===1){let u=0;if(a==="x"||a==="r")u=0;else if(a==="y"||a==="g")u=1;else if(a==="z"||a==="b")u=2;else{if(a!=="w"&&a!=="a")return console.error(`GetSubData: Unknown member ${a}`),null;u=3}if(this.data instanceof Float32Array){let l=new Float32Array(this.data.buffer,this.data.byteOffset+4*u,1);return new y(l,s,this)}if(this.data instanceof Int32Array){let l=new Int32Array(this.data.buffer,this.data.byteOffset+4*u,1);return new y(l,s,this)}if(this.data instanceof Uint32Array){let l=new Uint32Array(this.data.buffer,this.data.byteOffset+4*u,1);return new y(l,s,this)}}let i=[];for(let u of a)u==="x"||u==="r"?i.push(this.data[0]):u==="y"||u==="g"?i.push(this.data[1]):u==="z"||u==="b"?i.push(this.data[2]):u==="w"||u==="a"?i.push(this.data[3]):console.error(`GetDataValue: Unknown member ${u}`);o=Nm(e,i,s.name)}r=r.postfix}return o}toString(){let e=`${this.data[0]}`;for(let r=1;r<this.data.length;++r)e+=`, ${this.data[r]}`;return e}},H=class t extends Gt{constructor(e,r,n=null){super(r,n),e instanceof Float32Array?this.data=e:this.data=new Float32Array(e)}clone(){return new t(new Float32Array(this.data),this.typeInfo,null)}setDataValue(e,r,n,s){n instanceof cr?console.error("TODO: Set matrix postfix"):r instanceof t?this.data=r.data:console.error("SetDataValue: Invalid value",r)}getSubData(e,r,n){if(r===null)return this;let s=this.typeInfo.name;if(e.getTypeInfo("f32"),this.typeInfo instanceof ur)this.typeInfo.format;else if(s.endsWith("f"))e.getTypeInfo("f32");else if(s.endsWith("i"))e.getTypeInfo("i32");else if(s.endsWith("u"))e.getTypeInfo("u32");else{if(!s.endsWith("h"))return console.error(`GetDataValue: Unknown type ${s}`),null;e.getTypeInfo("f16")}if(r instanceof Ar){let o=r.index,a=-1;if(o instanceof Be){if(!(o.value instanceof y))return console.error(`GetDataValue: Invalid array index ${o.value}`),null;a=o.value.value}else{let l=e.evalExpression(o,n);if(!(l instanceof y))return console.error("GetDataValue: Unknown index type",o),null;a=l.value}if(a<0||a>=this.data.length)return console.error("GetDataValue: Index out of range",a),null;let i=s.endsWith("h")?"h":"f",u;if(s==="mat2x2"||s==="mat2x2f"||s==="mat2x2h"||s==="mat3x2"||s==="mat3x2f"||s==="mat3x2h"||s==="mat4x2"||s==="mat4x2f"||s==="mat4x2h")u=new m(new Float32Array(this.data.buffer,this.data.byteOffset+2*a*4,2),e.getTypeInfo(`vec2${i}`));else if(s==="mat2x3"||s==="mat2x3f"||s==="mat2x3h"||s==="mat3x3"||s==="mat3x3f"||s==="mat3x3h"||s==="mat4x3"||s==="mat4x3f"||s==="mat4x3h")u=new m(new Float32Array(this.data.buffer,this.data.byteOffset+3*a*4,3),e.getTypeInfo(`vec3${i}`));else{if(s!=="mat2x4"&&s!=="mat2x4f"&&s!=="mat2x4h"&&s!=="mat3x4"&&s!=="mat3x4f"&&s!=="mat3x4h"&&s!=="mat4x4"&&s!=="mat4x4f"&&s!=="mat4x4h")return console.error(`GetDataValue: Unknown type ${s}`),null;u=new m(new Float32Array(this.data.buffer,this.data.byteOffset+4*a*4,4),e.getTypeInfo(`vec4${i}`))}return r.postfix?u.getSubData(e,r.postfix,n):u}return console.error("GetDataValue: Invalid postfix",r),null}toString(){let e=`${this.data[0]}`;for(let r=1;r<this.data.length;++r)e+=`, ${this.data[r]}`;return e}},Re=class t extends Gt{constructor(e,r,n=0,s=null){super(r,s),this.buffer=e instanceof ArrayBuffer?e:e.buffer,this.offset=n}clone(){let e=new Uint8Array(new Uint8Array(this.buffer,this.offset,this.typeInfo.size));return new t(e.buffer,this.typeInfo,0,null)}setDataValue(e,r,n,s){if(r===null)return void console.log("setDataValue: NULL data.");let o=this.offset,a=this.typeInfo;for(;n;){if(n instanceof Ar)if(a instanceof Zt){let i=n.index;if(i instanceof Be){if(!(i.value instanceof y))return void console.error(`SetDataValue: Invalid index type ${i.value}`);o+=i.value.value*a.stride}else{let u=e.evalExpression(i,s);if(!(u instanceof y))return void console.error("SetDataValue: Unknown index type",i);o+=u.value*a.stride}a=a.format}else console.error(`SetDataValue: Type ${a.getTypeName()} is not an array`);else{if(!(n instanceof cr))return void console.error("SetDataValue: Unknown postfix type",n);{let i=n.value;if(a instanceof Kt){let u=!1;for(let l of a.members)if(l.name===i){o+=l.offset,a=l.type,u=!0;break}if(!u)return void console.error(`SetDataValue: Member ${i} not found`)}else if(a instanceof st){let u=a.getTypeName(),l=0;if(i==="x"||i==="r")l=0;else if(i==="y"||i==="g")l=1;else if(i==="z"||i==="b")l=2;else{if(i!=="w"&&i!=="a")return void console.error(`SetDataValue: Unknown member ${i}`);l=3}if(!(r instanceof y))return void console.error("SetDataValue: Invalid value",r);let c=r.value;return u==="vec2f"?void(new Float32Array(this.buffer,o,2)[l]=c):u==="vec3f"?void(new Float32Array(this.buffer,o,3)[l]=c):u==="vec4f"?void(new Float32Array(this.buffer,o,4)[l]=c):u==="vec2i"?void(new Int32Array(this.buffer,o,2)[l]=c):u==="vec3i"?void(new Int32Array(this.buffer,o,3)[l]=c):u==="vec4i"?void(new Int32Array(this.buffer,o,4)[l]=c):u==="vec2u"?void(new Uint32Array(this.buffer,o,2)[l]=c):u==="vec3u"?void(new Uint32Array(this.buffer,o,3)[l]=c):u==="vec4u"?void(new Uint32Array(this.buffer,o,4)[l]=c):void console.error(`SetDataValue: Type ${u} is not a struct`)}}}n=n.postfix}this.setData(e,r,a,o,s)}setData(e,r,n,s,o){let a=n.getTypeName();if(a!=="f32"&&a!=="f16")if(a!=="i32"&&a!=="atomic<i32>"&&a!=="x32")if(a!=="u32"&&a!=="atomic<u32>")if(a!=="bool"){if(a==="vec2f"||a==="vec2h"){let i=new Float32Array(this.buffer,s,2);return void(r instanceof m?(i[0]=r.data[0],i[1]=r.data[1]):(i[0]=r[0],i[1]=r[1]))}if(a==="vec3f"||a==="vec3h"){let i=new Float32Array(this.buffer,s,3);return void(r instanceof m?(i[0]=r.data[0],i[1]=r.data[1],i[2]=r.data[2]):(i[0]=r[0],i[1]=r[1],i[2]=r[2]))}if(a==="vec4f"||a==="vec4h"){let i=new Float32Array(this.buffer,s,4);return void(r instanceof m?(i[0]=r.data[0],i[1]=r.data[1],i[2]=r.data[2],i[3]=r.data[3]):(i[0]=r[0],i[1]=r[1],i[2]=r[2],i[3]=r[3]))}if(a==="vec2i"){let i=new Int32Array(this.buffer,s,2);return void(r instanceof m?(i[0]=r.data[0],i[1]=r.data[1]):(i[0]=r[0],i[1]=r[1]))}if(a==="vec3i"){let i=new Int32Array(this.buffer,s,3);return void(r instanceof m?(i[0]=r.data[0],i[1]=r.data[1],i[2]=r.data[2]):(i[0]=r[0],i[1]=r[1],i[2]=r[2]))}if(a==="vec4i"){let i=new Int32Array(this.buffer,s,4);return void(r instanceof m?(i[0]=r.data[0],i[1]=r.data[1],i[2]=r.data[2],i[3]=r.data[3]):(i[0]=r[0],i[1]=r[1],i[2]=r[2],i[3]=r[3]))}if(a==="vec2u"){let i=new Uint32Array(this.buffer,s,2);return void(r instanceof m?(i[0]=r.data[0],i[1]=r.data[1]):(i[0]=r[0],i[1]=r[1]))}if(a==="vec3u"){let i=new Uint32Array(this.buffer,s,3);return void(r instanceof m?(i[0]=r.data[0],i[1]=r.data[1],i[2]=r.data[2]):(i[0]=r[0],i[1]=r[1],i[2]=r[2]))}if(a==="vec4u"){let i=new Uint32Array(this.buffer,s,4);return void(r instanceof m?(i[0]=r.data[0],i[1]=r.data[1],i[2]=r.data[2],i[3]=r.data[3]):(i[0]=r[0],i[1]=r[1],i[2]=r[2],i[3]=r[3]))}if(a==="vec2b"){let i=new Uint32Array(this.buffer,s,2);return void(r instanceof m?(i[0]=r.data[0],i[1]=r.data[1]):(i[0]=r[0],i[1]=r[1]))}if(a==="vec3b"){let i=new Uint32Array(this.buffer,s,3);return void(r instanceof m?(i[0]=r.data[0],i[1]=r.data[1],i[2]=r.data[2]):(i[0]=r[0],i[1]=r[1],i[2]=r[2]))}if(a==="vec4b"){let i=new Uint32Array(this.buffer,s,4);return void(r instanceof m?(i[0]=r.data[0],i[1]=r.data[1],i[2]=r.data[2],i[3]=r.data[3]):(i[0]=r[0],i[1]=r[1],i[2]=r[2],i[3]=r[3]))}if(a==="mat2x2f"||a==="mat2x2h"){let i=new Float32Array(this.buffer,s,4);return void(r instanceof H?(i[0]=r.data[0],i[1]=r.data[1],i[2]=r.data[2],i[3]=r.data[3]):(i[0]=r[0],i[1]=r[1],i[2]=r[2],i[3]=r[3]))}if(a==="mat2x3f"||a==="mat2x3h"){let i=new Float32Array(this.buffer,s,6);return void(r instanceof H?(i[0]=r.data[0],i[1]=r.data[1],i[2]=r.data[2],i[3]=r.data[3],i[4]=r.data[4],i[5]=r.data[5]):(i[0]=r[0],i[1]=r[1],i[2]=r[2],i[3]=r[3],i[4]=r[4],i[5]=r[5]))}if(a==="mat2x4f"||a==="mat2x4h"){let i=new Float32Array(this.buffer,s,8);return void(r instanceof H?(i[0]=r.data[0],i[1]=r.data[1],i[2]=r.data[2],i[3]=r.data[3],i[4]=r.data[4],i[5]=r.data[5],i[6]=r.data[6],i[7]=r.data[7]):(i[0]=r[0],i[1]=r[1],i[2]=r[2],i[3]=r[3],i[4]=r[4],i[5]=r[5],i[6]=r[6],i[7]=r[7]))}if(a==="mat3x2f"||a==="mat3x2h"){let i=new Float32Array(this.buffer,s,6);return void(r instanceof H?(i[0]=r.data[0],i[1]=r.data[1],i[2]=r.data[2],i[3]=r.data[3],i[4]=r.data[4],i[5]=r.data[5]):(i[0]=r[0],i[1]=r[1],i[2]=r[2],i[3]=r[3],i[4]=r[4],i[5]=r[5]))}if(a==="mat3x3f"||a==="mat3x3h"){let i=new Float32Array(this.buffer,s,9);return void(r instanceof H?(i[0]=r.data[0],i[1]=r.data[1],i[2]=r.data[2],i[3]=r.data[3],i[4]=r.data[4],i[5]=r.data[5],i[6]=r.data[6],i[7]=r.data[7],i[8]=r.data[8]):(i[0]=r[0],i[1]=r[1],i[2]=r[2],i[3]=r[3],i[4]=r[4],i[5]=r[5],i[6]=r[6],i[7]=r[7],i[8]=r[8]))}if(a==="mat3x4f"||a==="mat3x4h"){let i=new Float32Array(this.buffer,s,12);return void(r instanceof H?(i[0]=r.data[0],i[1]=r.data[1],i[2]=r.data[2],i[3]=r.data[3],i[4]=r.data[4],i[5]=r.data[5],i[6]=r.data[6],i[7]=r.data[7],i[8]=r.data[8],i[9]=r.data[9],i[10]=r.data[10],i[11]=r.data[11]):(i[0]=r[0],i[1]=r[1],i[2]=r[2],i[3]=r[3],i[4]=r[4],i[5]=r[5],i[6]=r[6],i[7]=r[7],i[8]=r[8],i[9]=r[9],i[10]=r[10],i[11]=r[11]))}if(a==="mat4x2f"||a==="mat4x2h"){let i=new Float32Array(this.buffer,s,8);return void(r instanceof H?(i[0]=r.data[0],i[1]=r.data[1],i[2]=r.data[2],i[3]=r.data[3],i[4]=r.data[4],i[5]=r.data[5],i[6]=r.data[6],i[7]=r.data[7]):(i[0]=r[0],i[1]=r[1],i[2]=r[2],i[3]=r[3],i[4]=r[4],i[5]=r[5],i[6]=r[6],i[7]=r[7]))}if(a==="mat4x3f"||a==="mat4x3h"){let i=new Float32Array(this.buffer,s,12);return void(r instanceof H?(i[0]=r.data[0],i[1]=r.data[1],i[2]=r.data[2],i[3]=r.data[3],i[4]=r.data[4],i[5]=r.data[5],i[6]=r.data[6],i[7]=r.data[7],i[8]=r.data[8],i[9]=r.data[9],i[10]=r.data[10],i[11]=r.data[11]):(i[0]=r[0],i[1]=r[1],i[2]=r[2],i[3]=r[3],i[4]=r[4],i[5]=r[5],i[6]=r[6],i[7]=r[7],i[8]=r[8],i[9]=r[9],i[10]=r[10],i[11]=r[11]))}if(a==="mat4x4f"||a==="mat4x4h"){let i=new Float32Array(this.buffer,s,16);return void(r instanceof H?(i[0]=r.data[0],i[1]=r.data[1],i[2]=r.data[2],i[3]=r.data[3],i[4]=r.data[4],i[5]=r.data[5],i[6]=r.data[6],i[7]=r.data[7],i[8]=r.data[8],i[9]=r.data[9],i[10]=r.data[10],i[11]=r.data[11],i[12]=r.data[12],i[13]=r.data[13],i[14]=r.data[14],i[15]=r.data[15]):(i[0]=r[0],i[1]=r[1],i[2]=r[2],i[3]=r[3],i[4]=r[4],i[5]=r[5],i[6]=r[6],i[7]=r[7],i[8]=r[8],i[9]=r[9],i[10]=r[10],i[11]=r[11],i[12]=r[12],i[13]=r[13],i[14]=r[14],i[15]=r[15]))}if(r instanceof t){if(n===r.typeInfo)return void new Uint8Array(this.buffer,s,r.buffer.byteLength).set(new Uint8Array(r.buffer));console.error("SetDataValue: Type mismatch",a,r.typeInfo.getTypeName())}else console.error(`SetData: Unknown type ${a}`)}else r instanceof y&&(new Int32Array(this.buffer,s,1)[0]=r.value);else r instanceof y&&(new Uint32Array(this.buffer,s,1)[0]=r.value);else r instanceof y&&(new Int32Array(this.buffer,s,1)[0]=r.value);else r instanceof y&&(new Float32Array(this.buffer,s,1)[0]=r.value)}getSubData(e,r,n){var s,o,a;if(r===null)return this;let i=this.offset,u=this.typeInfo;for(;r;){if(r instanceof Ar){let c=r.index,f=c instanceof gt?e.evalExpression(c,n):c,d=0;if(f instanceof y?d=f.value:typeof f=="number"?d=f:console.error("GetDataValue: Invalid index type",c),u instanceof Zt)i+=d*u.stride,u=u.format;else{let p=u.getTypeName();p==="mat4x4"||p==="mat4x4f"||p==="mat4x4h"?(i+=16*d,u=e.getTypeInfo("vec4f")):p==="mat4x3"||p==="mat4x3f"||p==="mat4x3h"?(i+=12*d,u=e.getTypeInfo("vec3f")):p==="mat4x2"||p==="mat4x2f"||p==="mat4x2h"?(i+=8*d,u=e.getTypeInfo("vec2f")):p==="mat3x4"||p==="mat3x4f"||p==="mat3x4h"?(i+=12*d,u=e.getTypeInfo("vec4f")):p==="mat3x3"||p==="mat3x3f"||p==="mat3x3h"?(i+=9*d,u=e.getTypeInfo("vec3f")):p==="mat3x2"||p==="mat3x2f"||p==="mat3x2h"?(i+=6*d,u=e.getTypeInfo("vec2f")):p==="mat2x4"||p==="mat2x4f"||p==="mat2x4h"?(i+=8*d,u=e.getTypeInfo("vec4f")):p==="mat2x3"||p==="mat2x3f"||p==="mat2x3h"?(i+=6*d,u=e.getTypeInfo("vec3f")):p==="mat2x2"||p==="mat2x2f"||p==="mat2x2h"?(i+=4*d,u=e.getTypeInfo("vec2f")):p==="vec2f"||p==="vec3f"||p==="vec4f"?(i+=4*d,u=e.getTypeInfo("f32")):p==="vec2h"||p==="vec3h"||p==="vec4h"?(i+=2*d,u=e.getTypeInfo("f16")):p==="vec2b"||p==="vec3b"||p==="vec4b"?(i+=1*d,u=e.getTypeInfo("bool")):p==="vec2i"||p==="vec3i"||p==="vec4i"?(i+=4*d,u=e.getTypeInfo("i32")):p==="vec2u"||p==="vec3u"||p==="vec4u"?(i+=4*d,u=e.getTypeInfo("u32")):console.error(`getDataValue: Type ${u.getTypeName()} is not an array`)}}else{if(!(r instanceof cr))return console.error("GetDataValue: Unknown postfix type",r),null;{let c=r.value;if(u instanceof Kt){let f=!1;for(let d of u.members)if(d.name===c){i+=d.offset,u=d.type,f=!0;break}if(!f)return console.error(`GetDataValue: Member ${c} not found`),null}else if(u instanceof st){let f=u.getTypeName();if(f==="vec2f"||f==="vec3f"||f==="vec4f"||f==="vec2i"||f==="vec3i"||f==="vec4i"||f==="vec2u"||f==="vec3u"||f==="vec4u"||f==="vec2b"||f==="vec3b"||f==="vec4b"||f==="vec2h"||f==="vec3h"||f==="vec4h"||f==="vec2"||f==="vec3"||f==="vec4"){if(c.length>0&&c.length<5){let d="f",p=[];for(let v=0;v<c.length;++v){let A=c[v].toLowerCase(),w=0;if(A==="x"||A==="r")w=0;else if(A==="y"||A==="g")w=1;else if(A==="z"||A==="b")w=2;else{if(A!=="w"&&A!=="a")return console.error(`Unknown member ${c}`),null;w=3}if(c.length===1){if(f.endsWith("f"))return this.buffer.byteLength<i+4*w+4?(console.log("Insufficient buffer data"),null):new y(new Float32Array(this.buffer,i+4*w,1),e.getTypeInfo("f32"),this);if(f.endsWith("h"))return new y(new Float32Array(this.buffer,i+4*w,1),e.getTypeInfo("f16"),this);if(f.endsWith("i"))return new y(new Int32Array(this.buffer,i+4*w,1),e.getTypeInfo("i32"),this);if(f.endsWith("b"))return new y(new Int32Array(this.buffer,i+4*w,1),e.getTypeInfo("bool"),this);if(f.endsWith("u"))return new y(new Uint32Array(this.buffer,i+4*w,1),e.getTypeInfo("i32"),this)}if(f==="vec2f")p.push(new Float32Array(this.buffer,i,2)[w]);else if(f==="vec3f"){if(i+12>=this.buffer.byteLength)return console.log("Insufficient buffer data"),null;let S=new Float32Array(this.buffer,i,3);p.push(S[w])}else if(f==="vec4f")p.push(new Float32Array(this.buffer,i,4)[w]);else if(f==="vec2i")d="i",p.push(new Int32Array(this.buffer,i,2)[w]);else if(f==="vec3i")d="i",p.push(new Int32Array(this.buffer,i,3)[w]);else if(f==="vec4i")d="i",p.push(new Int32Array(this.buffer,i,4)[w]);else if(f==="vec2u"){d="u";let S=new Uint32Array(this.buffer,i,2);p.push(S[w])}else f==="vec3u"?(d="u",p.push(new Uint32Array(this.buffer,i,3)[w])):f==="vec4u"&&(d="u",p.push(new Uint32Array(this.buffer,i,4)[w]))}return p.length===2?u=e.getTypeInfo(`vec2${d}`):p.length===3?u=e.getTypeInfo(`vec3${d}`):p.length===4?u=e.getTypeInfo(`vec4${d}`):console.error(`GetDataValue: Invalid vector length ${p.length}`),new m(p,u,null)}return console.error(`GetDataValue: Unknown member ${c}`),null}return console.error(`GetDataValue: Type ${f} is not a struct`),null}}}r=r.postfix}let l=u.getTypeName();return l==="f32"?new y(new Float32Array(this.buffer,i,1),u,this):l==="i32"?new y(new Int32Array(this.buffer,i,1),u,this):l==="u32"?new y(new Uint32Array(this.buffer,i,1),u,this):l==="vec2f"?new m(new Float32Array(this.buffer,i,2),u,this):l==="vec3f"?new m(new Float32Array(this.buffer,i,3),u,this):l==="vec4f"?new m(new Float32Array(this.buffer,i,4),u,this):l==="vec2i"?new m(new Int32Array(this.buffer,i,2),u,this):l==="vec3i"?new m(new Int32Array(this.buffer,i,3),u,this):l==="vec4i"?new m(new Int32Array(this.buffer,i,4),u,this):l==="vec2u"?new m(new Uint32Array(this.buffer,i,2),u,this):l==="vec3u"?new m(new Uint32Array(this.buffer,i,3),u,this):l==="vec4u"?new m(new Uint32Array(this.buffer,i,4),u,this):u instanceof ur&&u.name==="atomic"?((s=u.format)===null||s===void 0?void 0:s.name)==="u32"?new y(new Uint32Array(this.buffer,i,1)[0],u.format,this):((o=u.format)===null||o===void 0?void 0:o.name)==="i32"?new y(new Int32Array(this.buffer,i,1)[0],u.format,this):(console.error(`GetDataValue: Invalid atomic format ${(a=u.format)===null||a===void 0?void 0:a.name}`),null):new t(this.buffer,u,i,this)}toArray(){let e=this.typeInfo.getTypeName();return e==="f32"||e==="f16"?new Float32Array(this.buffer,this.offset,1):e==="i32"||e==="atomic<i32>"||e==="x32"?new Int32Array(this.buffer,this.offset,1):e==="u32"||e==="atomic<u32>"?new Uint32Array(this.buffer,this.offset,1):e==="bool"?new Int32Array(this.buffer,this.offset,1):e==="vec2f"||e==="vec2h"?new Float32Array(this.buffer,this.offset,2):e==="vec3f"||e==="vec3h"?new Float32Array(this.buffer,this.offset,3):e==="vec4f"||e==="vec4h"?new Float32Array(this.buffer,this.offset,4):e==="vec2i"?new Int32Array(this.buffer,this.offset,2):e==="vec3i"?new Int32Array(this.buffer,this.offset,3):e==="vec4i"?new Int32Array(this.buffer,this.offset,4):e==="vec2u"?new Uint32Array(this.buffer,this.offset,2):e==="vec3u"?new Uint32Array(this.buffer,this.offset,3):e==="vec4u"?new Uint32Array(this.buffer,this.offset,4):e==="vec2b"?new Uint32Array(this.buffer,this.offset,2):e==="vec3b"?new Uint32Array(this.buffer,this.offset,3):e==="vec4b"?new Uint32Array(this.buffer,this.offset,4):e==="mat2x2f"||e==="mat2x2h"?new Float32Array(this.buffer,this.offset,4):e==="mat2x3f"||e==="mat2x3h"?new Float32Array(this.buffer,this.offset,6):e==="mat2x4f"||e==="mat2x4h"?new Float32Array(this.buffer,this.offset,8):e==="mat3x2f"||e==="mat3x2h"?new Float32Array(this.buffer,this.offset,6):e==="mat3x3f"||e==="mat3x3h"?new Float32Array(this.buffer,this.offset,9):e==="mat3x4f"||e==="mat3x4h"?new Float32Array(this.buffer,this.offset,12):e==="mat4x2f"||e==="mat4x2h"?new Float32Array(this.buffer,this.offset,8):e==="mat4x3f"||e==="mat4x3h"?new Float32Array(this.buffer,this.offset,12):e==="mat4x4f"||e==="mat4x4h"?new Float32Array(this.buffer,this.offset,16):null}toString(){let e="";if(this.typeInfo instanceof Zt)if(this.typeInfo.format.name==="f32"){let r=new Float32Array(this.buffer,this.offset);e=`[${r[0]}`;for(let n=1;n<r.length;++n)e+=`, ${r[n]}`}else if(this.typeInfo.format.name==="i32"){let r=new Int32Array(this.buffer,this.offset);e=`[${r[0]}`;for(let n=1;n<r.length;++n)e+=`, ${r[n]}`}else if(this.typeInfo.format.name==="u32"){let r=new Uint32Array(this.buffer,this.offset);e=`[${r[0]}`;for(let n=1;n<r.length;++n)e+=`, ${r[n]}`}else if(this.typeInfo.format.name==="vec2f"){let r=new Float32Array(this.buffer,this.offset);e=`[${r[0]}, ${r[1]}]`;for(let n=1;n<r.length/2;++n)e+=`, [${r[2*n]}, ${r[2*n+1]}]`}else if(this.typeInfo.format.name==="vec3f"){let r=new Float32Array(this.buffer,this.offset);e=`[${r[0]}, ${r[1]}, ${r[2]}]`;for(let n=4;n<r.length;n+=4)e+=`, [${r[n]}, ${r[n+1]}, ${r[n+2]}]`}else if(this.typeInfo.format.name==="vec4f"){let r=new Float32Array(this.buffer,this.offset);e=`[${r[0]}, ${r[1]}, ${r[2]}, ${r[3]}]`;for(let n=4;n<r.length;n+=4)e+=`, [${r[n]}, ${r[n+1]}, ${r[n+2]}, ${r[n+3]}]`}else e="[...]";else this.typeInfo instanceof Kt?e+="{...}":e="[...]";return e}},ir=class t extends Gt{constructor(e,r,n,s){super(r,null),this.data=e,this.descriptor=n,this.view=s}clone(){return new t(this.data,this.typeInfo,this.descriptor,this.view)}get width(){var e,r;let n=this.descriptor.size;return n instanceof Array&&n.length>0?(e=n[0])!==null&&e!==void 0?e:0:n instanceof Object&&(r=n.width)!==null&&r!==void 0?r:0}get height(){var e,r;let n=this.descriptor.size;return n instanceof Array&&n.length>1?(e=n[1])!==null&&e!==void 0?e:0:n instanceof Object&&(r=n.height)!==null&&r!==void 0?r:0}get depthOrArrayLayers(){var e,r;let n=this.descriptor.size;return n instanceof Array&&n.length>2?(e=n[2])!==null&&e!==void 0?e:0:n instanceof Object&&(r=n.depthOrArrayLayers)!==null&&r!==void 0?r:0}get format(){var e;return this.descriptor&&(e=this.descriptor.format)!==null&&e!==void 0?e:"rgba8unorm"}get sampleCount(){var e;return this.descriptor&&(e=this.descriptor.sampleCount)!==null&&e!==void 0?e:1}get mipLevelCount(){var e;return this.descriptor&&(e=this.descriptor.mipLevelCount)!==null&&e!==void 0?e:1}get dimension(){var e;return this.descriptor&&(e=this.descriptor.dimension)!==null&&e!==void 0?e:"2d"}getMipLevelSize(e){if(e>=this.mipLevelCount)return[0,0,0];let r=[this.width,this.height,this.depthOrArrayLayers];for(let n=0;n<r.length;++n)r[n]=Math.max(1,r[n]>>e);return r}get texelByteSize(){let e=this.format,r=Bi[e];return r?r.isDepthStencil?4:r.bytesPerBlock:0}get bytesPerRow(){return this.width*this.texelByteSize}get isDepthStencil(){let e=this.format,r=Bi[e];return!!r&&r.isDepthStencil}getGpuSize(){let e=this.format,r=Bi[e],n=this.width;if(!e||n<=0||!r)return-1;let s=this.height,o=this.depthOrArrayLayers,a=this.dimension;return n/r.blockWidth*(a==="1d"?1:s/r.blockHeight)*r.bytesPerBlock*o}getPixel(e,r,n=0,s=0){let o=this.texelByteSize,a=this.bytesPerRow,i=this.height,u=this.data[s];return Mm(new Uint8Array(u),e,r,n,s,i,a,o,this.format)}setPixel(e,r,n,s,o){let a=this.texelByteSize,i=this.bytesPerRow,u=this.height,l=this.data[s];(function(c,f,d,p,v,A,w,S,k,E){let I=p*(w>>=v)*(A>>=v)+d*w+f*S;switch(k){case"r8unorm":return void ee(c,I,"8unorm",1,E);case"r8snorm":return void ee(c,I,"8snorm",1,E);case"r8uint":return void ee(c,I,"8uint",1,E);case"r8sint":return void ee(c,I,"8sint",1,E);case"rg8unorm":return void ee(c,I,"8unorm",2,E);case"rg8snorm":return void ee(c,I,"8snorm",2,E);case"rg8uint":return void ee(c,I,"8uint",2,E);case"rg8sint":return void ee(c,I,"8sint",2,E);case"rgba8unorm-srgb":case"rgba8unorm":case"bgra8unorm-srgb":case"bgra8unorm":return void ee(c,I,"8unorm",4,E);case"rgba8snorm":return void ee(c,I,"8snorm",4,E);case"rgba8uint":return void ee(c,I,"8uint",4,E);case"rgba8sint":return void ee(c,I,"8sint",4,E);case"r16uint":return void ee(c,I,"16uint",1,E);case"r16sint":return void ee(c,I,"16sint",1,E);case"r16float":return void ee(c,I,"16float",1,E);case"rg16uint":return void ee(c,I,"16uint",2,E);case"rg16sint":return void ee(c,I,"16sint",2,E);case"rg16float":return void ee(c,I,"16float",2,E);case"rgba16uint":return void ee(c,I,"16uint",4,E);case"rgba16sint":return void ee(c,I,"16sint",4,E);case"rgba16float":return void ee(c,I,"16float",4,E);case"r32uint":return void ee(c,I,"32uint",1,E);case"r32sint":return void ee(c,I,"32sint",1,E);case"depth16unorm":case"depth24plus":case"depth24plus-stencil8":case"depth32float":case"depth32float-stencil8":case"r32float":return void ee(c,I,"32float",1,E);case"rg32uint":return void ee(c,I,"32uint",2,E);case"rg32sint":return void ee(c,I,"32sint",2,E);case"rg32float":return void ee(c,I,"32float",2,E);case"rgba32uint":return void ee(c,I,"32uint",4,E);case"rgba32sint":return void ee(c,I,"32sint",4,E);case"rgba32float":return void ee(c,I,"32float",4,E);case"rg11b10ufloat":console.error("TODO: rg11b10ufloat not supported for writing")}})(new Uint8Array(l),e,r,n,s,u,i,a,this.format,o)}};(t=>{t[t.token=0]="token",t[t.keyword=1]="keyword",t[t.reserved=2]="reserved"})(x||(x={}));var g=class{constructor(e,r,n){this.name=e,this.type=r,this.rule=n}toString(){return this.name}},h=class{};b=h,h.none=new g("",x.reserved,""),h.eof=new g("EOF",x.token,""),h.reserved={asm:new g("asm",x.reserved,"asm"),bf16:new g("bf16",x.reserved,"bf16"),do:new g("do",x.reserved,"do"),enum:new g("enum",x.reserved,"enum"),f16:new g("f16",x.reserved,"f16"),f64:new g("f64",x.reserved,"f64"),handle:new g("handle",x.reserved,"handle"),i8:new g("i8",x.reserved,"i8"),i16:new g("i16",x.reserved,"i16"),i64:new g("i64",x.reserved,"i64"),mat:new g("mat",x.reserved,"mat"),premerge:new g("premerge",x.reserved,"premerge"),regardless:new g("regardless",x.reserved,"regardless"),typedef:new g("typedef",x.reserved,"typedef"),u8:new g("u8",x.reserved,"u8"),u16:new g("u16",x.reserved,"u16"),u64:new g("u64",x.reserved,"u64"),unless:new g("unless",x.reserved,"unless"),using:new g("using",x.reserved,"using"),vec:new g("vec",x.reserved,"vec"),void:new g("void",x.reserved,"void")},h.keywords={array:new g("array",x.keyword,"array"),atomic:new g("atomic",x.keyword,"atomic"),bool:new g("bool",x.keyword,"bool"),f32:new g("f32",x.keyword,"f32"),i32:new g("i32",x.keyword,"i32"),mat2x2:new g("mat2x2",x.keyword,"mat2x2"),mat2x3:new g("mat2x3",x.keyword,"mat2x3"),mat2x4:new g("mat2x4",x.keyword,"mat2x4"),mat3x2:new g("mat3x2",x.keyword,"mat3x2"),mat3x3:new g("mat3x3",x.keyword,"mat3x3"),mat3x4:new g("mat3x4",x.keyword,"mat3x4"),mat4x2:new g("mat4x2",x.keyword,"mat4x2"),mat4x3:new g("mat4x3",x.keyword,"mat4x3"),mat4x4:new g("mat4x4",x.keyword,"mat4x4"),ptr:new g("ptr",x.keyword,"ptr"),sampler:new g("sampler",x.keyword,"sampler"),sampler_comparison:new g("sampler_comparison",x.keyword,"sampler_comparison"),struct:new g("struct",x.keyword,"struct"),texture_1d:new g("texture_1d",x.keyword,"texture_1d"),texture_2d:new g("texture_2d",x.keyword,"texture_2d"),texture_2d_array:new g("texture_2d_array",x.keyword,"texture_2d_array"),texture_3d:new g("texture_3d",x.keyword,"texture_3d"),texture_cube:new g("texture_cube",x.keyword,"texture_cube"),texture_cube_array:new g("texture_cube_array",x.keyword,"texture_cube_array"),texture_multisampled_2d:new g("texture_multisampled_2d",x.keyword,"texture_multisampled_2d"),texture_storage_1d:new g("texture_storage_1d",x.keyword,"texture_storage_1d"),texture_storage_2d:new g("texture_storage_2d",x.keyword,"texture_storage_2d"),texture_storage_2d_array:new g("texture_storage_2d_array",x.keyword,"texture_storage_2d_array"),texture_storage_3d:new g("texture_storage_3d",x.keyword,"texture_storage_3d"),texture_depth_2d:new g("texture_depth_2d",x.keyword,"texture_depth_2d"),texture_depth_2d_array:new g("texture_depth_2d_array",x.keyword,"texture_depth_2d_array"),texture_depth_cube:new g("texture_depth_cube",x.keyword,"texture_depth_cube"),texture_depth_cube_array:new g("texture_depth_cube_array",x.keyword,"texture_depth_cube_array"),texture_depth_multisampled_2d:new g("texture_depth_multisampled_2d",x.keyword,"texture_depth_multisampled_2d"),texture_external:new g("texture_external",x.keyword,"texture_external"),u32:new g("u32",x.keyword,"u32"),vec2:new g("vec2",x.keyword,"vec2"),vec3:new g("vec3",x.keyword,"vec3"),vec4:new g("vec4",x.keyword,"vec4"),bitcast:new g("bitcast",x.keyword,"bitcast"),block:new g("block",x.keyword,"block"),break:new g("break",x.keyword,"break"),case:new g("case",x.keyword,"case"),continue:new g("continue",x.keyword,"continue"),continuing:new g("continuing",x.keyword,"continuing"),default:new g("default",x.keyword,"default"),diagnostic:new g("diagnostic",x.keyword,"diagnostic"),discard:new g("discard",x.keyword,"discard"),else:new g("else",x.keyword,"else"),enable:new g("enable",x.keyword,"enable"),fallthrough:new g("fallthrough",x.keyword,"fallthrough"),false:new g("false",x.keyword,"false"),fn:new g("fn",x.keyword,"fn"),for:new g("for",x.keyword,"for"),function:new g("function",x.keyword,"function"),if:new g("if",x.keyword,"if"),let:new g("let",x.keyword,"let"),const:new g("const",x.keyword,"const"),loop:new g("loop",x.keyword,"loop"),while:new g("while",x.keyword,"while"),private:new g("private",x.keyword,"private"),read:new g("read",x.keyword,"read"),read_write:new g("read_write",x.keyword,"read_write"),return:new g("return",x.keyword,"return"),requires:new g("requires",x.keyword,"requires"),storage:new g("storage",x.keyword,"storage"),immediate:new g("immediate",x.keyword,"immediate"),switch:new g("switch",x.keyword,"switch"),true:new g("true",x.keyword,"true"),alias:new g("alias",x.keyword,"alias"),type:new g("type",x.keyword,"type"),uniform:new g("uniform",x.keyword,"uniform"),var:new g("var",x.keyword,"var"),override:new g("override",x.keyword,"override"),workgroup:new g("workgroup",x.keyword,"workgroup"),write:new g("write",x.keyword,"write"),r8unorm:new g("r8unorm",x.keyword,"r8unorm"),r8snorm:new g("r8snorm",x.keyword,"r8snorm"),r8uint:new g("r8uint",x.keyword,"r8uint"),r8sint:new g("r8sint",x.keyword,"r8sint"),r16uint:new g("r16uint",x.keyword,"r16uint"),r16sint:new g("r16sint",x.keyword,"r16sint"),r16float:new g("r16float",x.keyword,"r16float"),rg8unorm:new g("rg8unorm",x.keyword,"rg8unorm"),rg8snorm:new g("rg8snorm",x.keyword,"rg8snorm"),rg8uint:new g("rg8uint",x.keyword,"rg8uint"),rg8sint:new g("rg8sint",x.keyword,"rg8sint"),r32uint:new g("r32uint",x.keyword,"r32uint"),r32sint:new g("r32sint",x.keyword,"r32sint"),r32float:new g("r32float",x.keyword,"r32float"),rg16uint:new g("rg16uint",x.keyword,"rg16uint"),rg16sint:new g("rg16sint",x.keyword,"rg16sint"),rg16float:new g("rg16float",x.keyword,"rg16float"),rgba8unorm:new g("rgba8unorm",x.keyword,"rgba8unorm"),rgba8unorm_srgb:new g("rgba8unorm_srgb",x.keyword,"rgba8unorm_srgb"),rgba8snorm:new g("rgba8snorm",x.keyword,"rgba8snorm"),rgba8uint:new g("rgba8uint",x.keyword,"rgba8uint"),rgba8sint:new g("rgba8sint",x.keyword,"rgba8sint"),bgra8unorm:new g("bgra8unorm",x.keyword,"bgra8unorm"),bgra8unorm_srgb:new g("bgra8unorm_srgb",x.keyword,"bgra8unorm_srgb"),rgb10a2unorm:new g("rgb10a2unorm",x.keyword,"rgb10a2unorm"),rg11b10float:new g("rg11b10float",x.keyword,"rg11b10float"),rg32uint:new g("rg32uint",x.keyword,"rg32uint"),rg32sint:new g("rg32sint",x.keyword,"rg32sint"),rg32float:new g("rg32float",x.keyword,"rg32float"),rgba16uint:new g("rgba16uint",x.keyword,"rgba16uint"),rgba16sint:new g("rgba16sint",x.keyword,"rgba16sint"),rgba16float:new g("rgba16float",x.keyword,"rgba16float"),rgba32uint:new g("rgba32uint",x.keyword,"rgba32uint"),rgba32sint:new g("rgba32sint",x.keyword,"rgba32sint"),rgba32float:new g("rgba32float",x.keyword,"rgba32float"),static_assert:new g("static_assert",x.keyword,"static_assert"),const_assert:new g("const_assert",x.keyword,"const_assert")},h.tokens={decimal_float_literal:new g("decimal_float_literal",x.token,/((-?[0-9]*\.[0-9]+|-?[0-9]+\.[0-9]*)((e|E)(\+|-)?[0-9]+)?[fh]?)|(-?[0-9]+(e|E)(\+|-)?[0-9]+[fh]?)|(-?[0-9]+[fh])/),hex_float_literal:new g("hex_float_literal",x.token,/-?0x((([0-9a-fA-F]*\.[0-9a-fA-F]+|[0-9a-fA-F]+\.[0-9a-fA-F]*)((p|P)(\+|-)?[0-9]+[fh]?)?)|([0-9a-fA-F]+(p|P)(\+|-)?[0-9]+[fh]?))/),int_literal:new g("int_literal",x.token,/-?0x[0-9a-fA-F]+|0i?|-?[1-9][0-9]*i?/),uint_literal:new g("uint_literal",x.token,/0x[0-9a-fA-F]+u|0u|[1-9][0-9]*u/),name:new g("name",x.token,/([_\p{XID_Start}][\p{XID_Continue}]+)|([\p{XID_Start}])/u),ident:new g("ident",x.token,/[_a-zA-Z][0-9a-zA-Z_]*/),and:new g("and",x.token,"&"),and_and:new g("and_and",x.token,"&&"),arrow:new g("arrow ",x.token,"->"),attr:new g("attr",x.token,"@"),forward_slash:new g("forward_slash",x.token,"/"),bang:new g("bang",x.token,"!"),bracket_left:new g("bracket_left",x.token,"["),bracket_right:new g("bracket_right",x.token,"]"),brace_left:new g("brace_left",x.token,"{"),brace_right:new g("brace_right",x.token,"}"),colon:new g("colon",x.token,":"),comma:new g("comma",x.token,","),equal:new g("equal",x.token,"="),equal_equal:new g("equal_equal",x.token,"=="),not_equal:new g("not_equal",x.token,"!="),greater_than:new g("greater_than",x.token,">"),greater_than_equal:new g("greater_than_equal",x.token,">="),shift_right:new g("shift_right",x.token,">>"),less_than:new g("less_than",x.token,"<"),less_than_equal:new g("less_than_equal",x.token,"<="),shift_left:new g("shift_left",x.token,"<<"),modulo:new g("modulo",x.token,"%"),minus:new g("minus",x.token,"-"),minus_minus:new g("minus_minus",x.token,"--"),period:new g("period",x.token,"."),plus:new g("plus",x.token,"+"),plus_plus:new g("plus_plus",x.token,"++"),or:new g("or",x.token,"|"),or_or:new g("or_or",x.token,"||"),paren_left:new g("paren_left",x.token,"("),paren_right:new g("paren_right",x.token,")"),semicolon:new g("semicolon",x.token,";"),star:new g("star",x.token,"*"),tilde:new g("tilde",x.token,"~"),underscore:new g("underscore",x.token,"_"),xor:new g("xor",x.token,"^"),plus_equal:new g("plus_equal",x.token,"+="),minus_equal:new g("minus_equal",x.token,"-="),times_equal:new g("times_equal",x.token,"*="),division_equal:new g("division_equal",x.token,"/="),modulo_equal:new g("modulo_equal",x.token,"%="),and_equal:new g("and_equal",x.token,"&="),or_equal:new g("or_equal",x.token,"|="),xor_equal:new g("xor_equal",x.token,"^="),shift_right_equal:new g("shift_right_equal",x.token,">>="),shift_left_equal:new g("shift_left_equal",x.token,"<<=")},h.simpleTokens={"@":b.tokens.attr,"{":b.tokens.brace_left,"}":b.tokens.brace_right,":":b.tokens.colon,",":b.tokens.comma,"(":b.tokens.paren_left,")":b.tokens.paren_right,";":b.tokens.semicolon},h.literalTokens={"&":b.tokens.and,"&&":b.tokens.and_and,"->":b.tokens.arrow,"/":b.tokens.forward_slash,"!":b.tokens.bang,"[":b.tokens.bracket_left,"]":b.tokens.bracket_right,"=":b.tokens.equal,"==":b.tokens.equal_equal,"!=":b.tokens.not_equal,">":b.tokens.greater_than,">=":b.tokens.greater_than_equal,">>":b.tokens.shift_right,"<":b.tokens.less_than,"<=":b.tokens.less_than_equal,"<<":b.tokens.shift_left,"%":b.tokens.modulo,"-":b.tokens.minus,"--":b.tokens.minus_minus,".":b.tokens.period,"+":b.tokens.plus,"++":b.tokens.plus_plus,"|":b.tokens.or,"||":b.tokens.or_or,"*":b.tokens.star,"~":b.tokens.tilde,_:b.tokens.underscore,"^":b.tokens.xor,"+=":b.tokens.plus_equal,"-=":b.tokens.minus_equal,"*=":b.tokens.times_equal,"/=":b.tokens.division_equal,"%=":b.tokens.modulo_equal,"&=":b.tokens.and_equal,"|=":b.tokens.or_equal,"^=":b.tokens.xor_equal,">>=":b.tokens.shift_right_equal,"<<=":b.tokens.shift_left_equal},h.regexTokens={decimal_float_literal:b.tokens.decimal_float_literal,hex_float_literal:b.tokens.hex_float_literal,int_literal:b.tokens.int_literal,uint_literal:b.tokens.uint_literal,ident:b.tokens.ident},h.storage_class=[b.keywords.function,b.keywords.private,b.keywords.workgroup,b.keywords.uniform,b.keywords.storage,b.keywords.immediate],h.access_mode=[b.keywords.read,b.keywords.write,b.keywords.read_write],h.sampler_type=[b.keywords.sampler,b.keywords.sampler_comparison],h.sampled_texture_type=[b.keywords.texture_1d,b.keywords.texture_2d,b.keywords.texture_2d_array,b.keywords.texture_3d,b.keywords.texture_cube,b.keywords.texture_cube_array],h.multisampled_texture_type=[b.keywords.texture_multisampled_2d],h.storage_texture_type=[b.keywords.texture_storage_1d,b.keywords.texture_storage_2d,b.keywords.texture_storage_2d_array,b.keywords.texture_storage_3d],h.depth_texture_type=[b.keywords.texture_depth_2d,b.keywords.texture_depth_2d_array,b.keywords.texture_depth_cube,b.keywords.texture_depth_cube_array,b.keywords.texture_depth_multisampled_2d],h.texture_external_type=[b.keywords.texture_external],h.any_texture_type=[...b.sampled_texture_type,...b.multisampled_texture_type,...b.storage_texture_type,...b.depth_texture_type,...b.texture_external_type],h.texel_format=[b.keywords.r8unorm,b.keywords.r8snorm,b.keywords.r8uint,b.keywords.r8sint,b.keywords.r16uint,b.keywords.r16sint,b.keywords.r16float,b.keywords.rg8unorm,b.keywords.rg8snorm,b.keywords.rg8uint,b.keywords.rg8sint,b.keywords.r32uint,b.keywords.r32sint,b.keywords.r32float,b.keywords.rg16uint,b.keywords.rg16sint,b.keywords.rg16float,b.keywords.rgba8unorm,b.keywords.rgba8unorm_srgb,b.keywords.rgba8snorm,b.keywords.rgba8uint,b.keywords.rgba8sint,b.keywords.bgra8unorm,b.keywords.bgra8unorm_srgb,b.keywords.rgb10a2unorm,b.keywords.rg11b10float,b.keywords.rg32uint,b.keywords.rg32sint,b.keywords.rg32float,b.keywords.rgba16uint,b.keywords.rgba16sint,b.keywords.rgba16float,b.keywords.rgba32uint,b.keywords.rgba32sint,b.keywords.rgba32float],h.const_literal=[b.tokens.int_literal,b.tokens.uint_literal,b.tokens.decimal_float_literal,b.tokens.hex_float_literal,b.keywords.true,b.keywords.false],h.literal_or_ident=[b.tokens.ident,b.tokens.int_literal,b.tokens.uint_literal,b.tokens.decimal_float_literal,b.tokens.hex_float_literal,b.tokens.name],h.element_count_expression=[b.tokens.int_literal,b.tokens.uint_literal,b.tokens.ident],h.template_types=[b.keywords.vec2,b.keywords.vec3,b.keywords.vec4,b.keywords.mat2x2,b.keywords.mat2x3,b.keywords.mat2x4,b.keywords.mat3x2,b.keywords.mat3x3,b.keywords.mat3x4,b.keywords.mat4x2,b.keywords.mat4x3,b.keywords.mat4x4,b.keywords.atomic,b.keywords.bitcast,...b.any_texture_type],h.attribute_name=[b.tokens.ident,b.keywords.block,b.keywords.diagnostic],h.assignment_operators=[b.tokens.equal,b.tokens.plus_equal,b.tokens.minus_equal,b.tokens.times_equal,b.tokens.division_equal,b.tokens.modulo_equal,b.tokens.and_equal,b.tokens.or_equal,b.tokens.xor_equal,b.tokens.shift_right_equal,b.tokens.shift_left_equal],h.increment_operators=[b.tokens.plus_plus,b.tokens.minus_minus];var Bo=class{constructor(e,r,n,s,o){this.type=e,this.lexeme=r,this.line=n,this.start=s,this.end=o}toString(){return this.lexeme}isTemplateType(){return h.template_types.includes(this.type)}isArrayType(){return this.type===h.keywords.array}isArrayOrTemplateType(){return this.isArrayType()||this.isTemplateType()}},Uo=class t{constructor(e){this._tokens=[],this._start=0,this._current=0,this._line=1,this._source=e??""}scanTokens(){for(;!this._isAtEnd();)if(this._start=this._current,!this.scanToken())throw`Invalid syntax at line ${this._line}`;return this._tokens.push(new Bo(h.eof,"",this._line,this._current,this._current)),this._tokens}scanToken(){let e=this._advance();if(e==`
42
42
  `)return this._line++,!0;if(this._isWhitespace(e))return!0;if(e=="/"){if(this._peekAhead()=="/"){for(;e!=`
43
43
  `;){if(this._isAtEnd())return!0;e=this._advance()}return this._line++,!0}if(this._peekAhead()=="*"){this._advance();let a=1;for(;a>0;){if(this._isAtEnd())return!0;if(e=this._advance(),e==`
44
- `)this._line++;else if(e=="*"){if(this._peekAhead()=="/"&&(this._advance(),a--,a==0))return!0}else e=="/"&&this._peekAhead()=="*"&&(this._advance(),a++)}return!0}}let r=h.simpleTokens[e];if(r)return this._addToken(r),!0;let n=h.none,s=this._isAlpha(e),o=e==="_";if(this._isAlphaNumeric(e)){let a=this._peekAhead();for(;this._isAlphaNumeric(a);)e+=this._advance(),a=this._peekAhead()}if(s){let a=h.keywords[e];if(a)return this._addToken(a),!0}if(s||o)return this._addToken(h.tokens.ident),!0;for(;;){let a=this._findType(e),i=this._peekAhead();if(e=="-"&&this._tokens.length>0){if(i=="=")return this._current++,e+=i,this._addToken(h.tokens.minus_equal),!0;if(i=="-")return this._current++,e+=i,this._addToken(h.tokens.minus_minus),!0;let u=this._tokens.length-1;if((h.literal_or_ident.indexOf(this._tokens[u].type)!=-1||this._tokens[u].type==h.tokens.paren_right)&&i!=">")return this._addToken(a),!0}if(e==">"&&(i==">"||i=="=")){let u=!1,l=this._tokens.length-1;for(let c=0;c<5&&l>=0&&h.assignment_operators.indexOf(this._tokens[l].type)===-1;++c,--l)if(this._tokens[l].type===h.tokens.less_than){l>0&&this._tokens[l-1].isArrayOrTemplateType()&&(u=!0);break}if(u)return this._addToken(a),!0}if(a===h.none){let u=e,l=0,c=2;for(let f=0;f<c;++f)if(u+=this._peekAhead(f),a=this._findType(u),a!==h.none){l=f;break}if(a===h.none)return n!==h.none&&(this._current--,this._addToken(n),!0);e=u,this._current+=l+1}if(n=a,this._isAtEnd())break;e+=this._advance()}return n!==h.none&&(this._addToken(n),!0)}_findType(e){for(let n in h.regexTokens){let s=h.regexTokens[n];if(this._match(e,s.rule))return s}return h.literalTokens[e]||h.none}_match(e,r){let n=r.exec(e);return n&&n.index==0&&n[0]==e}_isAtEnd(){return this._current>=this._source.length}_isAlpha(e){return!this._isNumeric(e)&&!this._isWhitespace(e)&&e!=="_"&&e!=="."&&e!=="("&&e!==")"&&e!=="["&&e!=="]"&&e!=="{"&&e!=="}"&&e!==","&&e!==";"&&e!==":"&&e!=="="&&e!=="!"&&e!=="<"&&e!==">"&&e!=="+"&&e!=="-"&&e!=="*"&&e!=="/"&&e!=="%"&&e!=="&"&&e!=="|"&&e!=="^"&&e!=="~"&&e!=="@"&&e!=="#"&&e!=="?"&&e!=="'"&&e!=="`"&&e!=='"'&&e!=="\\"&&e!==`
45
- `&&e!=="\r"&&e!==" "&&e!=="\0"}_isNumeric(e){return e>="0"&&e<="9"}_isAlphaNumeric(e){return this._isAlpha(e)||this._isNumeric(e)||e==="_"}_isWhitespace(e){return e==" "||e==" "||e=="\r"}_advance(e=0){let r=this._source[this._current];return e=e||0,e++,this._current+=e,r}_peekAhead(e=0){return e=e||0,this._current+e>=this._source.length?"\0":this._source[this._current+e]}_addToken(e){let r=this._source.substring(this._start,this._current);this._tokens.push(new Co(e,r,this._line,this._start,this._current))}};function L(t){return Array.isArray(t)||t?.buffer instanceof ArrayBuffer}var Fo=new Float32Array(1),Mm=new Uint32Array(Fo.buffer),Nm=new Uint32Array(Fo.buffer),Bo=new Int32Array(1),Gm=new Float32Array(Bo.buffer),Vm=new Uint32Array(Bo.buffer),Uo=new Uint32Array(1),Wm=new Float32Array(Uo.buffer),$m=new Int32Array(Uo.buffer);function qf(t,e,r){if(e===r)return t;if(e==="f32"){if(r==="i32"||r==="x32")return Fo[0]=t,Mm[0];if(r==="u32")return Fo[0]=t,Nm[0]}else if(e==="i32"||e==="x32"){if(r==="f32")return Bo[0]=t,Gm[0];if(r==="u32")return Bo[0]=t,Vm[0]}else if(e==="u32"){if(r==="f32")return Uo[0]=t,Wm[0];if(r==="i32"||r==="x32")return Uo[0]=t,$m[0]}return console.error(`Unsupported cast from ${e} to ${r}`),t}var ji=class{constructor(e){this.resources=null,this.inUse=!1,this.info=null,this.node=e}},xn=class{constructor(e,r){this.align=e,this.size=r}},Dr=class t{constructor(){this.uniforms=[],this.storage=[],this.textures=[],this.samplers=[],this.aliases=[],this.overrides=[],this.structs=[],this.entry=new Gi,this.functions=[],this._types=new Map,this._functions=new Map}_isStorageTexture(e){return e.name=="texture_storage_1d"||e.name=="texture_storage_2d"||e.name=="texture_storage_2d_array"||e.name=="texture_storage_3d"}updateAST(e){for(let r of e)r instanceof Mr&&this._functions.set(r.name,new ji(r));for(let r of e)if(r instanceof Mt){let n=this.getTypeInfo(r,null);n instanceof qt&&this.structs.push(n)}for(let r of e)if(r instanceof ts)this.aliases.push(this._getAliasInfo(r));else if(r instanceof Qn){let n=r,s=this._getAttributeNum(n.attributes,"id",0),o=n.type!=null?this.getTypeInfo(n.type,n.attributes):null;this.overrides.push(new Di(n.name,o,n.attributes,s))}else if(this._isUniformVar(r)){let n=r,s=this._getAttributeNum(n.attributes,"group",0),o=this._getAttributeNum(n.attributes,"binding",0),a=this.getTypeInfo(n.type,n.attributes),i=new pn(n.name,a,s,o,n.attributes,Ne.Uniform,n.access);i.access||(i.access="read"),this.uniforms.push(i)}else if(this._isStorageVar(r)){let n=r,s=this._getAttributeNum(n.attributes,"group",0),o=this._getAttributeNum(n.attributes,"binding",0),a=this.getTypeInfo(n.type,n.attributes),i=this._isStorageTexture(a),u=new pn(n.name,a,s,o,n.attributes,i?Ne.StorageTexture:Ne.Storage,n.access);u.access||(u.access="read"),this.storage.push(u)}else if(this._isTextureVar(r)){let n=r,s=this._getAttributeNum(n.attributes,"group",0),o=this._getAttributeNum(n.attributes,"binding",0),a=this.getTypeInfo(n.type,n.attributes),i=this._isStorageTexture(a),u=new pn(n.name,a,s,o,n.attributes,i?Ne.StorageTexture:Ne.Texture,n.access);u.access||(u.access="read"),i?this.storage.push(u):this.textures.push(u)}else if(this._isSamplerVar(r)){let n=r,s=this._getAttributeNum(n.attributes,"group",0),o=this._getAttributeNum(n.attributes,"binding",0),a=this.getTypeInfo(n.type,n.attributes),i=new pn(n.name,a,s,o,n.attributes,Ne.Sampler,n.access);this.samplers.push(i)}for(let r of e)if(r instanceof Mr){let n=this._getAttribute(r,"vertex"),s=this._getAttribute(r,"fragment"),o=this._getAttribute(r,"compute"),a=n||s||o,i=new Ni(r.name,a?.name,r.attributes);i.attributes=r.attributes,i.startLine=r.startLine,i.endLine=r.endLine,this.functions.push(i),this._functions.get(r.name).info=i,a&&(this._functions.get(r.name).inUse=!0,i.inUse=!0,i.resources=this._findResources(r,!!a),i.inputs=this._getInputs(r.args),i.outputs=this._getOutputs(r.returnType),this.entry[a.name].push(i)),i.arguments=r.args.map(u=>new Mi(u.name,this.getTypeInfo(u.type,u.attributes),u.attributes)),i.returnType=r.returnType?this.getTypeInfo(r.returnType,r.attributes):null}for(let r of this._functions.values())r.info&&(r.info.inUse=r.inUse,this._addCalls(r.node,r.info.calls));for(let r of this._functions.values())r.node.search(n=>{var s,o,a;if(n instanceof So){if(n.value)if(L(n.value))for(let i of n.value)for(let u of this.overrides)i===u.name&&((s=r.info)===null||s===void 0||s.overrides.push(u));else for(let i of this.overrides)n.value===i.name&&((o=r.info)===null||o===void 0||o.overrides.push(i))}else if(n instanceof Qe)for(let i of this.overrides)n.name===i.name&&((a=r.info)===null||a===void 0||a.overrides.push(i))});for(let r of this.uniforms)this._markStructsInUse(r.type);for(let r of this.storage)this._markStructsInUse(r.type)}getStructInfo(e){for(let r of this.structs)if(r.name==e)return r;return null}getOverrideInfo(e){for(let r of this.overrides)if(r.name==e)return r;return null}_markStructsInUse(e){if(e)if(e.isStruct){if(e.inUse=!0,e.members)for(let r of e.members)this._markStructsInUse(r.type)}else if(e.isArray)this._markStructsInUse(e.format);else if(e.isTemplate)e.format&&this._markStructsInUse(e.format);else{let r=this._getAlias(e.name);r&&this._markStructsInUse(r)}}_addCalls(e,r){var n;for(let s of e.calls){let o=(n=this._functions.get(s.name))===null||n===void 0?void 0:n.info;o&&r.add(o)}}findResource(e,r,n){if(n){for(let s of this.entry.compute)if(s.name===n){for(let o of s.resources)if(o.group==e&&o.binding==r)return o}for(let s of this.entry.vertex)if(s.name===n){for(let o of s.resources)if(o.group==e&&o.binding==r)return o}for(let s of this.entry.fragment)if(s.name===n){for(let o of s.resources)if(o.group==e&&o.binding==r)return o}}for(let s of this.uniforms)if(s.group==e&&s.binding==r)return s;for(let s of this.storage)if(s.group==e&&s.binding==r)return s;for(let s of this.textures)if(s.group==e&&s.binding==r)return s;for(let s of this.samplers)if(s.group==e&&s.binding==r)return s;return null}_findResource(e){for(let r of this.uniforms)if(r.name==e)return r;for(let r of this.storage)if(r.name==e)return r;for(let r of this.textures)if(r.name==e)return r;for(let r of this.samplers)if(r.name==e)return r;return null}_markStructsFromAST(e){let r=this.getTypeInfo(e,null);this._markStructsInUse(r)}_findResources(e,r){let n=[],s=this,o=[];return e.search(a=>{if(a instanceof wn)o.push({});else if(a instanceof Tn)o.pop();else if(a instanceof Nt){let i=a;r&&i.type!==null&&this._markStructsFromAST(i.type),o.length>0&&(o[o.length-1][i.name]=i)}else if(a instanceof At){let i=a;r&&i.type!==null&&this._markStructsFromAST(i.type)}else if(a instanceof Pr){let i=a;r&&i.type!==null&&this._markStructsFromAST(i.type),o.length>0&&(o[o.length-1][i.name]=i)}else if(a instanceof Qe){let i=a;if(o.length>0&&o[o.length-1][i.name])return;let u=s._findResource(i.name);u&&n.push(u)}else if(a instanceof rs){let i=a,u=s._functions.get(i.name);u&&(r&&(u.inUse=!0),e.calls.add(u.node),u.resources===null&&(u.resources=s._findResources(u.node,r)),n.push(...u.resources))}else if(a instanceof es){let i=a,u=s._functions.get(i.name);u&&(r&&(u.inUse=!0),e.calls.add(u.node),u.resources===null&&(u.resources=s._findResources(u.node,r)),n.push(...u.resources))}}),[...new Map(n.map(a=>[a.name,a])).values()]}getBindGroups(){let e=[];function r(n,s){n>=e.length&&(e.length=n+1),e[n]===void 0&&(e[n]=[]),s>=e[n].length&&(e[n].length=s+1)}for(let n of this.uniforms)r(n.group,n.binding),e[n.group][n.binding]=n;for(let n of this.storage)r(n.group,n.binding),e[n.group][n.binding]=n;for(let n of this.textures)r(n.group,n.binding),e[n.group][n.binding]=n;for(let n of this.samplers)r(n.group,n.binding),e[n.group][n.binding]=n;return e}_getOutputs(e,r=void 0){if(r===void 0&&(r=[]),e instanceof Mt)this._getStructOutputs(e,r);else{let n=this._getOutputInfo(e);n!==null&&r.push(n)}return r}_getStructOutputs(e,r){for(let n of e.members)if(n.type instanceof Mt)this._getStructOutputs(n.type,r);else{let s=this._getAttribute(n,"location")||this._getAttribute(n,"builtin");if(s!==null){let o=this.getTypeInfo(n.type,n.type.attributes),a=this._parseInt(s.value),i=new io(n.name,o,s.name,a);r.push(i)}}}_getOutputInfo(e){let r=this._getAttribute(e,"location")||this._getAttribute(e,"builtin");if(r!==null){let n=this.getTypeInfo(e,e.attributes),s=this._parseInt(r.value);return new io("",n,r.name,s)}return null}_getInputs(e,r=void 0){r===void 0&&(r=[]);for(let n of e)if(n.type instanceof Mt)this._getStructInputs(n.type,r);else{let s=this._getInputInfo(n);s!==null&&r.push(s)}return r}_getStructInputs(e,r){for(let n of e.members)if(n.type instanceof Mt)this._getStructInputs(n.type,r);else{let s=this._getInputInfo(n);s!==null&&r.push(s)}}_getInputInfo(e){let r=this._getAttribute(e,"location")||this._getAttribute(e,"builtin");if(r!==null){let n=this._getAttribute(e,"interpolation"),s=this.getTypeInfo(e.type,e.attributes),o=this._parseInt(r.value),a=new Oi(e.name,s,r.name,o);return n!==null&&(a.interpolation=this._parseString(n.value)),a}return null}_parseString(e){return e instanceof Array&&(e=e[0]),e}_parseInt(e){e instanceof Array&&(e=e[0]);let r=parseInt(e);return isNaN(r)?e:r}_getAlias(e){for(let r of this.aliases)if(r.name==e)return r.type;return null}_getAliasInfo(e){return new Pi(e.name,this.getTypeInfo(e.type,null))}getTypeInfoByName(e){for(let r of this.structs)if(r.name==e)return r;for(let r of this.aliases)if(r.name==e)return r.type;return null}getTypeInfo(e,r=null){if(this._types.has(e))return this._types.get(e);if(e instanceof _n){let s=e.type?this.getTypeInfo(e.type,e.attributes):null,o=new Zn(e.name,s,r);return this._types.set(e,o),this._updateTypeInfo(o),o}if(e instanceof Or){let s=e,o=s.format?this.getTypeInfo(s.format,s.attributes):null,a=new Kt(s.name,r);return a.format=o,a.count=s.count,this._types.set(e,a),this._updateTypeInfo(a),a}if(e instanceof Mt){let s=e,o=new qt(s.name,r);o.startLine=s.startLine,o.endLine=s.endLine;for(let a of s.members){let i=this.getTypeInfo(a.type,a.attributes);o.members.push(new ao(a.name,i,a.attributes))}return this._types.set(e,o),this._updateTypeInfo(o),o}if(e instanceof Lr){let s=e,o=s.format instanceof R,a=s.format?o?this.getTypeInfo(s.format,null):new st(s.format,null):null,i=new ir(s.name,a,r,s.access);return this._types.set(e,i),this._updateTypeInfo(i),i}if(e instanceof _){let s=e,o=s.format?this.getTypeInfo(s.format,null):null,a=new ir(s.name,o,r,s.access);return this._types.set(e,a),this._updateTypeInfo(a),a}let n=new st(e.name,r);return this._types.set(e,n),this._updateTypeInfo(n),n}_updateTypeInfo(e){var r,n,s;let o=this._getTypeSize(e);if(e.size=(r=o?.size)!==null&&r!==void 0?r:0,e instanceof Kt&&e.format){let a=this._getTypeSize(e.format);e.stride=Math.max((n=a?.size)!==null&&n!==void 0?n:0,(s=a?.align)!==null&&s!==void 0?s:0),this._updateTypeInfo(e.format)}e instanceof Zn&&this._updateTypeInfo(e.format),e instanceof qt&&this._updateStructInfo(e)}_updateStructInfo(e){var r;let n=0,s=0,o=0,a=0;for(let i=0,u=e.members.length;i<u;++i){let l=e.members[i],c=this._getTypeSize(l);if(!c)continue;(r=this._getAlias(l.type.name))!==null&&r!==void 0||l.type;let f=c.align,m=c.size;n=this._roundUp(f,n+s),s=m,o=n,a=Math.max(a,f),l.offset=n,l.size=m,this._updateTypeInfo(l.type)}e.size=this._roundUp(a,o+s),e.align=a}_getTypeSize(e){var r,n;if(e==null)return null;let s=this._getAttributeNum(e.attributes,"size",0),o=this._getAttributeNum(e.attributes,"align",0);if(e instanceof ao&&(e=e.type),e instanceof st){let a=this._getAlias(e.name);a!==null&&(e=a)}{let a=t._typeInfo[e.name];if(a!==void 0){let i=((r=e.format)===null||r===void 0?void 0:r.name)==="f16"?2:1;return new xn(Math.max(o,a.align/i),Math.max(s,a.size/i))}}{let a=t._typeInfo[e.name.substring(0,e.name.length-1)];if(a){let i=e.name[e.name.length-1]==="h"?2:1;return new xn(Math.max(o,a.align/i),Math.max(s,a.size/i))}}if(e instanceof Kt){let a=e,i=8,u=8,l=this._getTypeSize(a.format);return l!==null&&(u=l.size,i=l.align),u=a.count*this._getAttributeNum((n=e?.attributes)!==null&&n!==void 0?n:null,"stride",this._roundUp(i,u)),s&&(u=s),new xn(Math.max(o,i),Math.max(s,u))}if(e instanceof qt){let a=0,i=0,u=0,l=0,c=0;for(let f of e.members){let m=this._getTypeSize(f.type);m!==null&&(a=Math.max(m.align,a),u=this._roundUp(m.align,u+l),l=m.size,c=u)}return i=this._roundUp(a,c+l),new xn(Math.max(o,a),Math.max(s,i))}return null}_isUniformVar(e){return e instanceof Nt&&e.storage=="uniform"}_isStorageVar(e){return e instanceof Nt&&e.storage=="storage"}_isTextureVar(e){return e instanceof Nt&&e.type!==null&&t._textureTypes.indexOf(e.type.name)!=-1}_isSamplerVar(e){return e instanceof Nt&&e.type!==null&&t._samplerTypes.indexOf(e.type.name)!=-1}_getAttribute(e,r){let n=e;if(!n||!n.attributes)return null;let s=n.attributes;for(let o of s)if(o.name==r)return o;return null}_getAttributeNum(e,r,n){if(e===null)return n;for(let s of e)if(s.name==r){let o=s!==null&&s.value!==null?s.value:n;return o instanceof Array&&(o=o[0]),typeof o=="number"?o:typeof o=="string"?parseInt(o):n}return n}_roundUp(e,r){return Math.ceil(r/e)*e}};Dr._typeInfo={f16:{align:2,size:2},i32:{align:4,size:4},u32:{align:4,size:4},f32:{align:4,size:4},atomic:{align:4,size:4},vec2:{align:8,size:8},vec3:{align:16,size:12},vec4:{align:16,size:16},mat2x2:{align:8,size:16},mat3x2:{align:8,size:24},mat4x2:{align:8,size:32},mat2x3:{align:16,size:32},mat3x3:{align:16,size:48},mat4x3:{align:16,size:64},mat2x4:{align:16,size:32},mat3x4:{align:16,size:48},mat4x4:{align:16,size:64}},Dr._textureTypes=h.any_texture_type.map(t=>t.name),Dr._samplerTypes=h.sampler_type.map(t=>t.name);var su=0,Yi=class t{constructor(e,r,n){this.id=su++,this.name=e,this.value=r,this.node=n}clone(){return new t(this.name,this.value,this.node)}},qi=class t{constructor(e){this.id=su++,this.name=e.name,this.node=e}clone(){return new t(this.node)}},Ki=class t{constructor(e){this.parent=null,this.variables=new Map,this.functions=new Map,this.currentFunctionName="",this.id=su++,e&&(this.parent=e,this.currentFunctionName=e.currentFunctionName)}getVariable(e){var r;return this.variables.has(e)?(r=this.variables.get(e))!==null&&r!==void 0?r:null:this.parent?this.parent.getVariable(e):null}getFunction(e){var r;return this.functions.has(e)?(r=this.functions.get(e))!==null&&r!==void 0?r:null:this.parent?this.parent.getFunction(e):null}createVariable(e,r,n){this.variables.set(e,new Yi(e,r,n??null))}setVariable(e,r,n){let s=this.getVariable(e);s!==null?s.value=r:this.createVariable(e,r,n)}getVariableValue(e){var r;let n=this.getVariable(e);return(r=n?.value)!==null&&r!==void 0?r:null}clone(){return new t(this)}},Zi=class{evalExpression(e,r){return null}getTypeInfo(e){return null}getVariableName(e,r){return""}},Ji=class{constructor(e){this.exec=e}getTypeInfo(e){return this.exec.getTypeInfo(e)}All(e,r){let n=this.exec.evalExpression(e.args[0],r),s=!0;if(n instanceof d)return n.data.forEach(o=>{o||(s=!1)}),new y(s?1:0,this.getTypeInfo("bool"));throw new Error(`All() expects a vector argument. Line ${e.line}`)}Any(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof d){let s=n.data.some(o=>o);return new y(s?1:0,this.getTypeInfo("bool"))}throw new Error(`Any() expects a vector argument. Line ${e.line}`)}Select(e,r){let n=this.exec.evalExpression(e.args[2],r);if(!(n instanceof y))throw new Error(`Select() expects a bool condition. Line ${e.line}`);return n.value?this.exec.evalExpression(e.args[1],r):this.exec.evalExpression(e.args[0],r)}ArrayLength(e,r){let n=e.args[0];n instanceof Ee&&(n=n.right);let s=this.exec.evalExpression(n,r);if(s instanceof Le&&s.typeInfo.size===0){let o=s.typeInfo,a=s.buffer.byteLength/o.stride;return new y(a,this.getTypeInfo("u32"))}return new y(s.typeInfo.size,this.getTypeInfo("u32"))}Abs(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof d)return new d(n.data.map(o=>Math.abs(o)),n.typeInfo);let s=n;return new y(Math.abs(s.value),s.typeInfo)}Acos(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof d)return new d(n.data.map(o=>Math.acos(o)),n.typeInfo);let s=n;return new y(Math.acos(s.value),n.typeInfo)}Acosh(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof d)return new d(n.data.map(o=>Math.acosh(o)),n.typeInfo);let s=n;return new y(Math.acosh(s.value),n.typeInfo)}Asin(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof d)return new d(n.data.map(o=>Math.asin(o)),n.typeInfo);let s=n;return new y(Math.asin(s.value),n.typeInfo)}Asinh(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof d)return new d(n.data.map(o=>Math.asinh(o)),n.typeInfo);let s=n;return new y(Math.asinh(s.value),n.typeInfo)}Atan(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof d)return new d(n.data.map(o=>Math.atan(o)),n.typeInfo);let s=n;return new y(Math.atan(s.value),n.typeInfo)}Atanh(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof d)return new d(n.data.map(o=>Math.atanh(o)),n.typeInfo);let s=n;return new y(Math.atanh(s.value),n.typeInfo)}Atan2(e,r){let n=this.exec.evalExpression(e.args[0],r),s=this.exec.evalExpression(e.args[1],r);if(n instanceof d&&s instanceof d)return new d(n.data.map((i,u)=>Math.atan2(i,s.data[u])),n.typeInfo);let o=n,a=s;return new y(Math.atan2(o.value,a.value),n.typeInfo)}Ceil(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof d)return new d(n.data.map(o=>Math.ceil(o)),n.typeInfo);let s=n;return new y(Math.ceil(s.value),n.typeInfo)}_clamp(e,r,n){return Math.min(Math.max(e,r),n)}Clamp(e,r){let n=this.exec.evalExpression(e.args[0],r),s=this.exec.evalExpression(e.args[1],r),o=this.exec.evalExpression(e.args[2],r);if(n instanceof d&&s instanceof d&&o instanceof d)return new d(n.data.map((l,c)=>this._clamp(l,s.data[c],o.data[c])),n.typeInfo);let a=n,i=s,u=o;return new y(this._clamp(a.value,i.value,u.value),n.typeInfo)}Cos(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof d)return new d(n.data.map(o=>Math.cos(o)),n.typeInfo);let s=n;return new y(Math.cos(s.value),n.typeInfo)}Cosh(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof d)return new d(n.data.map(o=>Math.cosh(o)),n.typeInfo);let s=n;return new y(Math.cos(s.value),n.typeInfo)}CountLeadingZeros(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof d)return new d(n.data.map(o=>Math.clz32(o)),n.typeInfo);let s=n;return new y(Math.clz32(s.value),n.typeInfo)}_countOneBits(e){let r=0;for(;e!==0;)1&e&&r++,e>>=1;return r}CountOneBits(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof d)return new d(n.data.map(o=>this._countOneBits(o)),n.typeInfo);let s=n;return new y(this._countOneBits(s.value),n.typeInfo)}_countTrailingZeros(e){if(e===0)return 32;let r=0;for(;!(1&e);)e>>=1,r++;return r}CountTrailingZeros(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof d)return new d(n.data.map(o=>this._countTrailingZeros(o)),n.typeInfo);let s=n;return new y(this._countTrailingZeros(s.value),n.typeInfo)}Cross(e,r){let n=this.exec.evalExpression(e.args[0],r),s=this.exec.evalExpression(e.args[1],r);if(n instanceof d&&s instanceof d){if(n.data.length!==3||s.data.length!==3)return console.error(`Cross() expects 3D vectors. Line ${e.line}`),null;let o=n.data,a=s.data;return new d([o[1]*a[2]-a[1]*o[2],o[2]*a[0]-a[2]*o[0],o[0]*a[1]-a[0]*o[1]],n.typeInfo)}return console.error(`Cross() expects vector arguments. Line ${e.line}`),null}Degrees(e,r){let n=this.exec.evalExpression(e.args[0],r),s=180/Math.PI;return n instanceof d?new d(n.data.map(o=>o*s),n.typeInfo):new y(n.value*s,this.getTypeInfo("f32"))}Determinant(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof H){let s=n.data,o=n.typeInfo.getTypeName(),a=o.endsWith("h")?this.getTypeInfo("f16"):this.getTypeInfo("f32");if(o==="mat2x2"||o==="mat2x2f"||o==="mat2x2h")return new y(s[0]*s[3]-s[1]*s[2],a);if(o==="mat2x3"||o==="mat2x3f"||o==="mat2x3h")return new y(s[0]*(s[4]*s[8]-s[5]*s[7])-s[1]*(s[3]*s[8]-s[5]*s[6])+s[2]*(s[3]*s[7]-s[4]*s[6]),a);if(o==="mat2x4"||o==="mat2x4f"||o==="mat2x4h")console.error(`TODO: Determinant for ${o}`);else if(o==="mat3x2"||o==="mat3x2f"||o==="mat3x2h")console.error(`TODO: Determinant for ${o}`);else{if(o==="mat3x3"||o==="mat3x3f"||o==="mat3x3h")return new y(s[0]*(s[4]*s[8]-s[5]*s[7])-s[1]*(s[3]*s[8]-s[5]*s[6])+s[2]*(s[3]*s[7]-s[4]*s[6]),a);o==="mat3x4"||o==="mat3x4f"||o==="mat3x4h"||o==="mat4x2"||o==="mat4x2f"||o==="mat4x2h"||o==="mat4x3"||o==="mat4x3f"||o==="mat4x3h"?console.error(`TODO: Determinant for ${o}`):o!=="mat4x4"&&o!=="mat4x4f"&&o!=="mat4x4h"||console.error(`TODO: Determinant for ${o}`)}}return console.error(`Determinant expects a matrix argument. Line ${e.line}`),null}Distance(e,r){let n=this.exec.evalExpression(e.args[0],r),s=this.exec.evalExpression(e.args[1],r);if(n instanceof d&&s instanceof d){let i=0;for(let u=0;u<n.data.length;++u)i+=(n.data[u]-s.data[u])*(n.data[u]-s.data[u]);return new y(Math.sqrt(i),this.getTypeInfo("f32"))}let o=n,a=s;return new y(Math.abs(o.value-a.value),n.typeInfo)}_dot(e,r){let n=0;for(let s=0;s<e.length;++s)n+=r[s]*e[s];return n}Dot(e,r){let n=this.exec.evalExpression(e.args[0],r),s=this.exec.evalExpression(e.args[1],r);return n instanceof d&&s instanceof d?new y(this._dot(n.data,s.data),this.getTypeInfo("f32")):(console.error(`Dot() expects vector arguments. Line ${e.line}`),null)}Dot4U8Packed(e,r){return console.error(`TODO: dot4U8Packed. Line ${e.line}`),null}Dot4I8Packed(e,r){return console.error(`TODO: dot4I8Packed. Line ${e.line}`),null}Exp(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof d)return new d(n.data.map(o=>Math.exp(o)),n.typeInfo);let s=n;return new y(Math.exp(s.value),n.typeInfo)}Exp2(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof d)return new d(n.data.map(o=>Math.pow(2,o)),n.typeInfo);let s=n;return new y(Math.pow(2,s.value),n.typeInfo)}ExtractBits(e,r){let n=this.exec.evalExpression(e.args[0],r),s=this.exec.evalExpression(e.args[1],r),o=this.exec.evalExpression(e.args[2],r);if(s.typeInfo.name!=="u32"&&s.typeInfo.name!=="x32")return console.error(`ExtractBits() expects an i32 offset argument. Line ${e.line}`),null;if(o.typeInfo.name!=="u32"&&o.typeInfo.name!=="x32")return console.error(`ExtractBits() expects an i32 count argument. Line ${e.line}`),null;let a=s.value,i=o.value;if(n instanceof d)return new d(n.data.map(l=>l>>a&(1<<i)-1),n.typeInfo);if(n.typeInfo.name!=="i32"&&n.typeInfo.name!=="x32")return console.error(`ExtractBits() expects an i32 argument. Line ${e.line}`),null;let u=n.value;return new y(u>>a&(1<<i)-1,this.getTypeInfo("i32"))}FaceForward(e,r){let n=this.exec.evalExpression(e.args[0],r),s=this.exec.evalExpression(e.args[1],r),o=this.exec.evalExpression(e.args[2],r);if(n instanceof d&&s instanceof d&&o instanceof d){let a=this._dot(s.data,o.data);return new d(a<0?Array.from(n.data):n.data.map(i=>-i),n.typeInfo)}return console.error(`FaceForward() expects vector arguments. Line ${e.line}`),null}_firstLeadingBit(e){return e===0?-1:31-Math.clz32(e)}FirstLeadingBit(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof d)return new d(n.data.map(o=>this._firstLeadingBit(o)),n.typeInfo);let s=n;return new y(this._firstLeadingBit(s.value),n.typeInfo)}_firstTrailingBit(e){return e===0?-1:Math.log2(e&-e)}FirstTrailingBit(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof d)return new d(n.data.map(o=>this._firstTrailingBit(o)),n.typeInfo);let s=n;return new y(this._firstTrailingBit(s.value),n.typeInfo)}Floor(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof d)return new d(n.data.map(o=>Math.floor(o)),n.typeInfo);let s=n;return new y(Math.floor(s.value),n.typeInfo)}Fma(e,r){let n=this.exec.evalExpression(e.args[0],r),s=this.exec.evalExpression(e.args[1],r),o=this.exec.evalExpression(e.args[2],r);if(n instanceof d&&s instanceof d&&o instanceof d)return n.data.length!==s.data.length||n.data.length!==o.data.length?(console.error(`Fma() expects vectors of the same length. Line ${e.line}`),null):new d(n.data.map((l,c)=>l*s.data[c]+o.data[c]),n.typeInfo);let a=n,i=s,u=o;return new y(a.value*i.value+u.value,a.typeInfo)}Fract(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof d)return new d(n.data.map(o=>o-Math.floor(o)),n.typeInfo);let s=n;return new y(s.value-Math.floor(s.value),n.typeInfo)}Frexp(e,r){return console.error(`TODO: frexp. Line ${e.line}`),null}InsertBits(e,r){let n=this.exec.evalExpression(e.args[0],r),s=this.exec.evalExpression(e.args[1],r),o=this.exec.evalExpression(e.args[2],r),a=this.exec.evalExpression(e.args[3],r);if(o.typeInfo.name!=="u32"&&o.typeInfo.name!=="x32")return console.error(`InsertBits() expects an i32 offset argument. Line ${e.line}`),null;let i=o.value,u=(1<<a.value)-1<<i,l=~u;if(n instanceof d&&s instanceof d)return new d(n.data.map((m,p)=>m&l|s.data[p]<<i&u),n.typeInfo);let c=n.value,f=s.value;return new y(c&l|f<<i&u,n.typeInfo)}InverseSqrt(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof d)return new d(n.data.map(o=>1/Math.sqrt(o)),n.typeInfo);let s=n;return new y(1/Math.sqrt(s.value),n.typeInfo)}Ldexp(e,r){return console.error(`TODO: ldexp. Line ${e.line}`),null}Length(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof d){let o=0;return n.data.forEach(a=>{o+=a*a}),new y(Math.sqrt(o),this.getTypeInfo("f32"))}let s=n;return new y(Math.abs(s.value),n.typeInfo)}Log(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof d)return new d(n.data.map(o=>Math.log(o)),n.typeInfo);let s=n;return new y(Math.log(s.value),n.typeInfo)}Log2(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof d)return new d(n.data.map(o=>Math.log2(o)),n.typeInfo);let s=n;return new y(Math.log2(s.value),n.typeInfo)}Max(e,r){let n=this.exec.evalExpression(e.args[0],r),s=this.exec.evalExpression(e.args[1],r);if(n instanceof d&&s instanceof d)return new d(n.data.map((i,u)=>Math.max(i,s.data[u])),n.typeInfo);let o=n,a=s;return new y(Math.max(o.value,a.value),n.typeInfo)}Min(e,r){let n=this.exec.evalExpression(e.args[0],r),s=this.exec.evalExpression(e.args[1],r);if(n instanceof d&&s instanceof d)return new d(n.data.map((i,u)=>Math.min(i,s.data[u])),n.typeInfo);let o=n,a=s;return new y(Math.min(o.value,a.value),n.typeInfo)}Mix(e,r){let n=this.exec.evalExpression(e.args[0],r),s=this.exec.evalExpression(e.args[1],r),o=this.exec.evalExpression(e.args[2],r);if(n instanceof d&&s instanceof d&&o instanceof d)return new d(n.data.map((u,l)=>n.data[l]*(1-o.data[l])+s.data[l]*o.data[l]),n.typeInfo);let a=s,i=o;return new y(n.value*(1-i.value)+a.value*i.value,n.typeInfo)}Modf(e,r){let n=this.exec.evalExpression(e.args[0],r),s=this.exec.evalExpression(e.args[1],r);if(n instanceof d&&s instanceof d)return new d(n.data.map((a,i)=>a%s.data[i]),n.typeInfo);let o=s;return new y(n.value%o.value,n.typeInfo)}Normalize(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof d){let s=this.Length(e,r).value;return new d(n.data.map(o=>o/s),n.typeInfo)}return console.error(`Normalize() expects a vector argument. Line ${e.line}`),null}Pow(e,r){let n=this.exec.evalExpression(e.args[0],r),s=this.exec.evalExpression(e.args[1],r);if(n instanceof d&&s instanceof d)return new d(n.data.map((i,u)=>Math.pow(i,s.data[u])),n.typeInfo);let o=n,a=s;return new y(Math.pow(o.value,a.value),n.typeInfo)}QuantizeToF16(e,r){let n=this.exec.evalExpression(e.args[0],r);return n instanceof d?new d(n.data.map(s=>s),n.typeInfo):new y(n.value,n.typeInfo)}Radians(e,r){let n=this.exec.evalExpression(e.args[0],r);return n instanceof d?new d(n.data.map(s=>s*Math.PI/180),n.typeInfo):new y(n.value*Math.PI/180,this.getTypeInfo("f32"))}Reflect(e,r){let n=this.exec.evalExpression(e.args[0],r),s=this.exec.evalExpression(e.args[1],r);if(n instanceof d&&s instanceof d){let o=this._dot(n.data,s.data);return new d(n.data.map((a,i)=>a-2*o*s.data[i]),n.typeInfo)}return console.error(`Reflect() expects vector arguments. Line ${e.line}`),null}Refract(e,r){let n=this.exec.evalExpression(e.args[0],r),s=this.exec.evalExpression(e.args[1],r),o=this.exec.evalExpression(e.args[2],r);if(n instanceof d&&s instanceof d&&o instanceof y){let a=this._dot(s.data,n.data);return new d(n.data.map((i,u)=>{let l=1-o.value*o.value*(1-a*a);if(l<0)return 0;let c=Math.sqrt(l);return o.value*i-(o.value*a+c)*s.data[u]}),n.typeInfo)}return console.error(`Refract() expects vector arguments and a scalar argument. Line ${e.line}`),null}ReverseBits(e,r){return console.error(`TODO: reverseBits. Line ${e.line}`),null}Round(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof d)return new d(n.data.map(o=>Math.round(o)),n.typeInfo);let s=n;return new y(Math.round(s.value),n.typeInfo)}Saturate(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof d)return new d(n.data.map(o=>Math.min(Math.max(o,0),1)),n.typeInfo);let s=n;return new y(Math.min(Math.max(s.value,0),1),n.typeInfo)}Sign(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof d)return new d(n.data.map(o=>Math.sign(o)),n.typeInfo);let s=n;return new y(Math.sign(s.value),n.typeInfo)}Sin(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof d)return new d(n.data.map(o=>Math.sin(o)),n.typeInfo);let s=n;return new y(Math.sin(s.value),n.typeInfo)}Sinh(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof d)return new d(n.data.map(o=>Math.sinh(o)),n.typeInfo);let s=n;return new y(Math.sinh(s.value),n.typeInfo)}_smoothstep(e,r,n){let s=Math.min(Math.max((n-e)/(r-e),0),1);return s*s*(3-2*s)}SmoothStep(e,r){let n=this.exec.evalExpression(e.args[0],r),s=this.exec.evalExpression(e.args[1],r),o=this.exec.evalExpression(e.args[2],r);if(o instanceof d&&n instanceof d&&s instanceof d)return new d(o.data.map((l,c)=>this._smoothstep(n.data[c],s.data[c],l)),o.typeInfo);let a=n,i=s,u=o;return new y(this._smoothstep(a.value,i.value,u.value),o.typeInfo)}Sqrt(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof d)return new d(n.data.map(o=>Math.sqrt(o)),n.typeInfo);let s=n;return new y(Math.sqrt(s.value),n.typeInfo)}Step(e,r){let n=this.exec.evalExpression(e.args[0],r),s=this.exec.evalExpression(e.args[1],r);if(s instanceof d&&n instanceof d)return new d(s.data.map((a,i)=>a<n.data[i]?0:1),s.typeInfo);let o=n;return new y(s.value<o.value?0:1,o.typeInfo)}Tan(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof d)return new d(n.data.map(o=>Math.tan(o)),n.typeInfo);let s=n;return new y(Math.tan(s.value),n.typeInfo)}Tanh(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof d)return new d(n.data.map(o=>Math.tanh(o)),n.typeInfo);let s=n;return new y(Math.tanh(s.value),n.typeInfo)}_getTransposeType(e){let r=e.getTypeName();return r==="mat2x2f"||r==="mat2x2h"?e:r==="mat2x3f"?this.getTypeInfo("mat3x2f"):r==="mat2x3h"?this.getTypeInfo("mat3x2h"):r==="mat2x4f"?this.getTypeInfo("mat4x2f"):r==="mat2x4h"?this.getTypeInfo("mat4x2h"):r==="mat3x2f"?this.getTypeInfo("mat2x3f"):r==="mat3x2h"?this.getTypeInfo("mat2x3h"):r==="mat3x3f"||r==="mat3x3h"?e:r==="mat3x4f"?this.getTypeInfo("mat4x3f"):r==="mat3x4h"?this.getTypeInfo("mat4x3h"):r==="mat4x2f"?this.getTypeInfo("mat2x4f"):r==="mat4x2h"?this.getTypeInfo("mat2x4h"):r==="mat4x3f"?this.getTypeInfo("mat3x4f"):r==="mat4x3h"?this.getTypeInfo("mat3x4h"):(r==="mat4x4f"||r==="mat4x4h"||console.error(`Invalid matrix type ${r}`),e)}Transpose(e,r){let n=this.exec.evalExpression(e.args[0],r);if(!(n instanceof H))return console.error(`Transpose() expects a matrix argument. Line ${e.line}`),null;let s=this._getTransposeType(n.typeInfo);if(n.typeInfo.name==="mat2x2"||n.typeInfo.name==="mat2x2f"||n.typeInfo.name==="mat2x2h"){let o=n.data;return new H([o[0],o[2],o[1],o[3]],s)}if(n.typeInfo.name==="mat2x3"||n.typeInfo.name==="mat2x3f"||n.typeInfo.name==="mat2x3h"){let o=n.data;return new H([o[0],o[3],o[6],o[1],o[4],o[7]],s)}if(n.typeInfo.name==="mat2x4"||n.typeInfo.name==="mat2x4f"||n.typeInfo.name==="mat2x4h"){let o=n.data;return new H([o[0],o[4],o[8],o[12],o[1],o[5],o[9],o[13]],s)}if(n.typeInfo.name==="mat3x2"||n.typeInfo.name==="mat3x2f"||n.typeInfo.name==="mat3x2h"){let o=n.data;return new H([o[0],o[3],o[1],o[4],o[2],o[5]],s)}if(n.typeInfo.name==="mat3x3"||n.typeInfo.name==="mat3x3f"||n.typeInfo.name==="mat3x3h"){let o=n.data;return new H([o[0],o[3],o[6],o[1],o[4],o[7],o[2],o[5],o[8]],s)}if(n.typeInfo.name==="mat3x4"||n.typeInfo.name==="mat3x4f"||n.typeInfo.name==="mat3x4h"){let o=n.data;return new H([o[0],o[4],o[8],o[12],o[1],o[5],o[9],o[13],o[2],o[6],o[10],o[14]],s)}if(n.typeInfo.name==="mat4x2"||n.typeInfo.name==="mat4x2f"||n.typeInfo.name==="mat4x2h"){let o=n.data;return new H([o[0],o[4],o[1],o[5],o[2],o[6]],s)}if(n.typeInfo.name==="mat4x3"||n.typeInfo.name==="mat4x3f"||n.typeInfo.name==="mat4x3h"){let o=n.data;return new H([o[0],o[4],o[8],o[1],o[5],o[9],o[2],o[6],o[10]],s)}if(n.typeInfo.name==="mat4x4"||n.typeInfo.name==="mat4x4f"||n.typeInfo.name==="mat4x4h"){let o=n.data;return new H([o[0],o[4],o[8],o[12],o[1],o[5],o[9],o[13],o[2],o[6],o[10],o[14],o[3],o[7],o[11],o[15]],s)}return console.error(`Invalid matrix type ${n.typeInfo.name}`),null}Trunc(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof d)return new d(n.data.map(o=>Math.trunc(o)),n.typeInfo);let s=n;return new y(Math.trunc(s.value),n.typeInfo)}Dpdx(e,r){return console.error(`TODO: dpdx. Line ${e.line}`),null}DpdxCoarse(e,r){return console.error(`TODO: dpdxCoarse. Line ${e.line}`),null}DpdxFine(e,r){return console.error("TODO: dpdxFine"),null}Dpdy(e,r){return console.error("TODO: dpdy"),null}DpdyCoarse(e,r){return console.error("TODO: dpdyCoarse"),null}DpdyFine(e,r){return console.error("TODO: dpdyFine"),null}Fwidth(e,r){return console.error("TODO: fwidth"),null}FwidthCoarse(e,r){return console.error("TODO: fwidthCoarse"),null}FwidthFine(e,r){return console.error("TODO: fwidthFine"),null}TextureDimensions(e,r){let n=e.args[0],s=e.args.length>1?this.exec.evalExpression(e.args[1],r).value:0;if(n instanceof Qe){let o=n.name,a=r.getVariableValue(o);if(a instanceof ar){if(s<0||s>=a.mipLevelCount)return console.error(`Invalid mip level for textureDimensions. Line ${e.line}`),null;let i=a.getMipLevelSize(s),u=a.dimension;return u==="1d"?new y(i[0],this.getTypeInfo("u32")):u==="3d"?new d(i,this.getTypeInfo("vec3u")):u==="2d"?new d(i.slice(0,2),this.getTypeInfo("vec2u")):(console.error(`Invalid texture dimension ${u} not found. Line ${e.line}`),null)}return console.error(`Texture ${o} not found. Line ${e.line}`),null}return console.error(`Invalid texture argument for textureDimensions. Line ${e.line}`),null}TextureGather(e,r){return console.error("TODO: textureGather"),null}TextureGatherCompare(e,r){return console.error("TODO: textureGatherCompare"),null}TextureLoad(e,r){let n=e.args[0],s=this.exec.evalExpression(e.args[1],r),o=e.args.length>2?this.exec.evalExpression(e.args[2],r).value:0;if(!(s instanceof d)||s.data.length!==2)return console.error(`Invalid UV argument for textureLoad. Line ${e.line}`),null;if(n instanceof Qe){let a=n.name,i=r.getVariableValue(a);if(i instanceof ar){let u=Math.floor(s.data[0]),l=Math.floor(s.data[1]);if(u<0||u>=i.width||l<0||l>=i.height)return console.error(`Texture ${a} out of bounds. Line ${e.line}`),null;let c=i.getPixel(u,l,0,o);return c===null?(console.error(`Invalid texture format for textureLoad. Line ${e.line}`),null):new d(c,this.getTypeInfo("vec4f"))}return console.error(`Texture ${a} not found. Line ${e.line}`),null}return console.error(`Invalid texture argument for textureLoad. Line ${e.line}`),null}TextureNumLayers(e,r){let n=e.args[0];if(n instanceof Qe){let s=n.name,o=r.getVariableValue(s);return o instanceof ar?new y(o.depthOrArrayLayers,this.getTypeInfo("u32")):(console.error(`Texture ${s} not found. Line ${e.line}`),null)}return console.error(`Invalid texture argument for textureNumLayers. Line ${e.line}`),null}TextureNumLevels(e,r){let n=e.args[0];if(n instanceof Qe){let s=n.name,o=r.getVariableValue(s);return o instanceof ar?new y(o.mipLevelCount,this.getTypeInfo("u32")):(console.error(`Texture ${s} not found. Line ${e.line}`),null)}return console.error(`Invalid texture argument for textureNumLevels. Line ${e.line}`),null}TextureNumSamples(e,r){let n=e.args[0];if(n instanceof Qe){let s=n.name,o=r.getVariableValue(s);return o instanceof ar?new y(o.sampleCount,this.getTypeInfo("u32")):(console.error(`Texture ${s} not found. Line ${e.line}`),null)}return console.error(`Invalid texture argument for textureNumSamples. Line ${e.line}`),null}TextureSample(e,r){return console.error("TODO: textureSample"),null}TextureSampleBias(e,r){return console.error("TODO: textureSampleBias"),null}TextureSampleCompare(e,r){return console.error("TODO: textureSampleCompare"),null}TextureSampleCompareLevel(e,r){return console.error("TODO: textureSampleCompareLevel"),null}TextureSampleGrad(e,r){return console.error("TODO: textureSampleGrad"),null}TextureSampleLevel(e,r){return console.error("TODO: textureSampleLevel"),null}TextureSampleBaseClampToEdge(e,r){return console.error("TODO: textureSampleBaseClampToEdge"),null}TextureStore(e,r){let n=e.args[0],s=this.exec.evalExpression(e.args[1],r),o=e.args.length===4?this.exec.evalExpression(e.args[2],r).value:0,a=e.args.length===4?this.exec.evalExpression(e.args[3],r).data:this.exec.evalExpression(e.args[2],r).data;if(a.length!==4)return console.error(`Invalid value argument for textureStore. Line ${e.line}`),null;if(!(s instanceof d)||s.data.length!==2)return console.error(`Invalid UV argument for textureStore. Line ${e.line}`),null;if(n instanceof Qe){let i=n.name,u=r.getVariableValue(i);if(u instanceof ar){let l=u.getMipLevelSize(0),c=Math.floor(s.data[0]),f=Math.floor(s.data[1]);return c<0||c>=l[0]||f<0||f>=l[1]?(console.error(`Texture ${i} out of bounds. Line ${e.line}`),null):(u.setPixel(c,f,0,o,Array.from(a)),null)}return console.error(`Texture ${i} not found. Line ${e.line}`),null}return console.error(`Invalid texture argument for textureStore. Line ${e.line}`),null}AtomicLoad(e,r){let n=e.args[0];n instanceof Ee&&(n=n.right);let s=this.exec.getVariableName(n,r);return r.getVariable(s).value.getSubData(this.exec,n.postfix,r)}AtomicStore(e,r){let n=e.args[0];n instanceof Ee&&(n=n.right);let s=this.exec.getVariableName(n,r),o=r.getVariable(s),a=e.args[1],i=this.exec.evalExpression(a,r),u=o.value.getSubData(this.exec,n.postfix,r);return u instanceof y&&i instanceof y&&(u.value=i.value),o.value instanceof Le&&o.value.setDataValue(this.exec,u,n.postfix,r),null}AtomicAdd(e,r){let n=e.args[0];n instanceof Ee&&(n=n.right);let s=this.exec.getVariableName(n,r),o=r.getVariable(s),a=e.args[1],i=this.exec.evalExpression(a,r),u=o.value.getSubData(this.exec,n.postfix,r),l=new y(u.value,u.typeInfo);return u instanceof y&&i instanceof y&&(u.value+=i.value),o.value instanceof Le&&o.value.setDataValue(this.exec,u,n.postfix,r),l}AtomicSub(e,r){let n=e.args[0];n instanceof Ee&&(n=n.right);let s=this.exec.getVariableName(n,r),o=r.getVariable(s),a=e.args[1],i=this.exec.evalExpression(a,r),u=o.value.getSubData(this.exec,n.postfix,r),l=new y(u.value,u.typeInfo);return u instanceof y&&i instanceof y&&(u.value-=i.value),o.value instanceof Le&&o.value.setDataValue(this.exec,u,n.postfix,r),l}AtomicMax(e,r){let n=e.args[0];n instanceof Ee&&(n=n.right);let s=this.exec.getVariableName(n,r),o=r.getVariable(s),a=e.args[1],i=this.exec.evalExpression(a,r),u=o.value.getSubData(this.exec,n.postfix,r),l=new y(u.value,u.typeInfo);return u instanceof y&&i instanceof y&&(u.value=Math.max(u.value,i.value)),o.value instanceof Le&&o.value.setDataValue(this.exec,u,n.postfix,r),l}AtomicMin(e,r){let n=e.args[0];n instanceof Ee&&(n=n.right);let s=this.exec.getVariableName(n,r),o=r.getVariable(s),a=e.args[1],i=this.exec.evalExpression(a,r),u=o.value.getSubData(this.exec,n.postfix,r),l=new y(u.value,u.typeInfo);return u instanceof y&&i instanceof y&&(u.value=Math.min(u.value,i.value)),o.value instanceof Le&&o.value.setDataValue(this.exec,u,n.postfix,r),l}AtomicAnd(e,r){let n=e.args[0];n instanceof Ee&&(n=n.right);let s=this.exec.getVariableName(n,r),o=r.getVariable(s),a=e.args[1],i=this.exec.evalExpression(a,r),u=o.value.getSubData(this.exec,n.postfix,r),l=new y(u.value,u.typeInfo);return u instanceof y&&i instanceof y&&(u.value=u.value&i.value),o.value instanceof Le&&o.value.setDataValue(this.exec,u,n.postfix,r),l}AtomicOr(e,r){let n=e.args[0];n instanceof Ee&&(n=n.right);let s=this.exec.getVariableName(n,r),o=r.getVariable(s),a=e.args[1],i=this.exec.evalExpression(a,r),u=o.value.getSubData(this.exec,n.postfix,r),l=new y(u.value,u.typeInfo);return u instanceof y&&i instanceof y&&(u.value=u.value|i.value),o.value instanceof Le&&o.value.setDataValue(this.exec,u,n.postfix,r),l}AtomicXor(e,r){let n=e.args[0];n instanceof Ee&&(n=n.right);let s=this.exec.getVariableName(n,r),o=r.getVariable(s),a=e.args[1],i=this.exec.evalExpression(a,r),u=o.value.getSubData(this.exec,n.postfix,r),l=new y(u.value,u.typeInfo);return u instanceof y&&i instanceof y&&(u.value=u.value^i.value),o.value instanceof Le&&o.value.setDataValue(this.exec,u,n.postfix,r),l}AtomicExchange(e,r){let n=e.args[0];n instanceof Ee&&(n=n.right);let s=this.exec.getVariableName(n,r),o=r.getVariable(s),a=e.args[1],i=this.exec.evalExpression(a,r),u=o.value.getSubData(this.exec,n.postfix,r),l=new y(u.value,u.typeInfo);return u instanceof y&&i instanceof y&&(u.value=i.value),o.value instanceof Le&&o.value.setDataValue(this.exec,u,n.postfix,r),l}AtomicCompareExchangeWeak(e,r){return console.error("TODO: atomicCompareExchangeWeak"),null}Pack4x8snorm(e,r){return console.error("TODO: pack4x8snorm"),null}Pack4x8unorm(e,r){return console.error("TODO: pack4x8unorm"),null}Pack4xI8(e,r){return console.error("TODO: pack4xI8"),null}Pack4xU8(e,r){return console.error("TODO: pack4xU8"),null}Pack4x8Clamp(e,r){return console.error("TODO: pack4x8Clamp"),null}Pack4xU8Clamp(e,r){return console.error("TODO: pack4xU8Clamp"),null}Pack2x16snorm(e,r){return console.error("TODO: pack2x16snorm"),null}Pack2x16unorm(e,r){return console.error("TODO: pack2x16unorm"),null}Pack2x16float(e,r){return console.error("TODO: pack2x16float"),null}Unpack4x8snorm(e,r){return console.error("TODO: unpack4x8snorm"),null}Unpack4x8unorm(e,r){return console.error("TODO: unpack4x8unorm"),null}Unpack4xI8(e,r){return console.error("TODO: unpack4xI8"),null}Unpack4xU8(e,r){return console.error("TODO: unpack4xU8"),null}Unpack2x16snorm(e,r){return console.error("TODO: unpack2x16snorm"),null}Unpack2x16unorm(e,r){return console.error("TODO: unpack2x16unorm"),null}Unpack2x16float(e,r){return console.error("TODO: unpack2x16float"),null}StorageBarrier(e,r){return null}TextureBarrier(e,r){return null}WorkgroupBarrier(e,r){return null}WorkgroupUniformLoad(e,r){return null}SubgroupAdd(e,r){return console.error("TODO: subgroupAdd"),null}SubgroupExclusiveAdd(e,r){return console.error("TODO: subgroupExclusiveAdd"),null}SubgroupInclusiveAdd(e,r){return console.error("TODO: subgroupInclusiveAdd"),null}SubgroupAll(e,r){return console.error("TODO: subgroupAll"),null}SubgroupAnd(e,r){return console.error("TODO: subgroupAnd"),null}SubgroupAny(e,r){return console.error("TODO: subgroupAny"),null}SubgroupBallot(e,r){return console.error("TODO: subgroupBallot"),null}SubgroupBroadcast(e,r){return console.error("TODO: subgroupBroadcast"),null}SubgroupBroadcastFirst(e,r){return console.error("TODO: subgroupBroadcastFirst"),null}SubgroupElect(e,r){return console.error("TODO: subgroupElect"),null}SubgroupMax(e,r){return console.error("TODO: subgroupMax"),null}SubgroupMin(e,r){return console.error("TODO: subgroupMin"),null}SubgroupMul(e,r){return console.error("TODO: subgroupMul"),null}SubgroupExclusiveMul(e,r){return console.error("TODO: subgroupExclusiveMul"),null}SubgroupInclusiveMul(e,r){return console.error("TODO: subgroupInclusiveMul"),null}SubgroupOr(e,r){return console.error("TODO: subgroupOr"),null}SubgroupShuffle(e,r){return console.error("TODO: subgroupShuffle"),null}SubgroupShuffleDown(e,r){return console.error("TODO: subgroupShuffleDown"),null}SubgroupShuffleUp(e,r){return console.error("TODO: subgroupShuffleUp"),null}SubgroupShuffleXor(e,r){return console.error("TODO: subgroupShuffleXor"),null}SubgroupXor(e,r){return console.error("TODO: subgroupXor"),null}QuadBroadcast(e,r){return console.error("TODO: quadBroadcast"),null}QuadSwapDiagonal(e,r){return console.error("TODO: quadSwapDiagonal"),null}QuadSwapX(e,r){return console.error("TODO: quadSwapX"),null}QuadSwapY(e,r){return console.error("TODO: quadSwapY"),null}},Ci={vec2:2,vec2f:2,vec2i:2,vec2u:2,vec2b:2,vec2h:2,vec3:3,vec3f:3,vec3i:3,vec3u:3,vec3b:3,vec3h:3,vec4:4,vec4f:4,vec4i:4,vec4u:4,vec4b:4,vec4h:4},Je={mat2x2:[2,2,4],mat2x2f:[2,2,4],mat2x2h:[2,2,4],mat2x3:[2,3,6],mat2x3f:[2,3,6],mat2x3h:[2,3,6],mat2x4:[2,4,8],mat2x4f:[2,4,8],mat2x4h:[2,4,8],mat3x2:[3,2,6],mat3x2f:[3,2,6],mat3x2h:[3,2,6],mat3x3:[3,3,9],mat3x3f:[3,3,9],mat3x3h:[3,3,9],mat3x4:[3,4,12],mat3x4f:[3,4,12],mat3x4h:[3,4,12],mat4x2:[4,2,8],mat4x2f:[4,2,8],mat4x2h:[4,2,8],mat4x3:[4,3,12],mat4x3f:[4,3,12],mat4x3h:[4,3,12],mat4x4:[4,4,16],mat4x4f:[4,4,16],mat4x4h:[4,4,16]},vn=class t extends Zi{constructor(e,r){var n;super(),this.ast=e??[],this.reflection=new Dr,this.reflection.updateAST(this.ast),this.context=(n=r?.clone())!==null&&n!==void 0?n:new Ki,this.builtins=new Ji(this),this.typeInfo={bool:this.getTypeInfo(R.bool),i32:this.getTypeInfo(R.i32),u32:this.getTypeInfo(R.u32),f32:this.getTypeInfo(R.f32),f16:this.getTypeInfo(R.f16),vec2f:this.getTypeInfo(_.vec2f),vec2u:this.getTypeInfo(_.vec2u),vec2i:this.getTypeInfo(_.vec2i),vec2h:this.getTypeInfo(_.vec2h),vec3f:this.getTypeInfo(_.vec3f),vec3u:this.getTypeInfo(_.vec3u),vec3i:this.getTypeInfo(_.vec3i),vec3h:this.getTypeInfo(_.vec3h),vec4f:this.getTypeInfo(_.vec4f),vec4u:this.getTypeInfo(_.vec4u),vec4i:this.getTypeInfo(_.vec4i),vec4h:this.getTypeInfo(_.vec4h),mat2x2f:this.getTypeInfo(_.mat2x2f),mat2x3f:this.getTypeInfo(_.mat2x3f),mat2x4f:this.getTypeInfo(_.mat2x4f),mat3x2f:this.getTypeInfo(_.mat3x2f),mat3x3f:this.getTypeInfo(_.mat3x3f),mat3x4f:this.getTypeInfo(_.mat3x4f),mat4x2f:this.getTypeInfo(_.mat4x2f),mat4x3f:this.getTypeInfo(_.mat4x3f),mat4x4f:this.getTypeInfo(_.mat4x4f)}}getVariableValue(e){var r,n;let s=(n=(r=this.context.getVariable(e))===null||r===void 0?void 0:r.value)!==null&&n!==void 0?n:null;if(s===null)return null;if(s instanceof y)return s.value;if(s instanceof d||s instanceof H)return Array.from(s.data);if(s instanceof Le&&s.typeInfo instanceof Kt){if(s.typeInfo.format.name==="u32")return Array.from(new Uint32Array(s.buffer,s.offset,s.typeInfo.count));if(s.typeInfo.format.name==="i32")return Array.from(new Int32Array(s.buffer,s.offset,s.typeInfo.count));if(s.typeInfo.format.name==="f32")return Array.from(new Float32Array(s.buffer,s.offset,s.typeInfo.count))}return console.error(`Unsupported return variable type ${s.typeInfo.name}`),null}execute(e){(e=e??{}).constants&&this._setOverrides(e.constants,this.context),this._execStatements(this.ast,this.context)}dispatchWorkgroups(e,r,n,s){let o=this.context.clone();(s=s??{}).constants&&this._setOverrides(s.constants,o),this._execStatements(this.ast,o);let a=o.getFunction(e);if(!a)return void console.error(`Function ${e} not found`);if(typeof r=="number")r=[r,1,1];else{if(r.length===0)return void console.error("Invalid dispatch count");r.length===1?r=[r[0],1,1]:r.length===2?r=[r[0],r[1],1]:r.length>3&&(r=[r[0],r[1],r[2]])}let i=r[0],u=r[1],l=r[2],c=this.getTypeInfo("vec3u");o.setVariable("@num_workgroups",new d(r,c));for(let f in n)for(let m in n[f]){let p=n[f][m];o.variables.forEach(w=>{var A;let v=w.node;if(v?.attributes){let C=null,k=null;for(let T of v.attributes)T.name==="binding"?C=T.value:T.name==="group"&&(k=T.value);if(m==C&&f==k)if(p.texture!==void 0&&p.descriptor!==void 0){let T=new ar(p.texture,this.getTypeInfo(v.type),p.descriptor,(A=p.texture.view)!==null&&A!==void 0?A:null);w.value=T}else p.uniform!==void 0?w.value=new Le(p.uniform,this.getTypeInfo(v.type)):w.value=new Le(p,this.getTypeInfo(v.type))}})}for(let f=0;f<l;++f)for(let m=0;m<u;++m)for(let p=0;p<i;++p)o.setVariable("@workgroup_id",new d([p,m,f],this.getTypeInfo("vec3u"))),this._dispatchWorkgroup(a,[p,m,f],o)}execStatement(e,r){if(e instanceof go)return this.evalExpression(e.value,r);if(e instanceof yo){if(e.condition){let n=this.evalExpression(e.condition,r);if(!(n instanceof y))throw new Error("Invalid break-if condition");if(!n.value)return null}return t._breakObj}if(e instanceof _o)return t._continueObj;if(e instanceof Pr)this._let(e,r);else if(e instanceof Nt)this._var(e,r);else if(e instanceof yn)this._const(e,r);else if(e instanceof Mr)this._function(e,r);else{if(e instanceof po)return this._if(e,r);if(e instanceof mo)return this._switch(e,r);if(e instanceof co)return this._for(e,r);if(e instanceof uo)return this._while(e,r);if(e instanceof ho)return this._loop(e,r);if(e instanceof Jn){let n=r.clone();return n.currentFunctionName=r.currentFunctionName,this._execStatements(e.body,n)}if(e instanceof fo)this._assign(e,r);else if(e instanceof lo)this._increment(e,r);else{if(e instanceof Mt)return null;if(e instanceof Qn){let n=e.name;r.getVariable(n)===null&&r.setVariable(n,new y(0,this.getTypeInfo("u32")))}else if(e instanceof es)this._call(e,r);else{if(e instanceof xo||e instanceof ts)return null;console.error("Invalid statement type.",e,`Line ${e.line}`)}}}return null}evalExpression(e,r){return e instanceof mt?this._evalBinaryOp(e,r):e instanceof Ce?this._evalLiteral(e,r):e instanceof Qe?this._evalVariable(e,r):e instanceof rs?this._evalCall(e,r):e instanceof At?this._evalCreate(e,r):e instanceof vo?this._evalConst(e,r):e instanceof wo?this._evalBitcast(e,r):e instanceof Ee?this._evalUnaryOp(e,r):(console.error("Invalid expression type",e,`Line ${e.line}`),null)}getTypeInfo(e){var r;if(e instanceof R){let s=this.reflection.getTypeInfo(e);if(s!==null)return s}let n=(r=this.typeInfo[e])!==null&&r!==void 0?r:null;return n!==null||(n=this.reflection.getTypeInfoByName(e)),n}_setOverrides(e,r){for(let n in e){let s=e[n],o=this.reflection.getOverrideInfo(n);o!==null?(o.type===null&&(o.type=this.getTypeInfo("u32")),o.type.name==="u32"||o.type.name==="i32"||o.type.name==="f32"||o.type.name==="f16"?r.setVariable(n,new y(s,o.type)):o.type.name==="bool"?r.setVariable(n,new y(s?1:0,o.type)):o.type.name==="vec2"||o.type.name==="vec3"||o.type.name==="vec4"||o.type.name==="vec2f"||o.type.name==="vec3f"||o.type.name==="vec4f"||o.type.name==="vec2i"||o.type.name==="vec3i"||o.type.name==="vec4i"||o.type.name==="vec2u"||o.type.name==="vec3u"||o.type.name==="vec4u"||o.type.name==="vec2h"||o.type.name==="vec3h"||o.type.name==="vec4h"?r.setVariable(n,new d(s,o.type)):console.error(`Invalid constant type for ${n}`)):console.error(`Override ${n} does not exist in the shader.`)}}_dispatchWorkgroup(e,r,n){let s=[1,1,1];for(let c of e.node.attributes)if(c.name==="workgroup_size"){if(c.value.length>0){let f=n.getVariableValue(c.value[0]);s[0]=f instanceof y?f.value:parseInt(c.value[0])}if(c.value.length>1){let f=n.getVariableValue(c.value[1]);s[1]=f instanceof y?f.value:parseInt(c.value[1])}if(c.value.length>2){let f=n.getVariableValue(c.value[2]);s[2]=f instanceof y?f.value:parseInt(c.value[2])}}let o=this.getTypeInfo("vec3u"),a=this.getTypeInfo("u32");n.setVariable("@workgroup_size",new d(s,o));let i=s[0],u=s[1],l=s[2];for(let c=0,f=0;c<l;++c)for(let m=0;m<u;++m)for(let p=0;p<i;++p,++f){let w=[p,m,c],A=[p+r[0]*s[0],m+r[1]*s[1],c+r[2]*s[2]];n.setVariable("@local_invocation_id",new d(w,o)),n.setVariable("@global_invocation_id",new d(A,o)),n.setVariable("@local_invocation_index",new y(f,a)),this._dispatchExec(e,n)}}_dispatchExec(e,r){for(let n of e.node.args)for(let s of n.attributes)if(s.name==="builtin"){let o=`@${s.value}`,a=r.getVariable(o);a!==void 0&&r.variables.set(n.name,a)}this._execStatements(e.node.body,r)}getVariableName(e,r){for(;e instanceof Ee;)e=e.right;return e instanceof Qe?e.name:(console.error("Unknown variable type",e,"Line",e.line),null)}_execStatements(e,r){for(let n of e){if(n instanceof Array){let o=r.clone(),a=this._execStatements(n,o);if(a)return a;continue}let s=this.execStatement(n,r);if(s)return s}return null}_call(e,r){let n=r.clone();n.currentFunctionName=e.name;let s=r.getFunction(e.name);if(s){for(let o=0;o<s.node.args.length;++o){let a=s.node.args[o],i=this.evalExpression(e.args[o],n);n.setVariable(a.name,i,a)}this._execStatements(s.node.body,n)}else e.isBuiltin?this._callBuiltinFunction(e,n):this.getTypeInfo(e.name)&&this._evalCreate(e,r)}_increment(e,r){let n=this.getVariableName(e.variable,r),s=r.getVariable(n);s?e.operator==="++"?s.value instanceof y?s.value.value++:console.error(`Variable ${n} is not a scalar. Line ${e.line}`):e.operator==="--"?s.value instanceof y?s.value.value--:console.error(`Variable ${n} is not a scalar. Line ${e.line}`):console.error(`Unknown increment operator ${e.operator}. Line ${e.line}`):console.error(`Variable ${n} not found. Line ${e.line}`)}_getVariableData(e,r){if(e instanceof Qe){let n=this.getVariableName(e,r),s=r.getVariable(n);return s===null?(console.error(`Variable ${n} not found. Line ${e.line}`),null):s.value.getSubData(this,e.postfix,r)}if(e instanceof Ee){if(e.operator==="*"){let n=this._getVariableData(e.right,r);return n instanceof kr?n.reference.getSubData(this,e.postfix,r):(console.error(`Variable ${e.right} is not a pointer. Line ${e.line}`),null)}if(e.operator==="&"){let n=this._getVariableData(e.right,r);return new kr(n)}}return null}_assign(e,r){let n=null,s="<var>",o=null;if(e.variable instanceof Ee){let u=this._getVariableData(e.variable,r),l=this.evalExpression(e.value,r),c=e.operator;if(c==="="){if(u instanceof y||u instanceof d||u instanceof H){if(l instanceof y||l instanceof d||l instanceof H&&u.data.length===l.data.length)return void u.data.set(l.data);console.error(`Invalid assignment. Line ${e.line}`)}else if(u instanceof Le&&l instanceof Le&&u.buffer.byteLength-u.offset>=l.buffer.byteLength-l.offset)return void(u.buffer.byteLength%4==0?new Uint32Array(u.buffer,u.offset,u.typeInfo.size/4).set(new Uint32Array(l.buffer,l.offset,l.typeInfo.size/4)):new Uint8Array(u.buffer,u.offset,u.typeInfo.size).set(new Uint8Array(l.buffer,l.offset,l.typeInfo.size)));return console.error(`Invalid assignment. Line ${e.line}`),null}if(c==="+=")return u instanceof y||u instanceof d||u instanceof H?l instanceof y||l instanceof d||l instanceof H?void u.data.set(l.data.map((f,m)=>u.data[m]+f)):void console.error(`Invalid assignment . Line ${e.line}`):void console.error(`Invalid assignment. Line ${e.line}`);if(c==="-=")return(u instanceof y||u instanceof d||u instanceof H)&&(l instanceof y||l instanceof d||l instanceof H)?void u.data.set(l.data.map((f,m)=>u.data[m]-f)):void console.error(`Invalid assignment. Line ${e.line}`)}if(e.variable instanceof Ee){if(e.variable.operator==="*"){s=this.getVariableName(e.variable.right,r);let u=r.getVariable(s);if(!(u&&u.value instanceof kr))return void console.error(`Variable ${s} is not a pointer. Line ${e.line}`);n=u.value.reference;let l=e.variable.postfix;if(!l){let c=e.variable.right;for(;c instanceof Ee;){if(c.postfix){l=c.postfix;break}c=c.right}}l&&(n=n.getSubData(this,l,r))}}else{o=e.variable.postfix,s=this.getVariableName(e.variable,r);let u=r.getVariable(s);if(u===null)return void console.error(`Variable ${s} not found. Line ${e.line}`);n=u.value}if(n instanceof kr&&(n=n.reference),n===null)return void console.error(`Variable ${s} not found. Line ${e.line}`);let a=this.evalExpression(e.value,r),i=e.operator;if(i==="=")if(n instanceof Le)n.setDataValue(this,a,o,r);else if(o){if(!(n instanceof d||n instanceof H))return void console.error(`Variable ${s} is not a vector or matrix. Line ${e.line}`);if(o instanceof Er){let u=this.evalExpression(o.index,r).value;if(n instanceof d){if(!(a instanceof y))return void console.error(`Invalid assignment to ${s}. Line ${e.line}`);n.data[u]=a.value}else{if(!(n instanceof H))return void console.error(`Invalid assignment to ${s}. Line ${e.line}`);{let l=this.evalExpression(o.index,r).value;if(l<0)return void console.error(`Invalid assignment to ${s}. Line ${e.line}`);if(!(a instanceof d))return void console.error(`Invalid assignment to ${s}. Line ${e.line}`);{let c=n.typeInfo.getTypeName();if(c==="mat2x2"||c==="mat2x2f"||c==="mat2x2h"){if(!(l<2&&a.data.length===2))return void console.error(`Invalid assignment to ${s}. Line ${e.line}`);n.data[2*l]=a.data[0],n.data[2*l+1]=a.data[1]}else if(c==="mat2x3"||c==="mat2x3f"||c==="mat2x3h"){if(!(l<2&&a.data.length===3))return void console.error(`Invalid assignment to ${s}. Line ${e.line}`);n.data[3*l]=a.data[0],n.data[3*l+1]=a.data[1],n.data[3*l+2]=a.data[2]}else if(c==="mat2x4"||c==="mat2x4f"||c==="mat2x4h"){if(!(l<2&&a.data.length===4))return void console.error(`Invalid assignment to ${s}. Line ${e.line}`);n.data[4*l]=a.data[0],n.data[4*l+1]=a.data[1],n.data[4*l+2]=a.data[2],n.data[4*l+3]=a.data[3]}else if(c==="mat3x2"||c==="mat3x2f"||c==="mat3x2h"){if(!(l<3&&a.data.length===2))return void console.error(`Invalid assignment to ${s}. Line ${e.line}`);n.data[2*l]=a.data[0],n.data[2*l+1]=a.data[1]}else if(c==="mat3x3"||c==="mat3x3f"||c==="mat3x3h"){if(!(l<3&&a.data.length===3))return void console.error(`Invalid assignment to ${s}. Line ${e.line}`);n.data[3*l]=a.data[0],n.data[3*l+1]=a.data[1],n.data[3*l+2]=a.data[2]}else if(c==="mat3x4"||c==="mat3x4f"||c==="mat3x4h"){if(!(l<3&&a.data.length===4))return void console.error(`Invalid assignment to ${s}. Line ${e.line}`);n.data[4*l]=a.data[0],n.data[4*l+1]=a.data[1],n.data[4*l+2]=a.data[2],n.data[4*l+3]=a.data[3]}else if(c==="mat4x2"||c==="mat4x2f"||c==="mat4x2h"){if(!(l<4&&a.data.length===2))return void console.error(`Invalid assignment to ${s}. Line ${e.line}`);n.data[2*l]=a.data[0],n.data[2*l+1]=a.data[1]}else if(c==="mat4x3"||c==="mat4x3f"||c==="mat4x3h"){if(!(l<4&&a.data.length===3))return void console.error(`Invalid assignment to ${s}. Line ${e.line}`);n.data[3*l]=a.data[0],n.data[3*l+1]=a.data[1],n.data[3*l+2]=a.data[2]}else{if(c!=="mat4x4"&&c!=="mat4x4f"&&c!=="mat4x4h")return void console.error(`Invalid assignment to ${s}. Line ${e.line}`);if(!(l<4&&a.data.length===4))return void console.error(`Invalid assignment to ${s}. Line ${e.line}`);n.data[4*l]=a.data[0],n.data[4*l+1]=a.data[1],n.data[4*l+2]=a.data[2],n.data[4*l+3]=a.data[3]}}}}}else if(o instanceof ur){let u=o.value;if(!(n instanceof d))return void console.error(`Invalid assignment to ${u}. Variable ${s} is not a vector. Line ${e.line}`);if(a instanceof y){if(u.length>1)return void console.error(`Invalid assignment to ${u} for variable ${s}. Line ${e.line}`);if(u==="x")n.data[0]=a.value;else if(u==="y"){if(n.data.length<2)return void console.error(`Invalid assignment to ${u} for variable ${s}. Line ${e.line}`);n.data[1]=a.value}else if(u==="z"){if(n.data.length<3)return void console.error(`Invalid assignment to ${u} for variable ${s}. Line ${e.line}`);n.data[2]=a.value}else if(u==="w"){if(n.data.length<4)return void console.error(`Invalid assignment to ${u} for variable ${s}. Line ${e.line}`);n.data[3]=a.value}}else{if(!(a instanceof d))return void console.error(`Invalid assignment to ${s}. Line ${e.line}`);if(u.length!==a.data.length)return void console.error(`Invalid assignment to ${u} for variable ${s}. Line ${e.line}`);for(let l=0;l<u.length;++l){let c=u[l];if(c==="x"||c==="r")n.data[0]=a.data[l];else if(c==="y"||c==="g"){if(a.data.length<2)return void console.error(`Invalid assignment to ${c} for variable ${s}. Line ${e.line}`);n.data[1]=a.data[l]}else if(c==="z"||c==="b"){if(a.data.length<3)return void console.error(`Invalid assignment to ${c} for variable ${s}. Line ${e.line}`);n.data[2]=a.data[l]}else{if(c!=="w"&&c!=="a")return void console.error(`Invalid assignment to ${c} for variable ${s}. Line ${e.line}`);if(a.data.length<4)return void console.error(`Invalid assignment to ${c} for variable ${s}. Line ${e.line}`);n.data[3]=a.data[l]}}}}}else n instanceof y&&a instanceof y?n.value=a.value:n instanceof d&&a instanceof d||n instanceof H&&a instanceof H?n.data.set(a.data):console.error(`Invalid assignment to ${s}. Line ${e.line}`);else{let u=n.getSubData(this,o,r);if(u instanceof d&&a instanceof y){let l=u.data,c=a.value;if(i==="+=")for(let f=0;f<l.length;++f)l[f]+=c;else if(i==="-=")for(let f=0;f<l.length;++f)l[f]-=c;else if(i==="*=")for(let f=0;f<l.length;++f)l[f]*=c;else if(i==="/=")for(let f=0;f<l.length;++f)l[f]/=c;else if(i==="%=")for(let f=0;f<l.length;++f)l[f]%=c;else if(i==="&=")for(let f=0;f<l.length;++f)l[f]&=c;else if(i==="|=")for(let f=0;f<l.length;++f)l[f]|=c;else if(i==="^=")for(let f=0;f<l.length;++f)l[f]^=c;else if(i==="<<=")for(let f=0;f<l.length;++f)l[f]<<=c;else if(i===">>=")for(let f=0;f<l.length;++f)l[f]>>=c;else console.error(`Invalid operator ${i}. Line ${e.line}`)}else if(u instanceof d&&a instanceof d){let l=u.data,c=a.data;if(l.length!==c.length)return void console.error(`Vector length mismatch. Line ${e.line}`);if(i==="+=")for(let f=0;f<l.length;++f)l[f]+=c[f];else if(i==="-=")for(let f=0;f<l.length;++f)l[f]-=c[f];else if(i==="*=")for(let f=0;f<l.length;++f)l[f]*=c[f];else if(i==="/=")for(let f=0;f<l.length;++f)l[f]/=c[f];else if(i==="%=")for(let f=0;f<l.length;++f)l[f]%=c[f];else if(i==="&=")for(let f=0;f<l.length;++f)l[f]&=c[f];else if(i==="|=")for(let f=0;f<l.length;++f)l[f]|=c[f];else if(i==="^=")for(let f=0;f<l.length;++f)l[f]^=c[f];else if(i==="<<=")for(let f=0;f<l.length;++f)l[f]<<=c[f];else if(i===">>=")for(let f=0;f<l.length;++f)l[f]>>=c[f];else console.error(`Invalid operator ${i}. Line ${e.line}`)}else{if(!(u instanceof y&&a instanceof y))return void console.error(`Invalid type for ${e.operator} operator. Line ${e.line}`);i==="+="?u.value+=a.value:i==="-="?u.value-=a.value:i==="*="?u.value*=a.value:i==="/="?u.value/=a.value:i==="%="?u.value%=a.value:i==="&="?u.value&=a.value:i==="|="?u.value|=a.value:i==="^="?u.value^=a.value:i==="<<="?u.value<<=a.value:i===">>="?u.value>>=a.value:console.error(`Invalid operator ${i}. Line ${e.line}`)}n instanceof Le&&n.setDataValue(this,u,o,r)}}_function(e,r){let n=new qi(e);r.functions.set(e.name,n)}_const(e,r){let n=null;e.value!==null&&(n=this.evalExpression(e.value,r)),r.createVariable(e.name,n,e)}_let(e,r){let n=null;if(e.value!==null){if(n=this.evalExpression(e.value,r),n===null)return void console.error(`Invalid value for variable ${e.name}. Line ${e.line}`);e.value instanceof Ee||(n=n.clone())}else{let s=e.type.name;if(s==="f32"||s==="i32"||s==="u32"||s==="bool"||s==="f16"||s==="vec2"||s==="vec3"||s==="vec4"||s==="vec2f"||s==="vec3f"||s==="vec4f"||s==="vec2i"||s==="vec3i"||s==="vec4i"||s==="vec2u"||s==="vec3u"||s==="vec4u"||s==="vec2h"||s==="vec3h"||s==="vec4h"||s==="vec2b"||s==="vec3b"||s==="vec4b"||s==="mat2x2"||s==="mat2x3"||s==="mat2x4"||s==="mat3x2"||s==="mat3x3"||s==="mat3x4"||s==="mat4x2"||s==="mat4x3"||s==="mat4x4"||s==="mat2x2f"||s==="mat2x3f"||s==="mat2x4f"||s==="mat3x2f"||s==="mat3x3f"||s==="mat3x4f"||s==="mat4x2f"||s==="mat4x3f"||s==="mat4x4f"||s==="mat2x2h"||s==="mat2x3h"||s==="mat2x4h"||s==="mat3x2h"||s==="mat3x3h"||s==="mat3x4h"||s==="mat4x2h"||s==="mat4x3h"||s==="mat4x4h"||s==="array"){let o=new At(e.type,[]);n=this._evalCreate(o,r)}}r.createVariable(e.name,n,e)}_var(e,r){let n=null;if(e.value!==null){if(n=this.evalExpression(e.value,r),n===null)return void console.error(`Invalid value for variable ${e.name}. Line ${e.line}`);e.value instanceof Ee||(n=n.clone())}else{if(e.type===null)return void console.error(`Variable ${e.name} has no type. Line ${e.line}`);let s=e.type.name;if(s==="f32"||s==="i32"||s==="u32"||s==="bool"||s==="f16"||s==="vec2"||s==="vec3"||s==="vec4"||s==="vec2f"||s==="vec3f"||s==="vec4f"||s==="vec2i"||s==="vec3i"||s==="vec4i"||s==="vec2u"||s==="vec3u"||s==="vec4u"||s==="vec2h"||s==="vec3h"||s==="vec4h"||s==="vec2b"||s==="vec3b"||s==="vec4b"||s==="mat2x2"||s==="mat2x3"||s==="mat2x4"||s==="mat3x2"||s==="mat3x3"||s==="mat3x4"||s==="mat4x2"||s==="mat4x3"||s==="mat4x4"||s==="mat2x2f"||s==="mat2x3f"||s==="mat2x4f"||s==="mat3x2f"||s==="mat3x3f"||s==="mat3x4f"||s==="mat4x2f"||s==="mat4x3f"||s==="mat4x4f"||s==="mat2x2h"||s==="mat2x3h"||s==="mat2x4h"||s==="mat3x2h"||s==="mat3x3h"||s==="mat3x4h"||s==="mat4x2h"||s==="mat4x3h"||s==="mat4x4h"||e.type instanceof Or||e.type instanceof Mt||e.type instanceof _){let o=new At(e.type,[]);n=this._evalCreate(o,r)}}r.createVariable(e.name,n,e)}_switch(e,r){r=r.clone();let n=this.evalExpression(e.condition,r);if(!(n instanceof y))return console.error(`Invalid if condition. Line ${e.line}`),null;let s=null;for(let o of e.cases)if(o instanceof Eo)for(let a of o.selectors){if(a instanceof bn){s=o;continue}let i=this.evalExpression(a,r);if(!(i instanceof y))return console.error(`Invalid case selector. Line ${e.line}`),null;if(i.value===n.value)return this._execStatements(o.body,r)}else o instanceof Ao&&(s=o);return s?this._execStatements(s.body,r):null}_if(e,r){r=r.clone();let n=this.evalExpression(e.condition,r);if(!(n instanceof y))return console.error(`Invalid if condition. Line ${e.line}`),null;if(n.value)return this._execStatements(e.body,r);for(let s of e.elseif){let o=this.evalExpression(s.condition,r);if(!(o instanceof y))return console.error(`Invalid if condition. Line ${e.line}`),null;if(o.value)return this._execStatements(s.body,r)}return e.else?this._execStatements(e.else,r):null}_getScalarValue(e){return e instanceof y?e.value:(console.error("Expected scalar value.",e),0)}_for(e,r){for(r=r.clone(),this.execStatement(e.init,r);this._getScalarValue(this.evalExpression(e.condition,r));){let n=this._execStatements(e.body,r);if(n===t._breakObj)break;if(n!==null&&n!==t._continueObj)return n;this.execStatement(e.increment,r)}return null}_loop(e,r){for(r=r.clone();;){let n=this._execStatements(e.body,r);if(n===t._breakObj)break;if(n===t._continueObj){if(e.continuing&&this._execStatements(e.continuing.body,r)===t._breakObj)break}else if(n!==null)return n}return null}_while(e,r){for(r=r.clone();this._getScalarValue(this.evalExpression(e.condition,r));){let n=this._execStatements(e.body,r);if(n===t._breakObj)break;if(n!==t._continueObj&&n!==null)return n}return null}_evalBitcast(e,r){let n=this.evalExpression(e.value,r),s=e.type;if(n instanceof y){let o=qf(n.value,n.typeInfo.name,s.name);return new y(o,this.getTypeInfo(s))}if(n instanceof d){let o=n.typeInfo.getTypeName(),a="";if(o.endsWith("f"))a="f32";else if(o.endsWith("i"))a="i32";else if(o.endsWith("u"))a="u32";else if(o.endsWith("b"))a="bool";else{if(!o.endsWith("h"))return console.error(`Unknown vector type ${o}. Line ${e.line}`),null;a="f16"}let i=s.getTypeName(),u="";if(i.endsWith("f"))u="f32";else if(i.endsWith("i"))u="i32";else if(i.endsWith("u"))u="u32";else if(i.endsWith("b"))u="bool";else{if(!i.endsWith("h"))return console.error(`Unknown vector type ${u}. Line ${e.line}`),null;u="f16"}let l=function(c,f,m){if(f===m)return c;let p=new Array(c.length);for(let w=0;w<c.length;w++)p[w]=qf(c[w],f,m);return p}(Array.from(n.data),a,u);return new d(l,this.getTypeInfo(s))}return console.error(`TODO: bitcast for ${n.typeInfo.name}. Line ${e.line}`),null}_evalConst(e,r){return r.getVariableValue(e.name).clone().getSubData(this,e.postfix,r)}_evalCreate(e,r){var n;if(e instanceof At){if(e.type===null)return ns.void;switch(e.type.getTypeName()){case"bool":case"i32":case"u32":case"f32":case"f16":return this._callConstructorValue(e,r);case"vec2":case"vec3":case"vec4":case"vec2f":case"vec3f":case"vec4f":case"vec2h":case"vec3h":case"vec4h":case"vec2i":case"vec3i":case"vec4i":case"vec2u":case"vec3u":case"vec4u":case"vec2b":case"vec3b":case"vec4b":return this._callConstructorVec(e,r);case"mat2x2":case"mat2x2f":case"mat2x2h":case"mat2x3":case"mat2x3f":case"mat2x3h":case"mat2x4":case"mat2x4f":case"mat2x4h":case"mat3x2":case"mat3x2f":case"mat3x2h":case"mat3x3":case"mat3x3f":case"mat3x3h":case"mat3x4":case"mat3x4f":case"mat3x4h":case"mat4x2":case"mat4x2f":case"mat4x2h":case"mat4x3":case"mat4x3f":case"mat4x3h":case"mat4x4":case"mat4x4f":case"mat4x4h":return this._callConstructorMatrix(e,r)}}let s=e instanceof At?e.type.name:e.name,o=e instanceof At?this.getTypeInfo(e.type):this.getTypeInfo(e.name);if(o===null)return console.error(`Unknown type ${s}. Line ${e.line}`),null;if(o.size===0)return null;let a=new Le(new ArrayBuffer(o.size),o,0);if(o instanceof qt){if(e.args)for(let i=0;i<e.args.length;++i){let u=o.members[i],l=e.args[i],c=this.evalExpression(l,r);a.setData(this,c,u.type,u.offset,r)}}else if(o instanceof Kt){let i=0;if(e.args)for(let u=0;u<e.args.length;++u){let l=e.args[u],c=this.evalExpression(l,r);o.format===null&&(((n=c.typeInfo)===null||n===void 0?void 0:n.name)==="x32"?o.format=this.getTypeInfo("i32"):o.format=c.typeInfo),a.setData(this,c,o.format,i,r),i+=o.stride}}else console.error(`Unknown type "${s}". Line ${e.line}`);return e instanceof At?a.getSubData(this,e.postfix,r):a}_evalLiteral(e,r){let n=this.getTypeInfo(e.type),s=n.name;return s==="x32"||s==="u32"||s==="f32"||s==="f16"||s==="i32"||s==="bool"?new y(e.scalarValue,n):s==="vec2"||s==="vec3"||s==="vec4"||s==="vec2f"||s==="vec3f"||s==="vec4f"||s==="vec2h"||s==="vec3h"||s==="vec4h"||s==="vec2i"||s==="vec3i"||s==="vec4i"||s==="vec2u"||s==="vec3u"||s==="vec4u"?this._callConstructorVec(e,r):s==="mat2x2"||s==="mat2x3"||s==="mat2x4"||s==="mat3x2"||s==="mat3x3"||s==="mat3x4"||s==="mat4x2"||s==="mat4x3"||s==="mat4x4"||s==="mat2x2f"||s==="mat2x3f"||s==="mat2x4f"||s==="mat3x2f"||s==="mat3x3f"||s==="mat3x4f"||s==="mat4x2f"||s==="mat4x3f"||s==="mat4x4f"||s==="mat2x2h"||s==="mat2x3h"||s==="mat2x4h"||s==="mat3x2h"||s==="mat3x3h"||s==="mat3x4h"||s==="mat4x2h"||s==="mat4x3h"||s==="mat4x4h"?this._callConstructorMatrix(e,r):e.value}_evalVariable(e,r){let n=r.getVariableValue(e.name);return n===null?n:n.getSubData(this,e.postfix,r)}_maxFormatTypeInfo(e){let r=e[0];if(r.name==="f32")return r;for(let n=1;n<e.length;++n){let s=t._priority.get(r.name);t._priority.get(e[n].name)<s&&(r=e[n])}return r.name==="x32"?this.getTypeInfo("i32"):r}_evalUnaryOp(e,r){let n=this.evalExpression(e.right,r);if(e.operator==="&")return new kr(n);if(e.operator==="*")return n instanceof kr?n.reference.getSubData(this,e.postfix,r):(console.error(`Invalid dereference. Line ${e.line}`),null);let s=n instanceof y?n.value:n instanceof d?Array.from(n.data):null;switch(e.operator){case"+":{if(L(s)){let i=s.map((u,l)=>+u);return new d(i,n.typeInfo)}let o=s,a=this._maxFormatTypeInfo([n.typeInfo,n.typeInfo]);return new y(+o,a)}case"-":{if(L(s)){let i=s.map((u,l)=>-u);return new d(i,n.typeInfo)}let o=s,a=this._maxFormatTypeInfo([n.typeInfo,n.typeInfo]);return new y(-o,a)}case"!":{if(L(s)){let i=s.map((u,l)=>u?0:1);return new d(i,n.typeInfo)}let o=s,a=this._maxFormatTypeInfo([n.typeInfo,n.typeInfo]);return new y(o?0:1,a)}case"~":{if(L(s)){let i=s.map((u,l)=>~u);return new d(i,n.typeInfo)}let o=s,a=this._maxFormatTypeInfo([n.typeInfo,n.typeInfo]);return new y(~o,a)}}return console.error(`Invalid unary operator ${e.operator}. Line ${e.line}`),null}_evalBinaryOp(e,r){let n=this.evalExpression(e.left,r),s=this.evalExpression(e.right,r),o=n instanceof y?n.value:n instanceof d||n instanceof H?Array.from(n.data):null,a=s instanceof y?s.value:s instanceof d||s instanceof H?Array.from(s.data):null;switch(e.operator){case"+":{if(L(o)&&L(a)){let c=o,f=a;if(c.length!==f.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;let m=c.map((p,w)=>p+f[w]);return new d(m,n.typeInfo)}if(L(o)){let c=a,f=o.map((m,p)=>m+c);return new d(f,n.typeInfo)}if(L(a)){let c=o,f=a.map((m,p)=>c+m);return new d(f,s.typeInfo)}let i=o,u=a,l=this._maxFormatTypeInfo([n.typeInfo,s.typeInfo]);return new y(i+u,l)}case"-":{if(L(o)&&L(a)){let c=o,f=a;if(c.length!==f.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;let m=c.map((p,w)=>p-f[w]);return new d(m,n.typeInfo)}if(L(o)){let c=a,f=o.map((m,p)=>m-c);return new d(f,n.typeInfo)}if(L(a)){let c=o,f=a.map((m,p)=>c-m);return new d(f,s.typeInfo)}let i=o,u=a,l=this._maxFormatTypeInfo([n.typeInfo,s.typeInfo]);return new y(i-u,l)}case"*":{if(L(o)&&L(a)){let c=o,f=a;if(n instanceof H&&s instanceof H){let m=function(v,C,k,T){if(Je[C.name]===void 0||Je[T.name]===void 0)return null;let S=Je[C.name][0],F=Je[C.name][1],B=Je[T.name][0];if(S!==Je[T.name][1])return null;let z=new Array(B*F);for(let N=0;N<F;N++)for(let U=0;U<B;U++){let V=0;for(let P=0;P<S;P++)V+=v[P*F+N]*k[U*S+P];z[N*B+U]=V}return z}(c,n.typeInfo,f,s.typeInfo);if(m===null)return console.error(`Matrix multiplication failed. Line ${e.line}.`),null;let p=Je[s.typeInfo.name][0],w=Je[n.typeInfo.name][1],A=this.getTypeInfo(`mat${p}x${w}f`);return new H(m,A)}if(n instanceof H&&s instanceof d){let m=function(p,w,A,v){if(Je[w.name]===void 0||Ci[v.name]===void 0)return null;let C=Je[w.name][0],k=Je[w.name][1];if(C!==A.length)return null;let T=new Array(k);for(let S=0;S<k;S++){let F=0;for(let B=0;B<C;B++)F+=p[B*k+S]*A[B];T[S]=F}return T}(c,n.typeInfo,f,s.typeInfo);return m===null?(console.error(`Matrix vector multiplication failed. Line ${e.line}.`),null):new d(m,s.typeInfo)}if(n instanceof d&&s instanceof H){let m=function(p,w,A,v){if(Ci[w.name]===void 0||Je[v.name]===void 0)return null;let C=Je[v.name][0],k=Je[v.name][1];if(k!==p.length)return null;let T=[];for(let S=0;S<C;S++){let F=0;for(let B=0;B<k;B++)F+=p[B]*A[B*C+S];T[S]=F}return T}(c,n.typeInfo,f,s.typeInfo);return m===null?(console.error(`Matrix vector multiplication failed. Line ${e.line}.`),null):new d(m,n.typeInfo)}{if(c.length!==f.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;let m=c.map((p,w)=>p*f[w]);return new d(m,n.typeInfo)}}if(L(o)){let c=a,f=o.map((m,p)=>m*c);return n instanceof H?new H(f,n.typeInfo):new d(f,n.typeInfo)}if(L(a)){let c=o,f=a.map((m,p)=>c*m);return s instanceof H?new H(f,s.typeInfo):new d(f,s.typeInfo)}let i=o,u=a,l=this._maxFormatTypeInfo([n.typeInfo,s.typeInfo]);return new y(i*u,l)}case"%":{if(L(o)&&L(a)){let c=o,f=a;if(c.length!==f.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;let m=c.map((p,w)=>p%f[w]);return new d(m,n.typeInfo)}if(L(o)){let c=a,f=o.map((m,p)=>m%c);return new d(f,n.typeInfo)}if(L(a)){let c=o,f=a.map((m,p)=>c%m);return new d(f,s.typeInfo)}let i=o,u=a,l=this._maxFormatTypeInfo([n.typeInfo,s.typeInfo]);return new y(i%u,l)}case"/":{if(L(o)&&L(a)){let c=o,f=a;if(c.length!==f.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;let m=c.map((p,w)=>p/f[w]);return new d(m,n.typeInfo)}if(L(o)){let c=a,f=o.map((m,p)=>m/c);return new d(f,n.typeInfo)}if(L(a)){let c=o,f=a.map((m,p)=>c/m);return new d(f,s.typeInfo)}let i=o,u=a,l=this._maxFormatTypeInfo([n.typeInfo,s.typeInfo]);return new y(i/u,l)}case"&":{if(L(o)&&L(a)){let c=o,f=a;if(c.length!==f.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;let m=c.map((p,w)=>p&f[w]);return new d(m,n.typeInfo)}if(L(o)){let c=a,f=o.map((m,p)=>m&c);return new d(f,n.typeInfo)}if(L(a)){let c=o,f=a.map((m,p)=>c&m);return new d(f,s.typeInfo)}let i=o,u=a,l=this._maxFormatTypeInfo([n.typeInfo,s.typeInfo]);return new y(i&u,l)}case"|":{if(L(o)&&L(a)){let c=o,f=a;if(c.length!==f.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;let m=c.map((p,w)=>p|f[w]);return new d(m,n.typeInfo)}if(L(o)){let c=a,f=o.map((m,p)=>m|c);return new d(f,n.typeInfo)}if(L(a)){let c=o,f=a.map((m,p)=>c|m);return new d(f,s.typeInfo)}let i=o,u=a,l=this._maxFormatTypeInfo([n.typeInfo,s.typeInfo]);return new y(i|u,l)}case"^":{if(L(o)&&L(a)){let c=o,f=a;if(c.length!==f.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;let m=c.map((p,w)=>p^f[w]);return new d(m,n.typeInfo)}if(L(o)){let c=a,f=o.map((m,p)=>m^c);return new d(f,n.typeInfo)}if(L(a)){let c=o,f=a.map((m,p)=>c^m);return new d(f,s.typeInfo)}let i=o,u=a,l=this._maxFormatTypeInfo([n.typeInfo,s.typeInfo]);return new y(i^u,l)}case"<<":{if(L(o)&&L(a)){let c=o,f=a;if(c.length!==f.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;let m=c.map((p,w)=>p<<f[w]);return new d(m,n.typeInfo)}if(L(o)){let c=a,f=o.map((m,p)=>m<<c);return new d(f,n.typeInfo)}if(L(a)){let c=o,f=a.map((m,p)=>c<<m);return new d(f,s.typeInfo)}let i=o,u=a,l=this._maxFormatTypeInfo([n.typeInfo,s.typeInfo]);return new y(i<<u,l)}case">>":{if(L(o)&&L(a)){let c=o,f=a;if(c.length!==f.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;let m=c.map((p,w)=>p>>f[w]);return new d(m,n.typeInfo)}if(L(o)){let c=a,f=o.map((m,p)=>m>>c);return new d(f,n.typeInfo)}if(L(a)){let c=o,f=a.map((m,p)=>c>>m);return new d(f,s.typeInfo)}let i=o,u=a,l=this._maxFormatTypeInfo([n.typeInfo,s.typeInfo]);return new y(i>>u,l)}case">":if(L(o)&&L(a)){let i=o,u=a;if(i.length!==u.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;let l=i.map((c,f)=>c>u[f]?1:0);return new d(l,n.typeInfo)}if(L(o)){let i=a,u=o.map((l,c)=>l>i?1:0);return new d(u,n.typeInfo)}if(L(a)){let i=o,u=a.map((l,c)=>i>l?1:0);return new d(u,s.typeInfo)}return new y(o>a?1:0,this.getTypeInfo("bool"));case"<":if(L(o)&&L(a)){let i=o,u=a;if(i.length!==u.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;let l=i.map((c,f)=>c<u[f]?1:0);return new d(l,n.typeInfo)}if(L(o)){let i=a,u=o.map((l,c)=>l<i?1:0);return new d(u,n.typeInfo)}if(L(a)){let i=o,u=a.map((l,c)=>i<l?1:0);return new d(u,s.typeInfo)}return new y(o<a?1:0,this.getTypeInfo("bool"));case"==":if(L(o)&&L(a)){let i=o,u=a;if(i.length!==u.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;let l=i.map((c,f)=>c===u[f]?1:0);return new d(l,n.typeInfo)}if(L(o)){let i=a,u=o.map((l,c)=>l==i?1:0);return new d(u,n.typeInfo)}if(L(a)){let i=o,u=a.map((l,c)=>i==l?1:0);return new d(u,s.typeInfo)}return new y(o===a?1:0,this.getTypeInfo("bool"));case"!=":if(L(o)&&L(a)){let i=o,u=a;if(i.length!==u.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;let l=i.map((c,f)=>c!==u[f]?1:0);return new d(l,n.typeInfo)}if(L(o)){let i=a,u=o.map((l,c)=>l!==i?1:0);return new d(u,n.typeInfo)}if(L(a)){let i=o,u=a.map((l,c)=>i!==l?1:0);return new d(u,s.typeInfo)}return new y(o!==a?1:0,this.getTypeInfo("bool"));case">=":if(L(o)&&L(a)){let i=o,u=a;if(i.length!==u.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;let l=i.map((c,f)=>c>=u[f]?1:0);return new d(l,n.typeInfo)}if(L(o)){let i=a,u=o.map((l,c)=>l>=i?1:0);return new d(u,n.typeInfo)}if(L(a)){let i=o,u=a.map((l,c)=>i>=l?1:0);return new d(u,s.typeInfo)}return new y(o>=a?1:0,this.getTypeInfo("bool"));case"<=":if(L(o)&&L(a)){let i=o,u=a;if(i.length!==u.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;let l=i.map((c,f)=>c<=u[f]?1:0);return new d(l,n.typeInfo)}if(L(o)){let i=a,u=o.map((l,c)=>l<=i?1:0);return new d(u,n.typeInfo)}if(L(a)){let i=o,u=a.map((l,c)=>i<=l?1:0);return new d(u,s.typeInfo)}return new y(o<=a?1:0,this.getTypeInfo("bool"));case"&&":if(L(o)&&L(a)){let i=o,u=a;if(i.length!==u.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;let l=i.map((c,f)=>c&&u[f]?1:0);return new d(l,n.typeInfo)}if(L(o)){let i=a,u=o.map((l,c)=>l&&i?1:0);return new d(u,n.typeInfo)}if(L(a)){let i=o,u=a.map((l,c)=>i&&l?1:0);return new d(u,s.typeInfo)}return new y(o&&a?1:0,this.getTypeInfo("bool"));case"||":if(L(o)&&L(a)){let i=o,u=a;if(i.length!==u.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;let l=i.map((c,f)=>c||u[f]?1:0);return new d(l,n.typeInfo)}if(L(o)){let i=a,u=o.map((l,c)=>l||i?1:0);return new d(u,n.typeInfo)}if(L(a)){let i=o,u=a.map((l,c)=>i||l?1:0);return new d(u,s.typeInfo)}return new y(o||a?1:0,this.getTypeInfo("bool"))}return console.error(`Unknown operator ${e.operator}. Line ${e.line}`),null}_evalCall(e,r){if(e.cachedReturnValue!==null)return e.cachedReturnValue;let n=r.clone();n.currentFunctionName=e.name;let s=r.getFunction(e.name);if(!s)return e.isBuiltin?this._callBuiltinFunction(e,n):this.getTypeInfo(e.name)?this._evalCreate(e,r):(console.error(`Unknown function "${e.name}". Line ${e.line}`),null);for(let o=0;o<s.node.args.length;++o){let a=s.node.args[o],i=this.evalExpression(e.args[o],n);n.createVariable(a.name,i,a)}return this._execStatements(s.node.body,n)}_callBuiltinFunction(e,r){switch(e.name){case"all":return this.builtins.All(e,r);case"any":return this.builtins.Any(e,r);case"select":return this.builtins.Select(e,r);case"arrayLength":return this.builtins.ArrayLength(e,r);case"abs":return this.builtins.Abs(e,r);case"acos":return this.builtins.Acos(e,r);case"acosh":return this.builtins.Acosh(e,r);case"asin":return this.builtins.Asin(e,r);case"asinh":return this.builtins.Asinh(e,r);case"atan":return this.builtins.Atan(e,r);case"atanh":return this.builtins.Atanh(e,r);case"atan2":return this.builtins.Atan2(e,r);case"ceil":return this.builtins.Ceil(e,r);case"clamp":return this.builtins.Clamp(e,r);case"cos":return this.builtins.Cos(e,r);case"cosh":return this.builtins.Cosh(e,r);case"countLeadingZeros":return this.builtins.CountLeadingZeros(e,r);case"countOneBits":return this.builtins.CountOneBits(e,r);case"countTrailingZeros":return this.builtins.CountTrailingZeros(e,r);case"cross":return this.builtins.Cross(e,r);case"degrees":return this.builtins.Degrees(e,r);case"determinant":return this.builtins.Determinant(e,r);case"distance":return this.builtins.Distance(e,r);case"dot":return this.builtins.Dot(e,r);case"dot4U8Packed":return this.builtins.Dot4U8Packed(e,r);case"dot4I8Packed":return this.builtins.Dot4I8Packed(e,r);case"exp":return this.builtins.Exp(e,r);case"exp2":return this.builtins.Exp2(e,r);case"extractBits":return this.builtins.ExtractBits(e,r);case"faceForward":return this.builtins.FaceForward(e,r);case"firstLeadingBit":return this.builtins.FirstLeadingBit(e,r);case"firstTrailingBit":return this.builtins.FirstTrailingBit(e,r);case"floor":return this.builtins.Floor(e,r);case"fma":return this.builtins.Fma(e,r);case"fract":return this.builtins.Fract(e,r);case"frexp":return this.builtins.Frexp(e,r);case"insertBits":return this.builtins.InsertBits(e,r);case"inverseSqrt":return this.builtins.InverseSqrt(e,r);case"ldexp":return this.builtins.Ldexp(e,r);case"length":return this.builtins.Length(e,r);case"log":return this.builtins.Log(e,r);case"log2":return this.builtins.Log2(e,r);case"max":return this.builtins.Max(e,r);case"min":return this.builtins.Min(e,r);case"mix":return this.builtins.Mix(e,r);case"modf":return this.builtins.Modf(e,r);case"normalize":return this.builtins.Normalize(e,r);case"pow":return this.builtins.Pow(e,r);case"quantizeToF16":return this.builtins.QuantizeToF16(e,r);case"radians":return this.builtins.Radians(e,r);case"reflect":return this.builtins.Reflect(e,r);case"refract":return this.builtins.Refract(e,r);case"reverseBits":return this.builtins.ReverseBits(e,r);case"round":return this.builtins.Round(e,r);case"saturate":return this.builtins.Saturate(e,r);case"sign":return this.builtins.Sign(e,r);case"sin":return this.builtins.Sin(e,r);case"sinh":return this.builtins.Sinh(e,r);case"smoothStep":return this.builtins.SmoothStep(e,r);case"sqrt":return this.builtins.Sqrt(e,r);case"step":return this.builtins.Step(e,r);case"tan":return this.builtins.Tan(e,r);case"tanh":return this.builtins.Tanh(e,r);case"transpose":return this.builtins.Transpose(e,r);case"trunc":return this.builtins.Trunc(e,r);case"dpdx":return this.builtins.Dpdx(e,r);case"dpdxCoarse":return this.builtins.DpdxCoarse(e,r);case"dpdxFine":return this.builtins.DpdxFine(e,r);case"dpdy":return this.builtins.Dpdy(e,r);case"dpdyCoarse":return this.builtins.DpdyCoarse(e,r);case"dpdyFine":return this.builtins.DpdyFine(e,r);case"fwidth":return this.builtins.Fwidth(e,r);case"fwidthCoarse":return this.builtins.FwidthCoarse(e,r);case"fwidthFine":return this.builtins.FwidthFine(e,r);case"textureDimensions":return this.builtins.TextureDimensions(e,r);case"textureGather":return this.builtins.TextureGather(e,r);case"textureGatherCompare":return this.builtins.TextureGatherCompare(e,r);case"textureLoad":return this.builtins.TextureLoad(e,r);case"textureNumLayers":return this.builtins.TextureNumLayers(e,r);case"textureNumLevels":return this.builtins.TextureNumLevels(e,r);case"textureNumSamples":return this.builtins.TextureNumSamples(e,r);case"textureSample":return this.builtins.TextureSample(e,r);case"textureSampleBias":return this.builtins.TextureSampleBias(e,r);case"textureSampleCompare":return this.builtins.TextureSampleCompare(e,r);case"textureSampleCompareLevel":return this.builtins.TextureSampleCompareLevel(e,r);case"textureSampleGrad":return this.builtins.TextureSampleGrad(e,r);case"textureSampleLevel":return this.builtins.TextureSampleLevel(e,r);case"textureSampleBaseClampToEdge":return this.builtins.TextureSampleBaseClampToEdge(e,r);case"textureStore":return this.builtins.TextureStore(e,r);case"atomicLoad":return this.builtins.AtomicLoad(e,r);case"atomicStore":return this.builtins.AtomicStore(e,r);case"atomicAdd":return this.builtins.AtomicAdd(e,r);case"atomicSub":return this.builtins.AtomicSub(e,r);case"atomicMax":return this.builtins.AtomicMax(e,r);case"atomicMin":return this.builtins.AtomicMin(e,r);case"atomicAnd":return this.builtins.AtomicAnd(e,r);case"atomicOr":return this.builtins.AtomicOr(e,r);case"atomicXor":return this.builtins.AtomicXor(e,r);case"atomicExchange":return this.builtins.AtomicExchange(e,r);case"atomicCompareExchangeWeak":return this.builtins.AtomicCompareExchangeWeak(e,r);case"pack4x8snorm":return this.builtins.Pack4x8snorm(e,r);case"pack4x8unorm":return this.builtins.Pack4x8unorm(e,r);case"pack4xI8":return this.builtins.Pack4xI8(e,r);case"pack4xU8":return this.builtins.Pack4xU8(e,r);case"pack4x8Clamp":return this.builtins.Pack4x8Clamp(e,r);case"pack4xU8Clamp":return this.builtins.Pack4xU8Clamp(e,r);case"pack2x16snorm":return this.builtins.Pack2x16snorm(e,r);case"pack2x16unorm":return this.builtins.Pack2x16unorm(e,r);case"pack2x16float":return this.builtins.Pack2x16float(e,r);case"unpack4x8snorm":return this.builtins.Unpack4x8snorm(e,r);case"unpack4x8unorm":return this.builtins.Unpack4x8unorm(e,r);case"unpack4xI8":return this.builtins.Unpack4xI8(e,r);case"unpack4xU8":return this.builtins.Unpack4xU8(e,r);case"unpack2x16snorm":return this.builtins.Unpack2x16snorm(e,r);case"unpack2x16unorm":return this.builtins.Unpack2x16unorm(e,r);case"unpack2x16float":return this.builtins.Unpack2x16float(e,r);case"storageBarrier":return this.builtins.StorageBarrier(e,r);case"textureBarrier":return this.builtins.TextureBarrier(e,r);case"workgroupBarrier":return this.builtins.WorkgroupBarrier(e,r);case"workgroupUniformLoad":return this.builtins.WorkgroupUniformLoad(e,r);case"subgroupAdd":return this.builtins.SubgroupAdd(e,r);case"subgroupExclusiveAdd":return this.builtins.SubgroupExclusiveAdd(e,r);case"subgroupInclusiveAdd":return this.builtins.SubgroupInclusiveAdd(e,r);case"subgroupAll":return this.builtins.SubgroupAll(e,r);case"subgroupAnd":return this.builtins.SubgroupAnd(e,r);case"subgroupAny":return this.builtins.SubgroupAny(e,r);case"subgroupBallot":return this.builtins.SubgroupBallot(e,r);case"subgroupBroadcast":return this.builtins.SubgroupBroadcast(e,r);case"subgroupBroadcastFirst":return this.builtins.SubgroupBroadcastFirst(e,r);case"subgroupElect":return this.builtins.SubgroupElect(e,r);case"subgroupMax":return this.builtins.SubgroupMax(e,r);case"subgroupMin":return this.builtins.SubgroupMin(e,r);case"subgroupMul":return this.builtins.SubgroupMul(e,r);case"subgroupExclusiveMul":return this.builtins.SubgroupExclusiveMul(e,r);case"subgroupInclusiveMul":return this.builtins.SubgroupInclusiveMul(e,r);case"subgroupOr":return this.builtins.SubgroupOr(e,r);case"subgroupShuffle":return this.builtins.SubgroupShuffle(e,r);case"subgroupShuffleDown":return this.builtins.SubgroupShuffleDown(e,r);case"subgroupShuffleUp":return this.builtins.SubgroupShuffleUp(e,r);case"subgroupShuffleXor":return this.builtins.SubgroupShuffleXor(e,r);case"subgroupXor":return this.builtins.SubgroupXor(e,r);case"quadBroadcast":return this.builtins.QuadBroadcast(e,r);case"quadSwapDiagonal":return this.builtins.QuadSwapDiagonal(e,r);case"quadSwapX":return this.builtins.QuadSwapX(e,r);case"quadSwapY":return this.builtins.QuadSwapY(e,r)}let n=r.getFunction(e.name);if(n){let s=r.clone();for(let o=0;o<n.node.args.length;++o){let a=n.node.args[o],i=this.evalExpression(e.args[o],s);s.setVariable(a.name,i,a)}return this._execStatements(n.node.body,s)}return null}_callConstructorValue(e,r){if(!e.args||e.args.length===0)return new y(0,this.getTypeInfo(e.type));let n=this.evalExpression(e.args[0],r);return n.typeInfo=this.getTypeInfo(e.type),n.getSubData(this,e.postfix,r).clone()}_callConstructorVec(e,r){let n=this.getTypeInfo(e.type),s=e.type.getTypeName(),o=Ci[s];if(o===void 0)return console.error(`Invalid vec constructor ${s}. Line ${e.line}`),null;let a=[];if(e instanceof Ce)if(e.isVector){let i=e.vectorValue;for(let u of i)a.push(u)}else a.push(e.scalarValue);else if(e.args)for(let i of e.args){let u=this.evalExpression(i,r);if(u instanceof d){let l=u.data;for(let c=0;c<l.length;++c){let f=l[c];a.push(f)}}else if(u instanceof y){let l=u.value;a.push(l)}}if(e.type instanceof _&&e.type.format===null&&(e.type.format=_.f32),a.length===0){let i=new Array(o).fill(0);return new d(i,n).getSubData(this,e.postfix,r)}if(a.length===1)for(;a.length<o;)a.push(a[0]);return a.length<o?(console.error(`Invalid vec constructor. Line ${e.line}`),null):new d(a.length>o?a.slice(0,o):a,n).getSubData(this,e.postfix,r)}_callConstructorMatrix(e,r){let n=this.getTypeInfo(e.type),s=e.type.getTypeName(),o=Je[s];if(o===void 0)return console.error(`Invalid matrix constructor ${s}. Line ${e.line}`),null;let a=[];if(e instanceof Ce)if(e.isVector){let i=e.vectorValue;for(let u of i)a.push(u)}else a.push(e.scalarValue);else if(e.args)for(let i of e.args){let u=this.evalExpression(i,r);u instanceof d?a.push(...u.data):u instanceof y?a.push(u.value):u instanceof H&&a.push(...u.data)}if(n instanceof ir&&n.format===null&&(n.format=this.getTypeInfo("f32")),a.length===0){let i=new Array(o[2]).fill(0);return new H(i,n).getSubData(this,e.postfix,r)}return a.length!==o[2]?(console.error(`Invalid matrix constructor. Line ${e.line}`),null):new H(a,n).getSubData(this,e.postfix,r)}};vn._breakObj=new It(new st("BREAK",null),null),vn._continueObj=new It(new st("CONTINUE",null),null),vn._priority=new Map([["f32",0],["f16",1],["u32",2],["i32",3],["x32",3]]);var Qi=class{constructor(){this.constants=new Map,this.aliases=new Map,this.structs=new Map}},eu=class{constructor(){this._tokens=[],this._current=0,this._currentLine=1,this._deferArrayCountEval=[],this._currentLoop=[],this._context=new Qi,this._exec=new vn,this._forwardTypeCount=0}parse(e){this._initialize(e),this._deferArrayCountEval.length=0;let r=[];for(;!this._isAtEnd();){let n=this._global_decl_or_directive();if(!n)break;r.push(n)}if(this._deferArrayCountEval.length>0){for(let n of this._deferArrayCountEval){let s=n.arrayType,o=n.countNode;if(o instanceof Qe){let a=o.name,i=this._context.constants.get(a);if(i)try{let u=i.constEvaluate(this._exec);s.count=u}catch{}}}this._deferArrayCountEval.length=0}if(this._forwardTypeCount>0)for(let n of r)n.search(s=>{s instanceof Io||s instanceof _n?s.type=this._forwardType(s.type):s instanceof Or?s.format=this._forwardType(s.format):s instanceof Nt||s instanceof Pr||s instanceof yn?s.type=this._forwardType(s.type):s instanceof Mr?s.returnType=this._forwardType(s.returnType):s instanceof Ro&&(s.type=this._forwardType(s.type))});return r}_forwardType(e){if(e instanceof bo){let r=this._getType(e.name);if(r)return r}else e instanceof _n?e.type=this._forwardType(e.type):e instanceof Or&&(e.format=this._forwardType(e.format));return e}_initialize(e){if(e)if(typeof e=="string"){let r=new Xi(e);this._tokens=r.scanTokens()}else this._tokens=e;else this._tokens=[];this._current=0}_updateNode(e,r){return e.line=r??this._currentLine,e}_error(e,r){return{token:e,message:r,toString:()=>`${r}`}}_isAtEnd(){return this._current>=this._tokens.length||this._peek().type==h.eof}_match(e){if(e instanceof g)return!!this._check(e)&&(this._advance(),!0);for(let r=0,n=e.length;r<n;++r){let s=e[r];if(this._check(s))return this._advance(),!0}return!1}_consume(e,r){if(this._check(e))return this._advance();throw this._error(this._peek(),`${r}. Line:${this._currentLine}`)}_check(e){if(this._isAtEnd())return!1;let r=this._peek();if(e instanceof Array){let n=r.type,s=!1;for(let o of e){if(n===o)return!0;o===h.tokens.name&&(s=!0)}if(s){let o=h.tokens.name.rule.exec(r.lexeme);if(o&&o.index==0&&o[0]==r.lexeme)return!0}return!1}if(r.type===e)return!0;if(e===h.tokens.name){let n=h.tokens.name.rule.exec(r.lexeme);return n&&n.index==0&&n[0]==r.lexeme}return!1}_advance(){var e,r;return this._currentLine=(r=(e=this._peek())===null||e===void 0?void 0:e.line)!==null&&r!==void 0?r:-1,this._isAtEnd()||this._current++,this._previous()}_peek(){return this._tokens[this._current]}_previous(){return this._tokens[this._current-1]}_global_decl_or_directive(){for(;this._match(h.tokens.semicolon)&&!this._isAtEnd(););if(this._match(h.keywords.alias)){let r=this._type_alias();return this._consume(h.tokens.semicolon,"Expected ';'"),this._exec.reflection.updateAST([r]),r}if(this._match(h.keywords.diagnostic)){let r=this._diagnostic();return this._consume(h.tokens.semicolon,"Expected ';'"),this._exec.reflection.updateAST([r]),r}if(this._match(h.keywords.requires)){let r=this._requires_directive();return this._consume(h.tokens.semicolon,"Expected ';'"),this._exec.reflection.updateAST([r]),r}if(this._match(h.keywords.enable)){let r=this._enable_directive();return this._consume(h.tokens.semicolon,"Expected ';'"),this._exec.reflection.updateAST([r]),r}let e=this._attribute();if(this._check(h.keywords.var)){let r=this._global_variable_decl();return r!=null&&(r.attributes=e),this._consume(h.tokens.semicolon,"Expected ';'."),this._exec.reflection.updateAST([r]),r}if(this._check(h.keywords.override)){let r=this._override_variable_decl();return r!=null&&(r.attributes=e),this._consume(h.tokens.semicolon,"Expected ';'."),this._exec.reflection.updateAST([r]),r}if(this._check(h.keywords.let)){let r=this._global_let_decl();return r!=null&&(r.attributes=e),this._consume(h.tokens.semicolon,"Expected ';'."),this._exec.reflection.updateAST([r]),r}if(this._check(h.keywords.const)){let r=this._global_const_decl();return r!=null&&(r.attributes=e),this._consume(h.tokens.semicolon,"Expected ';'."),this._exec.reflection.updateAST([r]),r}if(this._check(h.keywords.struct)){let r=this._struct_decl();return r!=null&&(r.attributes=e),this._exec.reflection.updateAST([r]),r}if(this._check(h.keywords.fn)){let r=this._function_decl();return r!=null&&(r.attributes=e),this._exec.reflection.updateAST([r]),r}return null}_function_decl(){if(!this._match(h.keywords.fn))return null;let e=this._currentLine,r=this._consume(h.tokens.ident,"Expected function name.").toString();this._consume(h.tokens.paren_left,"Expected '(' for function arguments.");let n=[];if(!this._check(h.tokens.paren_right))do{if(this._check(h.tokens.paren_right))break;let i=this._attribute(),u=this._consume(h.tokens.name,"Expected argument name.").toString();this._consume(h.tokens.colon,"Expected ':' for argument type.");let l=this._attribute(),c=this._type_decl();c!=null&&(c.attributes=l,n.push(this._updateNode(new Ro(u,c,i))))}while(this._match(h.tokens.comma));this._consume(h.tokens.paren_right,"Expected ')' after function arguments.");let s=null;if(this._match(h.tokens.arrow)){let i=this._attribute();s=this._type_decl(),s!=null&&(s.attributes=i)}let o=this._compound_statement(),a=this._currentLine;return this._updateNode(new Mr(r,n,s,o,e,a),e)}_compound_statement(){let e=[];for(this._consume(h.tokens.brace_left,"Expected '{' for block.");!this._check(h.tokens.brace_right);){let r=this._statement();r!==null&&e.push(r)}return this._consume(h.tokens.brace_right,"Expected '}' for block."),e}_statement(){for(;this._match(h.tokens.semicolon)&&!this._isAtEnd(););if(this._check(h.tokens.attr)&&this._attribute(),this._check(h.keywords.if))return this._if_statement();if(this._check(h.keywords.switch))return this._switch_statement();if(this._check(h.keywords.loop))return this._loop_statement();if(this._check(h.keywords.for))return this._for_statement();if(this._check(h.keywords.while))return this._while_statement();if(this._check(h.keywords.continuing))return this._continuing_statement();if(this._check(h.keywords.static_assert))return this._static_assert_statement();if(this._check(h.tokens.brace_left))return this._compound_statement();let e=null;if(this._check(h.keywords.return))e=this._return_statement();else if(this._check([h.keywords.var,h.keywords.let,h.keywords.const]))e=this._variable_statement();else if(this._match(h.keywords.discard))e=this._updateNode(new zi);else if(this._match(h.keywords.break)){let r=this._updateNode(new yo);if(this._currentLoop.length>0){let n=this._currentLoop[this._currentLoop.length-1];r.loopId=n.id}e=r,this._check(h.keywords.if)&&(this._advance(),r.condition=this._optional_paren_expression())}else if(this._match(h.keywords.continue)){let r=this._updateNode(new _o);if(!(this._currentLoop.length>0))throw this._error(this._peek(),`Continue statement must be inside a loop. Line: ${r.line}`);{let n=this._currentLoop[this._currentLoop.length-1];r.loopId=n.id}e=r}else e=this._increment_decrement_statement()||this._func_call_statement()||this._assignment_statement();return e!=null&&this._consume(h.tokens.semicolon,"Expected ';' after statement."),e}_static_assert_statement(){if(!this._match(h.keywords.static_assert))return null;let e=this._currentLine,r=this._optional_paren_expression();return this._updateNode(new Vi(r),e)}_while_statement(){if(!this._match(h.keywords.while))return null;let e=this._updateNode(new uo(null,null));return this._currentLoop.push(e),e.condition=this._optional_paren_expression(),this._check(h.tokens.attr)&&this._attribute(),e.body=this._compound_statement(),this._currentLoop.pop(),e}_continuing_statement(){let e=this._currentLoop.length>0?this._currentLoop[this._currentLoop.length-1].id:-1;if(!this._match(h.keywords.continuing))return null;let r=this._currentLine,n=this._compound_statement();return this._updateNode(new Jn(n,e),r)}_for_statement(){if(!this._match(h.keywords.for))return null;this._consume(h.tokens.paren_left,"Expected '('.");let e=this._updateNode(new co(null,null,null,null));return this._currentLoop.push(e),e.init=this._check(h.tokens.semicolon)?null:this._for_init(),this._consume(h.tokens.semicolon,"Expected ';'."),e.condition=this._check(h.tokens.semicolon)?null:this._short_circuit_or_expression(),this._consume(h.tokens.semicolon,"Expected ';'."),e.increment=this._check(h.tokens.paren_right)?null:this._for_increment(),this._consume(h.tokens.paren_right,"Expected ')'."),this._check(h.tokens.attr)&&this._attribute(),e.body=this._compound_statement(),this._currentLoop.pop(),e}_for_init(){return this._variable_statement()||this._func_call_statement()||this._assignment_statement()}_for_increment(){return this._func_call_statement()||this._increment_decrement_statement()||this._assignment_statement()}_variable_statement(){if(this._check(h.keywords.var)){let e=this._variable_decl();if(e===null)throw this._error(this._peek(),"Variable declaration expected.");let r=null;return this._match(h.tokens.equal)&&(r=this._short_circuit_or_expression()),this._updateNode(new Nt(e.name,e.type,e.storage,e.access,r),e.line)}if(this._match(h.keywords.let)){let e=this._currentLine,r=this._consume(h.tokens.name,"Expected name for let.").toString(),n=null;if(this._match(h.tokens.colon)){let o=this._attribute();n=this._type_decl(),n!=null&&(n.attributes=o)}this._consume(h.tokens.equal,"Expected '=' for let.");let s=this._short_circuit_or_expression();return this._updateNode(new Pr(r,n,null,null,s),e)}if(this._match(h.keywords.const)){let e=this._currentLine,r=this._consume(h.tokens.name,"Expected name for const.").toString(),n=null;if(this._match(h.tokens.colon)){let o=this._attribute();n=this._type_decl(),n!=null&&(n.attributes=o)}this._consume(h.tokens.equal,"Expected '=' for const.");let s=this._short_circuit_or_expression();return n===null&&s instanceof Ce&&(n=s.type),this._updateNode(new yn(r,n,null,null,s),e)}return null}_increment_decrement_statement(){let e=this._current,r=this._unary_expression();if(r==null)return null;if(!this._check(h.increment_operators))return this._current=e,null;let n=this._consume(h.increment_operators,"Expected increment operator");return this._updateNode(new lo(n.type===h.tokens.plus_plus?gn.increment:gn.decrement,r))}_assignment_statement(){let e=null,r=this._currentLine;if(this._check(h.tokens.brace_right))return null;let n=this._match(h.tokens.underscore);if(n||(e=this._unary_expression()),!n&&e==null)return null;let s=this._consume(h.assignment_operators,"Expected assignment operator."),o=this._short_circuit_or_expression();return this._updateNode(new fo(Kn.parse(s.lexeme),e,o),r)}_func_call_statement(){if(!this._check(h.tokens.ident))return null;let e=this._currentLine,r=this._current,n=this._consume(h.tokens.ident,"Expected function name."),s=this._argument_expression_list();return s===null?(this._current=r,null):this._updateNode(new es(n.lexeme,s),e)}_loop_statement(){if(!this._match(h.keywords.loop))return null;this._check(h.tokens.attr)&&this._attribute(),this._consume(h.tokens.brace_left,"Expected '{' for loop.");let e=this._updateNode(new ho([],null));this._currentLoop.push(e);let r=this._statement();for(;r!==null;){if(Array.isArray(r))for(let n of r)e.body.push(n);else e.body.push(r);if(r instanceof Jn){e.continuing=r;break}r=this._statement()}return this._currentLoop.pop(),this._consume(h.tokens.brace_right,"Expected '}' for loop."),e}_switch_statement(){if(!this._match(h.keywords.switch))return null;let e=this._updateNode(new mo(null,[]));if(this._currentLoop.push(e),e.condition=this._optional_paren_expression(),this._check(h.tokens.attr)&&this._attribute(),this._consume(h.tokens.brace_left,"Expected '{' for switch."),e.cases=this._switch_body(),e.cases==null||e.cases.length==0)throw this._error(this._previous(),"Expected 'case' or 'default'.");return this._consume(h.tokens.brace_right,"Expected '}' for switch."),this._currentLoop.pop(),e}_switch_body(){let e=[],r=!1;for(;this._check([h.keywords.default,h.keywords.case]);){if(this._match(h.keywords.case)){let n=this._case_selectors();for(let o of n)if(o instanceof bn){if(r)throw this._error(this._previous(),"Multiple default cases in switch statement.");r=!0;break}this._match(h.tokens.colon),this._check(h.tokens.attr)&&this._attribute(),this._consume(h.tokens.brace_left,"Exected '{' for switch case.");let s=this._case_body();this._consume(h.tokens.brace_right,"Exected '}' for switch case."),e.push(this._updateNode(new Eo(n,s)))}if(this._match(h.keywords.default)){if(r)throw this._error(this._previous(),"Multiple default cases in switch statement.");this._match(h.tokens.colon),this._check(h.tokens.attr)&&this._attribute(),this._consume(h.tokens.brace_left,"Exected '{' for switch default.");let n=this._case_body();this._consume(h.tokens.brace_right,"Exected '}' for switch default."),e.push(this._updateNode(new Ao(n)))}}return e}_case_selectors(){let e=[];for(this._match(h.keywords.default)?e.push(this._updateNode(new bn)):e.push(this._shift_expression());this._match(h.tokens.comma);)this._match(h.keywords.default)?e.push(this._updateNode(new bn)):e.push(this._shift_expression());return e}_case_body(){if(this._match(h.keywords.fallthrough))return this._consume(h.tokens.semicolon,"Expected ';'"),[];let e=this._statement();if(e==null)return[];e instanceof Array||(e=[e]);let r=this._case_body();return r.length==0?e:[...e,r[0]]}_if_statement(){if(!this._match(h.keywords.if))return null;let e=this._currentLine,r=this._optional_paren_expression();this._check(h.tokens.attr)&&this._attribute();let n=this._compound_statement(),s=[];this._match_elseif()&&(this._check(h.tokens.attr)&&this._attribute(),s=this._elseif_statement(s));let o=null;return this._match(h.keywords.else)&&(this._check(h.tokens.attr)&&this._attribute(),o=this._compound_statement()),this._updateNode(new po(r,n,s,o),e)}_match_elseif(){return this._tokens[this._current].type===h.keywords.else&&this._tokens[this._current+1].type===h.keywords.if&&(this._advance(),this._advance(),!0)}_elseif_statement(e=[]){let r=this._optional_paren_expression(),n=this._compound_statement();return e.push(this._updateNode(new Hi(r,n))),this._match_elseif()&&(this._check(h.tokens.attr)&&this._attribute(),this._elseif_statement(e)),e}_return_statement(){if(!this._match(h.keywords.return))return null;let e=this._short_circuit_or_expression();return this._updateNode(new go(e))}_short_circuit_or_expression(){let e=this._short_circuit_and_expr();for(;this._match(h.tokens.or_or);)e=this._updateNode(new mt(this._previous().toString(),e,this._short_circuit_and_expr()));return e}_short_circuit_and_expr(){let e=this._inclusive_or_expression();for(;this._match(h.tokens.and_and);)e=this._updateNode(new mt(this._previous().toString(),e,this._inclusive_or_expression()));return e}_inclusive_or_expression(){let e=this._exclusive_or_expression();for(;this._match(h.tokens.or);)e=this._updateNode(new mt(this._previous().toString(),e,this._exclusive_or_expression()));return e}_exclusive_or_expression(){let e=this._and_expression();for(;this._match(h.tokens.xor);)e=this._updateNode(new mt(this._previous().toString(),e,this._and_expression()));return e}_and_expression(){let e=this._equality_expression();for(;this._match(h.tokens.and);)e=this._updateNode(new mt(this._previous().toString(),e,this._equality_expression()));return e}_equality_expression(){let e=this._relational_expression();return this._match([h.tokens.equal_equal,h.tokens.not_equal])?this._updateNode(new mt(this._previous().toString(),e,this._relational_expression())):e}_relational_expression(){let e=this._shift_expression();for(;this._match([h.tokens.less_than,h.tokens.greater_than,h.tokens.less_than_equal,h.tokens.greater_than_equal]);)e=this._updateNode(new mt(this._previous().toString(),e,this._shift_expression()));return e}_shift_expression(){let e=this._additive_expression();for(;this._match([h.tokens.shift_left,h.tokens.shift_right]);)e=this._updateNode(new mt(this._previous().toString(),e,this._additive_expression()));return e}_additive_expression(){let e=this._multiplicative_expression();for(;this._match([h.tokens.plus,h.tokens.minus]);)e=this._updateNode(new mt(this._previous().toString(),e,this._multiplicative_expression()));return e}_multiplicative_expression(){let e=this._unary_expression();for(;this._match([h.tokens.star,h.tokens.forward_slash,h.tokens.modulo]);)e=this._updateNode(new mt(this._previous().toString(),e,this._unary_expression()));return e}_unary_expression(){return this._match([h.tokens.minus,h.tokens.bang,h.tokens.tilde,h.tokens.star,h.tokens.and])?this._updateNode(new Ee(this._previous().toString(),this._unary_expression())):this._singular_expression()}_singular_expression(){let e=this._primary_expression(),r=this._postfix_expression();return r&&(e.postfix=r),e}_postfix_expression(){if(this._match(h.tokens.bracket_left)){let e=this._short_circuit_or_expression();this._consume(h.tokens.bracket_right,"Expected ']'.");let r=this._updateNode(new Er(e)),n=this._postfix_expression();return n&&(r.postfix=n),r}if(this._match(h.tokens.period)){let e=this._consume(h.tokens.name,"Expected member name."),r=this._postfix_expression(),n=this._updateNode(new ur(e.lexeme));return r&&(n.postfix=r),n}return null}_getStruct(e){return this._context.aliases.has(e)?this._context.aliases.get(e).type:this._context.structs.has(e)?this._context.structs.get(e):null}_getType(e){let r=this._getStruct(e);if(r!==null)return r;switch(e){case"void":return R.void;case"bool":return R.bool;case"i32":return R.i32;case"u32":return R.u32;case"f32":return R.f32;case"f16":return R.f16;case"vec2f":return _.vec2f;case"vec3f":return _.vec3f;case"vec4f":return _.vec4f;case"vec2i":return _.vec2i;case"vec3i":return _.vec3i;case"vec4i":return _.vec4i;case"vec2u":return _.vec2u;case"vec3u":return _.vec3u;case"vec4u":return _.vec4u;case"vec2h":return _.vec2h;case"vec3h":return _.vec3h;case"vec4h":return _.vec4h;case"mat2x2f":return _.mat2x2f;case"mat2x3f":return _.mat2x3f;case"mat2x4f":return _.mat2x4f;case"mat3x2f":return _.mat3x2f;case"mat3x3f":return _.mat3x3f;case"mat3x4f":return _.mat3x4f;case"mat4x2f":return _.mat4x2f;case"mat4x3f":return _.mat4x3f;case"mat4x4f":return _.mat4x4f;case"mat2x2h":return _.mat2x2h;case"mat2x3h":return _.mat2x3h;case"mat2x4h":return _.mat2x4h;case"mat3x2h":return _.mat3x2h;case"mat3x3h":return _.mat3x3h;case"mat3x4h":return _.mat3x4h;case"mat4x2h":return _.mat4x2h;case"mat4x3h":return _.mat4x3h;case"mat4x4h":return _.mat4x4h;case"mat2x2i":return _.mat2x2i;case"mat2x3i":return _.mat2x3i;case"mat2x4i":return _.mat2x4i;case"mat3x2i":return _.mat3x2i;case"mat3x3i":return _.mat3x3i;case"mat3x4i":return _.mat3x4i;case"mat4x2i":return _.mat4x2i;case"mat4x3i":return _.mat4x3i;case"mat4x4i":return _.mat4x4i;case"mat2x2u":return _.mat2x2u;case"mat2x3u":return _.mat2x3u;case"mat2x4u":return _.mat2x4u;case"mat3x2u":return _.mat3x2u;case"mat3x3u":return _.mat3x3u;case"mat3x4u":return _.mat3x4u;case"mat4x2u":return _.mat4x2u;case"mat4x3u":return _.mat4x3u;case"mat4x4u":return _.mat4x4u}return null}_validateTypeRange(e,r){if(r.name==="i32"){if(e<-2147483648||e>2147483647)throw this._error(this._previous(),`Value out of range for i32: ${e}. Line: ${this._currentLine}.`)}else if(r.name==="u32"&&(e<0||e>4294967295))throw this._error(this._previous(),`Value out of range for u32: ${e}. Line: ${this._currentLine}.`)}_primary_expression(){if(this._match(h.tokens.ident)){let n=this._previous().toString();if(this._check(h.tokens.paren_left)){let s=this._argument_expression_list(),o=this._getType(n);return o!==null?this._updateNode(new At(o,s)):this._updateNode(new rs(n,s))}if(this._context.constants.has(n)){let s=this._context.constants.get(n);return this._updateNode(new vo(n,s.value))}return this._updateNode(new Qe(n))}if(this._match(h.tokens.int_literal)){let n=this._previous().toString(),s=n.endsWith("i")||n.endsWith("i")?R.i32:n.endsWith("u")||n.endsWith("U")?R.u32:R.x32,o=parseInt(n);return this._validateTypeRange(o,s),this._updateNode(new Ce(new y(o,this._exec.getTypeInfo(s)),s))}if(this._match(h.tokens.uint_literal)){let n=parseInt(this._previous().toString());return this._validateTypeRange(n,R.u32),this._updateNode(new Ce(new y(n,this._exec.getTypeInfo(R.u32)),R.u32))}if(this._match([h.tokens.decimal_float_literal,h.tokens.hex_float_literal])){let n=this._previous().toString(),s=n.endsWith("h");s&&(n=n.substring(0,n.length-1));let o=parseFloat(n);this._validateTypeRange(o,s?R.f16:R.f32);let a=s?R.f16:R.f32;return this._updateNode(new Ce(new y(o,this._exec.getTypeInfo(a)),a))}if(this._match([h.keywords.true,h.keywords.false])){let n=this._previous().toString()===h.keywords.true.rule;return this._updateNode(new Ce(new y(n?1:0,this._exec.getTypeInfo(R.bool)),R.bool))}if(this._check(h.tokens.paren_left))return this._paren_expression();if(this._match(h.keywords.bitcast)){this._consume(h.tokens.less_than,"Expected '<'.");let n=this._type_decl();this._consume(h.tokens.greater_than,"Expected '>'.");let s=this._paren_expression();return this._updateNode(new wo(n,s))}let e=this._type_decl(),r=this._argument_expression_list();return this._updateNode(new At(e,r))}_argument_expression_list(){if(!this._match(h.tokens.paren_left))return null;let e=[];do{if(this._check(h.tokens.paren_right))break;let r=this._short_circuit_or_expression();e.push(r)}while(this._match(h.tokens.comma));return this._consume(h.tokens.paren_right,"Expected ')' for agument list"),e}_optional_paren_expression(){this._match(h.tokens.paren_left);let e=this._short_circuit_or_expression();return this._match(h.tokens.paren_right),e}_paren_expression(){this._consume(h.tokens.paren_left,"Expected '('.");let e=this._short_circuit_or_expression();return this._consume(h.tokens.paren_right,"Expected ')'."),e}_struct_decl(){if(!this._match(h.keywords.struct))return null;let e=this._currentLine,r=this._consume(h.tokens.ident,"Expected name for struct.").toString();this._consume(h.tokens.brace_left,"Expected '{' for struct body.");let n=[];for(;!this._check(h.tokens.brace_right);){let a=this._attribute(),i=this._consume(h.tokens.name,"Expected variable name.").toString();this._consume(h.tokens.colon,"Expected ':' for struct member type.");let u=this._attribute(),l=this._type_decl();l!=null&&(l.attributes=u),this._check(h.tokens.brace_right)?this._match(h.tokens.comma):this._consume(h.tokens.comma,"Expected ',' for struct member."),n.push(this._updateNode(new Io(i,l,a)))}this._consume(h.tokens.brace_right,"Expected '}' after struct body.");let s=this._currentLine,o=this._updateNode(new Mt(r,n,e,s),e);return this._context.structs.set(r,o),o}_global_variable_decl(){let e=this._variable_decl();if(!e)return null;if(this._match(h.tokens.equal)){let r=this._const_expression();e.value=r}if(e.type!==null&&e.value instanceof Ce){if(e.value.type.name!=="x32"&&e.type.getTypeName()!==e.value.type.getTypeName())throw this._error(this._peek(),`Invalid cast from ${e.value.type.name} to ${e.type.name}. Line:${this._currentLine}`);e.value.isScalar&&this._validateTypeRange(e.value.scalarValue,e.type),e.value.type=e.type}else e.type===null&&e.value instanceof Ce&&(e.type=e.value.type.name==="x32"?R.i32:e.value.type,e.value.isScalar&&this._validateTypeRange(e.value.scalarValue,e.type));return e}_override_variable_decl(){let e=this._override_decl();return e&&this._match(h.tokens.equal)&&(e.value=this._const_expression()),e}_global_const_decl(){var e;if(!this._match(h.keywords.const))return null;let r=this._consume(h.tokens.name,"Expected variable name"),n=this._currentLine,s=null;if(this._match(h.tokens.colon)){let u=this._attribute();s=this._type_decl(),s!=null&&(s.attributes=u)}let o=null;this._consume(h.tokens.equal,"const declarations require an assignment");let a=this._short_circuit_or_expression();try{let u=[R.f32],l=a.constEvaluate(this._exec,u);l instanceof y&&this._validateTypeRange(l.value,u[0]),u[0]instanceof _&&u[0].format===null&&l.typeInfo instanceof ir&&l.typeInfo.format!==null&&(l.typeInfo.format.name==="f16"?u[0].format=R.f16:l.typeInfo.format.name==="f32"?u[0].format=R.f32:l.typeInfo.format.name==="i32"?u[0].format=R.i32:l.typeInfo.format.name==="u32"?u[0].format=R.u32:l.typeInfo.format.name==="bool"?u[0].format=R.bool:console.error(`TODO: impelement template format type ${l.typeInfo.format.name}`)),o=this._updateNode(new Ce(l,u[0])),this._exec.context.setVariable(r.toString(),l)}catch{o=a}if(s!==null&&o instanceof Ce){if(o.type.name!=="x32"&&s.getTypeName()!==o.type.getTypeName())throw this._error(this._peek(),`Invalid cast from ${o.type.name} to ${s.name}. Line:${this._currentLine}`);o.type=s,o.isScalar&&this._validateTypeRange(o.scalarValue,o.type)}else s===null&&o instanceof Ce&&(s=(e=o?.type)!==null&&e!==void 0?e:R.f32,s===R.x32&&(s=R.i32));let i=this._updateNode(new yn(r.toString(),s,"","",o),n);return this._context.constants.set(i.name,i),i}_global_let_decl(){if(!this._match(h.keywords.let))return null;let e=this._currentLine,r=this._consume(h.tokens.name,"Expected variable name"),n=null;if(this._match(h.tokens.colon)){let o=this._attribute();n=this._type_decl(),n!=null&&(n.attributes=o)}let s=null;if(this._match(h.tokens.equal)&&(s=this._const_expression()),n!==null&&s instanceof Ce){if(s.type.name!=="x32"&&n.getTypeName()!==s.type.getTypeName())throw this._error(this._peek(),`Invalid cast from ${s.type.name} to ${n.name}. Line:${this._currentLine}`);s.type=n}else n===null&&s instanceof Ce&&(n=s.type.name==="x32"?R.i32:s.type);return s instanceof Ce&&s.isScalar&&this._validateTypeRange(s.scalarValue,n),this._updateNode(new Pr(r.toString(),n,"","",s),e)}_const_expression(){return this._short_circuit_or_expression()}_variable_decl(){if(!this._match(h.keywords.var))return null;let e=this._currentLine,r="",n="";this._match(h.tokens.less_than)&&(r=this._consume(h.storage_class,"Expected storage_class.").toString(),this._match(h.tokens.comma)&&(n=this._consume(h.access_mode,"Expected access_mode.").toString()),this._consume(h.tokens.greater_than,"Expected '>'."));let s=this._consume(h.tokens.name,"Expected variable name"),o=null;if(this._match(h.tokens.colon)){let a=this._attribute();o=this._type_decl(),o!=null&&(o.attributes=a)}return this._updateNode(new Nt(s.toString(),o,r,n,null),e)}_override_decl(){if(!this._match(h.keywords.override))return null;let e=this._consume(h.tokens.name,"Expected variable name"),r=null;if(this._match(h.tokens.colon)){let n=this._attribute();r=this._type_decl(),r!=null&&(r.attributes=n)}return this._updateNode(new Qn(e.toString(),r,null))}_diagnostic(){this._consume(h.tokens.paren_left,"Expected '('");let e=this._consume(h.tokens.ident,"Expected severity control name.");this._consume(h.tokens.comma,"Expected ','");let r=this._consume(h.tokens.ident,"Expected diagnostic rule name.").toString();return this._match(h.tokens.period)&&(r+=`.${this._consume(h.tokens.ident,"Expected diagnostic message.").toString()}`),this._consume(h.tokens.paren_right,"Expected ')'"),this._updateNode(new xo(e.toString(),r))}_enable_directive(){let e=this._consume(h.tokens.ident,"identity expected.");return this._updateNode(new Wi(e.toString()))}_requires_directive(){let e=[this._consume(h.tokens.ident,"identity expected.").toString()];for(;this._match(h.tokens.comma);){let r=this._consume(h.tokens.ident,"identity expected.");e.push(r.toString())}return this._updateNode(new $i(e))}_type_alias(){let e=this._consume(h.tokens.ident,"identity expected.");this._consume(h.tokens.equal,"Expected '=' for type alias.");let r=this._type_decl();if(r===null)throw this._error(this._peek(),"Expected Type for Alias.");this._context.aliases.has(r.name)&&(r=this._context.aliases.get(r.name).type);let n=this._updateNode(new ts(e.toString(),r));return this._context.aliases.set(n.name,n),n}_type_decl(){if(this._check([h.tokens.ident,...h.texel_format,h.keywords.bool,h.keywords.f32,h.keywords.i32,h.keywords.u32])){let n=this._advance().toString();if(this._context.structs.has(n))return this._context.structs.get(n);if(this._context.aliases.has(n))return this._context.aliases.get(n).type;if(!this._getType(n)){let s=this._updateNode(new bo(n));return this._forwardTypeCount++,s}return this._updateNode(new R(n))}let e=this._texture_sampler_types();if(e)return e;if(this._check(h.template_types)){let n=this._advance().toString(),s=null,o=null;return this._match(h.tokens.less_than)&&(s=this._type_decl(),o=null,this._match(h.tokens.comma)&&(o=this._consume(h.access_mode,"Expected access_mode for pointer").toString()),this._consume(h.tokens.greater_than,"Expected '>' for type.")),this._updateNode(new _(n,s,o))}if(this._match(h.keywords.ptr)){let n=this._previous().toString();this._consume(h.tokens.less_than,"Expected '<' for pointer.");let s=this._consume(h.storage_class,"Expected storage_class for pointer");this._consume(h.tokens.comma,"Expected ',' for pointer.");let o=this._type_decl(),a=null;return this._match(h.tokens.comma)&&(a=this._consume(h.access_mode,"Expected access_mode for pointer").toString()),this._consume(h.tokens.greater_than,"Expected '>' for pointer."),this._updateNode(new _n(n,s.toString(),o,a))}let r=this._attribute();if(this._match(h.keywords.array)){let n=null,s=-1,o=this._previous(),a=null;if(this._match(h.tokens.less_than)){n=this._type_decl(),this._context.aliases.has(n.name)&&(n=this._context.aliases.get(n.name).type);let u="";if(this._match(h.tokens.comma)){a=this._shift_expression();try{u=a.constEvaluate(this._exec).toString(),a=null}catch{u="1"}}this._consume(h.tokens.greater_than,"Expected '>' for array."),s=u?parseInt(u):0}let i=this._updateNode(new Or(o.toString(),r,n,s));return a&&this._deferArrayCountEval.push({arrayType:i,countNode:a}),i}return null}_texture_sampler_types(){if(this._match(h.sampler_type))return this._updateNode(new Lr(this._previous().toString(),null,null));if(this._match(h.depth_texture_type))return this._updateNode(new Lr(this._previous().toString(),null,null));if(this._match(h.sampled_texture_type)||this._match(h.multisampled_texture_type)){let e=this._previous();this._consume(h.tokens.less_than,"Expected '<' for sampler type.");let r=this._type_decl();return this._consume(h.tokens.greater_than,"Expected '>' for sampler type."),this._updateNode(new Lr(e.toString(),r,null))}if(this._match(h.storage_texture_type)){let e=this._previous();this._consume(h.tokens.less_than,"Expected '<' for sampler type.");let r=this._consume(h.texel_format,"Invalid texel format.").toString();this._consume(h.tokens.comma,"Expected ',' after texel format.");let n=this._consume(h.access_mode,"Expected access mode for storage texture type.").toString();return this._consume(h.tokens.greater_than,"Expected '>' for sampler type."),this._updateNode(new Lr(e.toString(),r,n))}return null}_attribute(){let e=[];for(;this._match(h.tokens.attr);){let r=this._consume(h.attribute_name,"Expected attribute name"),n=this._updateNode(new So(r.toString(),null));if(this._match(h.tokens.paren_left)){if(n.value=this._consume(h.literal_or_ident,"Expected attribute value").toString(),this._check(h.tokens.comma)){this._advance();do{let s=this._consume(h.literal_or_ident,"Expected attribute value").toString();n.value instanceof Array||(n.value=[n.value]),n.value.push(s)}while(this._match(h.tokens.comma))}this._consume(h.tokens.paren_right,"Expected ')'")}e.push(n)}return e.length==0?null:e}},tu=class extends Dr{constructor(e){super(),e&&this.update(e)}update(e){let r=new eu().parse(e);this.updateAST(r)}};function mn(t,e){return Object.fromEntries(e.map(r=>{let n=Ym(t,r,0);return[r.name,{typeDefinition:n,group:r.group,binding:r.binding,size:n.size}]}))}function rh(t,e,r){return{fields:Object.fromEntries(e.members.map(s=>[s.name,{offset:s.offset,type:ou(t,s.type,0)}])),size:e.size,offset:r}}function zm(t){if(t.name.includes("depth"))return"depth";switch(t.format?.name){case"f32":return"float";case"i32":return"sint";case"u32":return"uint";default:throw new Error("unknown texture sample type")}}function Kf(t){return t.name.includes("2d_array")?"2d-array":t.name.includes("cube_array")?"cube-array":t.name.includes("3d")?"3d":t.name.includes("1d")?"1d":t.name.includes("cube")?"cube":"2d"}function Hm(t){switch(t.access){case"read":return"read-only";case"write":return"write-only";case"read_write":return"read-write";default:throw new Error("unknonw storage texture access")}}function Xm(t){return t.name.endsWith("_comparison")?"comparison":"filtering"}function jm(t,e){let{binding:r,access:n,type:s}=t;switch(t.resourceType){case Ne.Uniform:return{binding:r,visibility:e,buffer:{...t.size&&{minBindingSize:t.size}}};case Ne.Storage:return{binding:r,visibility:e,buffer:{type:n===""||n==="read"?"read-only-storage":"storage",...t.size&&{minBindingSize:t.size}}};case Ne.Texture:{if(s.name==="texture_external")return{binding:r,visibility:e,externalTexture:{}};let o=s.name.includes("multisampled");return{binding:r,visibility:e,texture:{sampleType:zm(s),viewDimension:Kf(s),multisampled:o}}}case Ne.Sampler:return{binding:r,visibility:e,sampler:{type:Xm(s)}};case Ne.StorageTexture:return{binding:r,visibility:e,storageTexture:{access:Hm(s),format:s.format.name,viewDimension:Kf(s)}};default:throw new Error("unknown resource type")}}function Fi(t,e){let r={};for(let n of t)r[n.name]={stage:e,resources:n.resources.map(s=>{let{name:o,group:a}=s;return{name:o,group:a,entry:jm(s,e)}})};return r}function St(t){let e=new tu(t),r=Object.fromEntries(e.structs.map(c=>[c.name,rh(e,c,0)])),n=mn(e,e.uniforms),s=mn(e,e.storage.filter(c=>c.resourceType===Ne.Storage)),o=mn(e,e.storage.filter(c=>c.resourceType===Ne.StorageTexture)),a=mn(e,e.textures.filter(c=>c.type.name!=="texture_external")),i=mn(e,e.textures.filter(c=>c.type.name==="texture_external")),u=mn(e,e.samplers),l={...Fi(e.entry.vertex,GPUShaderStage.VERTEX),...Fi(e.entry.fragment,GPUShaderStage.FRAGMENT),...Fi(e.entry.compute,GPUShaderStage.COMPUTE)};return{externalTextures:i,samplers:u,structs:r,storages:s,storageTextures:o,textures:a,uniforms:n,entryPoints:l}}function Bi(t,e=""){if(!t)throw new Error(e)}function Ym(t,e,r){switch(e.resourceType){case Ne.Uniform:case Ne.Storage:case Ne.StorageTexture:return ou(t,e.type,r);default:return{size:0,type:e.type.name}}}function ou(t,e,r){if(e.isArray){Bi(!e.isStruct,"struct array is invalid"),Bi(!e.isStruct,"template array is invalid");let n=e;return{size:n.size,elementType:ou(t,n.format,r),numElements:n.count}}else{if(e.isStruct)return Bi(!e.isTemplate,"template struct is invalid"),rh(t,e,r);{let n=e,s=e.isTemplate?`${n.name}<${n.format.name}>`:e.name;return{size:e.size,type:s}}}}var qm=new Map([[Int8Array,{formats:["sint8","snorm8"],defaultForType:1}],[Uint8Array,{formats:["uint8","unorm8"],defaultForType:1}],[Int16Array,{formats:["sint16","snorm16"],defaultForType:1}],[Uint16Array,{formats:["uint16","unorm16"],defaultForType:1}],[Int32Array,{formats:["sint32","snorm32"],defaultForType:0}],[Uint32Array,{formats:["uint32","unorm32"],defaultForType:0}],[Float16Array,{formats:["float16","float16"],defaultForType:0}],[Float32Array,{formats:["float32","float32"],defaultForType:0}]]),i0=new Map([...qm.entries()].map(([t,{formats:[e,r]}])=>[[e,t],[r,t]]).flat());var u0={"8snorm":Int8Array,"8unorm":Uint8Array,"8sint":Int8Array,"8uint":Uint8Array,"16snorm":Int16Array,"16unorm":Uint16Array,"16sint":Int16Array,"16uint":Uint16Array,"32snorm":Int32Array,"32unorm":Uint32Array,"32sint":Int32Array,"32uint":Uint32Array,"16float":Float16Array,"32float":Float32Array};var au=t=>t.features.has("texture-formats-tier1"),iu=t=>t.features.has("shader-f16"),nh=async t=>{let e=[];return au(t)&&e.push("texture-formats-tier1"),iu(t)&&e.push("shader-f16"),await t?.requestDevice({requiredFeatures:e})};function sh(t,e,r=GPUTextureUsage.STORAGE_BINDING|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT){try{return t.createTexture({size:[4,4,1],format:e,usage:r}).destroy(),!0}catch{return!1}}var Km=/const WORKGROUP_SIZE_X(\s*)=(\s*)\d+u*;/,Zm=/const WORKGROUP_SIZE_Y(\s*)=(\s*)\d+u*;/,Nr=(t,{workgroupSizeX:e,workgroupSizeY:r})=>t.replace(Km,`const WORKGROUP_SIZE_X$1=$2${e}u;`).replace(Zm,`const WORKGROUP_SIZE_Y$1=$2${r}u;`),Jm=/texture_storage_2d<\w+,(\s*)write>/,Zt=(t,e)=>t.replace(Jm,`texture_storage_2d<${e},$1write>`),Qm=/alias float(\s*)=(\s*)f32;/,ss=t=>t.replace(Qm,"enable f16;alias float$1=$2f16;");var oh="struct Params{outWidth:u32,outHeight:u32,}@group(0)@binding(0)var inSampler:sampler;@group(0)@binding(1)var inTexture:texture_2d<f32>;@group(0)@binding(2)var outTexture:texture_storage_2d<rgba8unorm,write>;@group(0)@binding(3)var<uniform> params:Params;const WORKGROUP_SIZE_X=16u;const WORKGROUP_SIZE_Y=16u;@compute @workgroup_size(WORKGROUP_SIZE_X,WORKGROUP_SIZE_Y,1)fn main(@builtin(global_invocation_id)gid:vec3u){if gid.x>=params.outWidth||gid.y>=params.outHeight{return;}let uv=(vec2f(gid.xy)+0.5)/vec2f(f32(params.outWidth),f32(params.outHeight));let color=textureSampleLevel(inTexture,inSampler,uv,0.0);textureStore(outTexture,gid.xy,color);}";var Ar=(t,e,r,n,s,o)=>{let a=Zt(oh,s),i=16,u=16,l=Math.ceil(r/i),c=Math.ceil(n/u);a=Nr(a,{workgroupSizeX:i,workgroupSizeY:u});let f=St(a),m=gt(f.uniforms.params),p=t.createBuffer({size:m.arrayBuffer.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST});m.set({outWidth:r,outHeight:n}),t.queue.writeBuffer(p,0,m.arrayBuffer);let w=t.createShaderModule({label:`Resize shader module to ${r}x${n} with ${s} & ${o}`,code:a}),A=t.createComputePipeline({layout:"auto",label:`Resize shader pipeline to ${r}x${n} with ${s} & ${o}`,compute:{module:w}}),v=t.createTexture({label:`Resize out texture to ${r}x${n} with ${s} & ${o}`,format:s,size:[r,n],usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.STORAGE_BINDING}),C=v.createView(),k=t.createSampler({magFilter:o,minFilter:o,addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"}),T=null,S=null;return{render(F,B){return I(!e(),O.ContextLost),B!==S&&(T=t.createBindGroup({layout:A.getBindGroupLayout(0),entries:[{binding:0,resource:k},{binding:1,resource:B.createView()},{binding:2,resource:C},{binding:3,resource:{buffer:p}}]}),S=B),F.setPipeline(A),F.setBindGroup(0,T),F.dispatchWorkgroups(l,c),v},release(){p.destroy(),v.destroy(),T=null,S=null}}};var Lo=(t,e,r,n,s,o)=>{let a=new Map,i=Ar(t,e,n,s,r,o),u=(l,c)=>{let f=`${l}x${c}`,m=a.get(f);return m||(m=t.createTexture({label:"Video Frame to Texture",format:"rgba8unorm",size:[l,c],usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.COPY_SRC|GPUTextureUsage.RENDER_ATTACHMENT}),a.set(f,m)),m};return{render:(l,c)=>{I(!e(),O.ContextLost);let f=l instanceof VideoFrame?l.displayWidth:l.width,m=l instanceof VideoFrame?l.displayHeight:l.height,p=u(f,m);return t.queue.copyExternalImageToTexture({source:l,flipY:!1},{texture:p},{width:f,height:m}),i.render(c,p)},release:()=>{for(let l of a.values())l.destroy();a.clear(),i.release()}}};var uu="alias float=f32;struct Thresholds{background:float,foreground:float,}@group(0)@binding(0)var linearSampler:sampler;@group(0)@binding(1)var nearestSampler:sampler;@group(0)@binding(2)var<uniform> thresholds:Thresholds;@group(1)@binding(0)var bgTexture:texture_2d<f32>;@group(1)@binding(1)var personTexture:texture_2d<f32>;@group(1)@binding(2)var maskTexture:texture_2d<f32>;struct VertexOutput{@builtin(position)Position:vec4f,@location(0)fragUV:vec2f,}@vertex fn vert_main(@builtin(vertex_index)VertexIndex:u32)->VertexOutput{const pos=array(vec2(1.0,1.0),vec2(1.0,-1.0),vec2(-1.0,-1.0),vec2(1.0,1.0),vec2(-1.0,-1.0),vec2(-1.0,1.0),);const uv=array(vec2(1.0,0.0),vec2(1.0,1.0),vec2(0.0,1.0),vec2(1.0,0.0),vec2(0.0,1.0),vec2(0.0,0.0),);var output:VertexOutput;output.Position=vec4(pos[VertexIndex],0.0,1.0);output.fragUV=uv[VertexIndex];return output;}@fragment fn frag_main(@location(0)fragUV:vec2f)->@location(0)vec4f{let bg=textureSample(bgTexture,linearSampler,fragUV);let person=textureSample(personTexture,linearSampler,fragUV);let mask=textureSample(maskTexture,nearestSampler,fragUV);let alpha=smoothstep(thresholds.background,thresholds.foreground,mask.r);return mix(bg,person,alpha);}";var ah=(t,e,r,n)=>{let s=t.getContext("webgpu");if(!s)throw Error("WebGPU not supported on the canvas.");s.configure({device:e,format:r,alphaMode:"premultiplied"});let o=St(uu),a=gt(o.uniforms.thresholds),i=e.createShaderModule({label:"blender shader",code:uu}),u=e.createRenderPipeline({label:"blender pipeline",layout:"auto",vertex:{module:i},fragment:{module:i,targets:[{format:r}]}}),l=e.createSampler({addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge",magFilter:"linear",minFilter:"linear"}),c=e.createSampler({addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge",magFilter:"nearest",minFilter:"nearest"}),f=e.createBuffer({size:a.arrayBuffer.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),m=B=>{a.set({background:B.backgroundThreshold,foreground:B.foregroundThreshold}),e.queue.writeBuffer(f,0,a.arrayBuffer)},p={loadOp:"load",storeOp:"store"},w={label:"blender renderPass",colorAttachments:[p]},A=e.createBindGroup({layout:u.getBindGroupLayout(0),entries:[{binding:0,resource:l},{binding:1,resource:c},{binding:2,resource:{buffer:f}}]}),v=null,C=null,k=null,T=null,S=-1,F=-1;return{render:(B,{foreground:z,background:N,mask:U},V)=>{I(!n(),O.ContextLost),p.view=s.getCurrentTexture().createView(),k===N&&T===z&&C===U||(v=e.createBindGroup({layout:u.getBindGroupLayout(1),entries:[{binding:0,resource:N.createView()},{binding:1,resource:z.createView()},{binding:2,resource:U.createView()}]}),k=N,T=z,C=U),S===V.backgroundThreshold&&F===V.foregroundThreshold||(m(V),S=V.backgroundThreshold,F=V.foregroundThreshold);let P=B.beginRenderPass(w);P.setPipeline(u),P.setBindGroup(0,A),P.setBindGroup(1,v),P.draw(6),P.end()},release:()=>{f.destroy(),S=-1,F=-1}}};var ih="struct VertexOutput{@builtin(position)position:vec4f,@location(0)uv:vec2f,};@vertex fn vs_main(@builtin(vertex_index)vertex_index:u32)->VertexOutput{var out:VertexOutput;let x=f32((vertex_index<<1u)&2u);let y=f32(vertex_index&2u);out.position=vec4f(x*2.0-1.0,1.0-y*2.0,0.0,1.0);out.uv=vec2f(x,y);return out;}@group(0)@binding(0)var u_sampler:sampler;@group(0)@binding(1)var u_frame:texture_2d<f32>;@fragment fn downsample_fs(in:VertexOutput)->@location(0)vec4f{let src_size=vec2f(textureDimensions(u_frame));let halfpixel=0.5/src_size;let uv=in.uv;var sum=textureSample(u_frame,u_sampler,uv)*4.0;sum+=textureSample(u_frame,u_sampler,uv+halfpixel);sum+=textureSample(u_frame,u_sampler,uv-halfpixel);sum+=textureSample(u_frame,u_sampler,uv+vec2f(halfpixel.x,-halfpixel.y));sum+=textureSample(u_frame,u_sampler,uv+vec2f(-halfpixel.x,halfpixel.y));return sum*0.125;}@fragment fn upsample_fs(in:VertexOutput)->@location(0)vec4f{let src_size=vec2f(textureDimensions(u_frame));let halfpixel=0.5/src_size;let uv=in.uv;let double_half=halfpixel*2.0;var sum=textureSample(u_frame,u_sampler,uv+vec2f(-double_half.x,0.0));sum+=textureSample(u_frame,u_sampler,uv+vec2f(double_half.x,0.0));sum+=textureSample(u_frame,u_sampler,uv+vec2f(0.0,double_half.y));sum+=textureSample(u_frame,u_sampler,uv+vec2f(0.0,-double_half.y));sum+=textureSample(u_frame,u_sampler,uv+vec2f(-halfpixel.x,halfpixel.y))*2.0;sum+=textureSample(u_frame,u_sampler,uv+vec2f(halfpixel.x,halfpixel.y))*2.0;sum+=textureSample(u_frame,u_sampler,uv+vec2f(halfpixel.x,-halfpixel.y))*2.0;sum+=textureSample(u_frame,u_sampler,uv+vec2f(-halfpixel.x,-halfpixel.y))*2.0;return sum*0.08333333333;}";var ep=Et(1,9),cu=(t,e,r,n,s)=>{let o=t.createShaderModule({label:"dual blur compute shader",code:ih}),a=t.createRenderPipeline({label:"dual blur downsample compute pipeline",layout:"auto",vertex:{module:o,entryPoint:"vs_main"},fragment:{module:o,targets:[{format:n}],entryPoint:"downsample_fs"}}),i=t.createRenderPipeline({label:"dual blur upsample compute pipeline",layout:"auto",vertex:{module:o,entryPoint:"vs_main"},fragment:{module:o,targets:[{format:n}],entryPoint:"upsample_fs"}}),u=t.createSampler({magFilter:"linear",minFilter:"linear",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"}),l=(F,B)=>t.createTexture({label:"dual filter blur texture",format:n,size:[F,B],usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.RENDER_ATTACHMENT}),c=[],f=-1,m=-1,p=[],w=[],A=[],v=[],C=null,k=null,T=null;function S(F,B,z){let N=ep(F+1);if(c.length!==N||f!==B||m!==z){for(let U of c)U.texture.destroy();c=[],A=[],p=[],v=[],C=null,k=null;for(let U=0;U<N;U++){let V=Math.max(Math.trunc(B/2**U),1),P=Math.max(Math.trunc(z/2**U),1),te=l(V,P);c.push({texture:te,view:te.createView(),width:V,height:P})}for(let U=2;U<c.length;U++){let V=c[U-1],P=c[U];I(V),I(P),A.push(t.createBindGroup({layout:a.getBindGroupLayout(0),entries:[{binding:0,resource:u},{binding:1,resource:V.view}]})),p.push({label:`downsample render pass ${U}`,colorAttachments:[{loadOp:"load",storeOp:"store",view:P.view}]})}for(let U=c.length-2;U>=0;U--){let V=c[U+1],P=c[U];I(V),I(P),v.push(t.createBindGroup({layout:i.getBindGroupLayout(0),entries:[{binding:0,resource:u},{binding:1,resource:V.view}]})),w.push({label:`upsample render pass ${U}`,colorAttachments:[{loadOp:"load",storeOp:"store",view:P.view}]})}f=B,m=z}}return{render:(F,B,z)=>{I(!s(),O.ContextLost),S(z,e,r);let N=c[1];I(N),B!==C&&(k=t.createBindGroup({layout:a.getBindGroupLayout(0),entries:[{binding:0,resource:u},{binding:1,resource:B.createView()}]}),T={label:"downsample render pass 0",colorAttachments:[{loadOp:"load",storeOp:"store",view:N.view}]},C=B),I(T);let U=F.beginRenderPass(T);U.setPipeline(a),U.setBindGroup(0,k),U.draw(3),U.end();for(let P=2;P<c.length;P++){let te=c[P];I(te);let ue=A[P-2],me=p[P-2];I(ue),I(me);let pe=F.beginRenderPass(me);pe.setPipeline(a),pe.setBindGroup(0,ue),pe.draw(3),pe.end()}for(let P=0;P<v.length;P++){let te=c.length-2-P,ue=c[te];I(ue);let me=v[P],pe=w[P];I(me),I(pe);let re=F.beginRenderPass(pe);re.setPipeline(i),re.setBindGroup(0,me),re.draw(3),re.end()}let V=c[0];return I(V),V.texture},release:()=>{for(let F of c)F.texture.destroy();c=[],p=[],w=[],A=[],v=[],C=null,k=null}}};var uh="alias float=f32;alias texture_storage=texture_storage_2d<rgba16float,write>;struct Params{maskCombineRatio:f32,}@group(0)@binding(0)var outputTex:texture_storage;@group(0)@binding(1)var<uniform> params:Params;@group(1)@binding(0)var mask:texture_2d<f32>;@group(1)@binding(1)var prevMask:texture_2d<f32>;const WORKGROUP_SIZE_X=16u;const WORKGROUP_SIZE_Y=16u;fn smoothingMask(prevMask:texture_2d<f32>,mask:texture_2d<f32>,uv:vec2<u32>,ratio:f32)->float{let prevMaskValue=float(textureLoad(prevMask,uv,0u).r);let currMaskValue=float(textureLoad(mask,uv,0u).r);let c1=float(5.68842);let c2=float(-0.748699);let c3=float(-57.8051);let c4=float(291.309);let c5=float(-624.717);let t=currMaskValue-0.5;let x=t*t;let uncertainty=1.0-min(1.0,x*(c1+x*(c2+x*(c3+x*(c4+x*c5)))));return currMaskValue+(prevMaskValue-currMaskValue)*(uncertainty*float(ratio));}@compute @workgroup_size(WORKGROUP_SIZE_X,WORKGROUP_SIZE_Y,1)fn main(@builtin(global_invocation_id)gid:vec3u){let dims=textureDimensions(mask,0);if gid.x>=dims.x||gid.y>=dims.y{return;}let uv=vec2u(gid.xy);let alpha=smoothingMask(prevMask,mask,uv,params.maskCombineRatio);textureStore(outputTex,uv,vec4f(f32(alpha),0.0,0.0,1.0));}";var lu=(t,e,r,n,s,o)=>{let u=Math.ceil(n/16),l=Math.ceil(s/16),c=Nr(uh,{workgroupSizeX:16,workgroupSizeY:16});c=Zt(c,r),o&&(c=ss(c));let f=t.createTexture({label:"Smoothed Mask Texture",format:r,size:[n,s],usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.STORAGE_BINDING|GPUTextureUsage.COPY_SRC}),m=St(c),p=gt(m.uniforms.params),w=t.createBuffer({size:p.arrayBuffer.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),A=z=>{p.set({maskCombineRatio:z.maskCombineRatio}),t.queue.writeBuffer(w,0,p.arrayBuffer)},v=t.createShaderModule({label:"smoothing mask compute",code:c}),C=t.createComputePipeline({label:"smoothing mask pipeline",layout:"auto",compute:{module:v}}),k=t.createBindGroup({layout:C.getBindGroupLayout(0),entries:[{binding:0,resource:f.createView()},{binding:1,resource:{buffer:w}}]}),T=null,S=null,F=null,B=-1;return{render:(z,N,U,V)=>{I(!e(),O.ContextLost),N===T&&U===S||(F=t.createBindGroup({layout:C.getBindGroupLayout(1),entries:[{binding:0,resource:N.createView()},{binding:1,resource:U.createView()}]}),T=N,S=U),B!==V.maskCombineRatio&&(A(V),B=V.maskCombineRatio);let P=z.beginComputePass({label:"smoothing mask compute pass"});return P.setPipeline(C),P.setBindGroup(0,k),P.setBindGroup(1,F),P.dispatchWorkgroups(u,l),P.end(),f},release:()=>{f.destroy(),w.destroy(),T=null,S=null,F=null,B=-1}}};var ch=(t,e)=>{let r=new Map,n=(s,o,a,i)=>{let u=`${s}x${o}x${a}-${i}`,l=r.get(u);return l||(l=t.createTexture({size:{width:s,height:o,depthOrArrayLayers:a},format:i,usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST}),r.set(u,l)),l};return{render:(s,o)=>{I(!e(),O.ContextLost);let a=n(o.width,o.height,o.depthOrArrayLayers,o.format);return s.copyTextureToTexture({texture:o},{texture:a},{width:a.width,height:a.height,depthOrArrayLayers:a.depthOrArrayLayers}),a},release:()=>{for(let s of r.values())s.destroy();r.clear()}}};var fu="struct Params{sigmaSpace:f32,sigmaRangeLo:f32,sigmaRangeHi:f32,backgroundThreshold:f32,foregroundThreshold:f32,texelWidth:f32,texelHeight:f32,width:u32,height:u32,}@group(0)@binding(0)var inputTex:texture_2d<f32>;@group(0)@binding(1)var guideTex:texture_2d<f32>;@group(1)@binding(0)var<uniform> params:Params;@group(1)@binding(1)var outputTex:texture_storage_2d<rgba16float,write>;const MAX_RADIUS:u32=24u;const FOREGROUND_BIAS:f32=1.3;const EDGE_THRESHOLD:f32=0.08;const SPARSITY_FACTOR:f32=0.66;const TILE_W:u32=32u;const TILE_ROWS:u32=4u;var<workgroup> tile_mask:array<array<f32,80>,4>;var<workgroup> tile_guide_lum:array<array<f32,80>,4>;fn gaussian_sqr(dist2:f32,sigma2:f32)->f32{return exp(-0.5*dist2/max(sigma2,1e-6));}fn luminance(c:vec3f)->f32{return dot(c,vec3f(0.299,0.587,0.114));}@compute @workgroup_size(TILE_W,TILE_ROWS,1)fn main(@builtin(global_invocation_id)gid:vec3u,@builtin(local_invocation_id)lid:vec3u,@builtin(workgroup_id)wg_id:vec3u,){let x=i32(gid.x);let y=i32(gid.y);let lx=i32(lid.x);let ly=i32(lid.y);let radius=min(i32(floor(params.sigmaSpace+0.5)),i32(MAX_RADIUS));let w=i32(params.width);let h=i32(params.height);let tile_base_x=i32(wg_id.x)*i32(TILE_W);let shared_center=lx+radius;let gx_center=clamp(tile_base_x+lx,0,w-1);let gy=clamp(y,0,h-1);tile_mask[ly][shared_center]=textureLoad(inputTex,vec2i(gx_center,gy),0).r;tile_guide_lum[ly][shared_center]=luminance(textureLoad(guideTex,vec2i(gx_center,gy),0).rgb);if lx<radius{let halo_x=clamp(tile_base_x+lx-radius,0,w-1);tile_mask[ly][lx]=textureLoad(inputTex,vec2i(halo_x,gy),0).r;tile_guide_lum[ly][lx]=luminance(textureLoad(guideTex,vec2i(halo_x,gy),0).rgb);}if lx>=i32(TILE_W)-radius{let shared_right=shared_center+radius;let halo_x=clamp(tile_base_x+lx+radius,0,w-1);tile_mask[ly][shared_right]=textureLoad(inputTex,vec2i(halo_x,gy),0).r;tile_guide_lum[ly][shared_right]=luminance(textureLoad(guideTex,vec2i(halo_x,gy),0).rgb);}workgroupBarrier();if x>=w||y>=h{return;}let center_mask=tile_mask[ly][shared_center];let center_lum=tile_guide_lum[ly][shared_center];let t=smoothstep(params.backgroundThreshold,params.foregroundThreshold,center_mask);let sigma_color=mix(params.sigmaRangeLo,params.sigmaRangeHi,t);let sigma_texel=params.texelWidth*params.sigmaSpace;let sigma_texel2=sigma_texel*sigma_texel;let sigma_color2=sigma_color*sigma_color;let sparsity=max(1.0,sqrt(params.sigmaSpace)*SPARSITY_FACTOR);let step_i=max(1,i32(floor(sparsity+0.5)));let offset_i=select(0,step_i/2,step_i>1);let fg_w=mix(1.0,FOREGROUND_BIAS,center_mask);var acc:f32=0.0;var total_weight:f32=0.0;for(var offset=-radius;offset<=radius;offset=offset+1){let sparsitySkip=((offset+offset_i)% step_i)!=0;if sparsitySkip{continue;}let idx=shared_center+offset;let neighbor_mask=tile_mask[ly][idx];let neighbor_lum=tile_guide_lum[ly][idx];let dx=f32(offset)*params.texelWidth;let space_weight=gaussian_sqr(dx*dx,sigma_texel2);let dL=abs(neighbor_lum-center_lum);if dL>EDGE_THRESHOLD{continue;}let color_weight=gaussian_sqr(dL*dL,sigma_color2);let w_sample=space_weight*color_weight*fg_w;total_weight=total_weight+w_sample;acc=acc+w_sample*neighbor_mask;}let result=acc/max(total_weight,1e-6);textureStore(outputTex,gid.xy,vec4f(result,0.0,0.0,1.0));}";var lh="struct Params{sigmaSpace:f32,sigmaRangeLo:f32,sigmaRangeHi:f32,backgroundThreshold:f32,foregroundThreshold:f32,texelWidth:f32,texelHeight:f32,width:u32,height:u32,}@group(0)@binding(0)var inputTex:texture_2d<f32>;@group(0)@binding(1)var guideTex:texture_2d<f32>;@group(1)@binding(0)var<uniform> params:Params;@group(1)@binding(1)var outputTex:texture_storage_2d<rgba16float,write>;const MAX_RADIUS:u32=24u;const FOREGROUND_BIAS:f32=1.3;const EDGE_THRESHOLD:f32=0.08;const SPARSITY_FACTOR:f32=0.66;const TILE_COLS:u32=4u;const TILE_H:u32=32u;var<workgroup> tile_mask:array<array<f32,80>,4>;var<workgroup> tile_guide_lum:array<array<f32,80>,4>;fn gaussian_sqr(dist2:f32,sigma2:f32)->f32{return exp(-0.5*dist2/max(sigma2,1e-6));}fn luminance(c:vec3f)->f32{return dot(c,vec3f(0.299,0.587,0.114));}@compute @workgroup_size(TILE_COLS,TILE_H,1)fn main(@builtin(global_invocation_id)gid:vec3u,@builtin(local_invocation_id)lid:vec3u,@builtin(workgroup_id)wg_id:vec3u,){let x=i32(gid.x);let y=i32(gid.y);let lx=i32(lid.x);let ly=i32(lid.y);let radius=min(i32(floor(params.sigmaSpace+0.5)),i32(MAX_RADIUS));let w=i32(params.width);let h=i32(params.height);let tile_base_y=i32(wg_id.y)*i32(TILE_H);let shared_center=ly+radius;let gx=clamp(x,0,w-1);let gy_center=clamp(tile_base_y+ly,0,h-1);tile_mask[lx][shared_center]=textureLoad(inputTex,vec2i(gx,gy_center),0).r;tile_guide_lum[lx][shared_center]=luminance(textureLoad(guideTex,vec2i(gx,gy_center),0).rgb);if ly<radius{let halo_y=clamp(tile_base_y+ly-radius,0,h-1);tile_mask[lx][ly]=textureLoad(inputTex,vec2i(gx,halo_y),0).r;tile_guide_lum[lx][ly]=luminance(textureLoad(guideTex,vec2i(gx,halo_y),0).rgb);}if ly>=i32(TILE_H)-radius{let shared_bottom=shared_center+radius;let halo_y=clamp(tile_base_y+ly+radius,0,h-1);tile_mask[lx][shared_bottom]=textureLoad(inputTex,vec2i(gx,halo_y),0).r;tile_guide_lum[lx][shared_bottom]=luminance(textureLoad(guideTex,vec2i(gx,halo_y),0).rgb);}workgroupBarrier();if x>=w||y>=h{return;}let center_mask=tile_mask[lx][shared_center];let center_lum=tile_guide_lum[lx][shared_center];let t=smoothstep(params.backgroundThreshold,params.foregroundThreshold,center_mask);let sigma_color=mix(params.sigmaRangeLo,params.sigmaRangeHi,t);let sigma_texel=params.texelHeight*params.sigmaSpace;let sigma_texel2=sigma_texel*sigma_texel;let sigma_color2=sigma_color*sigma_color;let sparsity=max(1.0,sqrt(params.sigmaSpace)*SPARSITY_FACTOR);let step_i=max(1,i32(floor(sparsity+0.5)));let offset_i=select(0,step_i/2,step_i>1);let fg_w=mix(1.0,FOREGROUND_BIAS,center_mask);var acc:f32=0.0;var total_weight:f32=0.0;for(var offset=-radius;offset<=radius;offset=offset+1){let sparsitySkip=((offset+offset_i)% step_i)!=0;if sparsitySkip{continue;}let idx=shared_center+offset;let neighbor_mask=tile_mask[lx][idx];let neighbor_lum=tile_guide_lum[lx][idx];let dy=f32(offset)*params.texelHeight;let space_weight=gaussian_sqr(dy*dy,sigma_texel2);let dL=abs(neighbor_lum-center_lum);if dL>EDGE_THRESHOLD{continue;}let color_weight=gaussian_sqr(dL*dL,sigma_color2);let w_sample=space_weight*color_weight*fg_w;total_weight=total_weight+w_sample;acc=acc+w_sample*neighbor_mask;}let result=acc/max(total_weight,1e-6);textureStore(outputTex,gid.xy,vec4f(result,0.0,0.0,1.0));}";var hu=(t,e,r,n,s,o)=>{let c=e.createTexture({label:"Joint Bilateral Filtered temporary mask texture",format:o,size:[n,s],usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.STORAGE_BINDING}),f=e.createTexture({label:"Joint Bilateral Filtered Mask Texture",format:o,size:[n,s],usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.STORAGE_BINDING}),m=St(fu),p=gt(m.uniforms.params),w=e.createBuffer({size:p.arrayBuffer.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),A=n/t.width,v=1/n,C=1/s;p.set({width:n,height:s,texelWidth:v,texelHeight:C});let k=$e=>{p.set({...$e,sigmaSpace:$e.sigmaSpace*A}),e.queue.writeBuffer(w,0,p.arrayBuffer)},T=Zt(fu,o),S=Zt(lh,o),F=e.createShaderModule({label:"joint bilateral filter horizontal compute",code:T}),B=e.createShaderModule({label:"joint bilateral filter vertical compute",code:S}),z=e.createComputePipeline({label:"joint bilateral filter horizontal pipeline",layout:"auto",compute:{module:F}}),N=e.createComputePipeline({label:"joint bilateral filter vertical pipeline",layout:"auto",compute:{module:B}}),U=e.createBindGroup({layout:z.getBindGroupLayout(1),entries:[{binding:0,resource:{buffer:w}},{binding:1,resource:c.createView()}]}),V=e.createBindGroup({layout:N.getBindGroupLayout(1),entries:[{binding:0,resource:{buffer:w}},{binding:1,resource:f.createView()}]}),P=($e,J,Ve,Fe,as,Hh,Xh)=>{let An=J.beginComputePass({label:$e});An.setPipeline(Ve),An.setBindGroup(0,Fe),An.setBindGroup(1,as),An.dispatchWorkgroups(Hh,Xh),An.end()},te=Math.ceil(n/32),ue=Math.ceil(s/4),me=Math.ceil(n/4),pe=Math.ceil(s/32),re=null,tt=null,We=null,Vt=null,Ge={sigmaSpace:-1,sigmaRangeLo:-1,sigmaRangeHi:-1,backgroundThreshold:-1,foregroundThreshold:-1};return{render:($e,J,Ve,Fe)=>(I(!r(),O.ContextLost),Ge.sigmaSpace===Fe.sigmaSpace&&Ge.sigmaRangeLo===Fe.sigmaRangeLo&&Ge.sigmaRangeHi===Fe.sigmaRangeHi&&Ge.backgroundThreshold===Fe.backgroundThreshold&&Ge.foregroundThreshold===Fe.foregroundThreshold||(k(Fe),Ge.sigmaSpace=Fe.sigmaSpace,Ge.sigmaRangeLo=Fe.sigmaRangeLo,Ge.sigmaRangeHi=Fe.sigmaRangeHi,Ge.backgroundThreshold=Fe.backgroundThreshold,Ge.foregroundThreshold=Fe.foregroundThreshold),(re!==J||tt!==Ve)&&(We=e.createBindGroup({layout:z.getBindGroupLayout(0),entries:[{binding:0,resource:J.createView()},{binding:1,resource:Ve.createView()}]}),re=J),P("Joint Bilateral Filter Horizontal pass",$e,z,We,U,te,ue),tt!==Ve&&(Vt=e.createBindGroup({layout:N.getBindGroupLayout(0),entries:[{binding:0,resource:c.createView()},{binding:1,resource:Ve.createView()}]}),tt=Ve),P("Joint Bilateral Filter Vertical pass",$e,N,Vt,V,me,pe),f),release:()=>{c.destroy(),f.destroy(),w.destroy(),re=null,tt=null,We=null,Vt=null}}};var fh="alias float=f32;struct TentParams{radius:u32,width:u32,height:u32,}@group(0)@binding(0)var inputTex:texture_2d<f32>;@group(0)@binding(1)var outputTex:texture_storage_2d<rgba16float,write>;@group(0)@binding(2)var<uniform> params:TentParams;const WORKGROUP_SIZE_X=16u;const WORKGROUP_SIZE_Y=16u;@compute @workgroup_size(WORKGROUP_SIZE_X,WORKGROUP_SIZE_Y,1)fn main(@builtin(global_invocation_id)gid:vec3u){if gid.x>=params.width||gid.y>=params.height{return;}let r=i32(params.radius);if r==0{let m=textureLoad(inputTex,gid.xy,0).r;textureStore(outputTex,gid.xy,vec4f(m,0.0,0.0,1.0));return;}var sumW:float=0.0;var acc:float=0.0;for(var i=-r;i<=r;i=i+1){let w=float(r+1-abs(i));let sx=clamp(i32(gid.x)+i,0,i32(params.width)-1);let m=textureLoad(inputTex,vec2u(u32(sx),gid.y),0).r;acc+=w*float(m);sumW+=w;}let result=acc/max(sumW,1e-6);textureStore(outputTex,gid.xy,vec4f(f32(result),0.0,0.0,1.0));}";var hh="alias float=f32;struct TentParams{radius:u32,width:u32,height:u32,}@group(0)@binding(0)var inputTex:texture_2d<f32>;@group(0)@binding(1)var outputTex:texture_storage_2d<rgba16float,write>;@group(0)@binding(2)var<uniform> params:TentParams;const WORKGROUP_SIZE_X=16u;const WORKGROUP_SIZE_Y=16u;@compute @workgroup_size(WORKGROUP_SIZE_X,WORKGROUP_SIZE_Y,1)fn main(@builtin(global_invocation_id)gid:vec3u){if gid.x>=params.width||gid.y>=params.height{return;}let r=i32(params.radius);if r==0{let m=textureLoad(inputTex,gid.xy,0).r;textureStore(outputTex,gid.xy,vec4f(m,0.0,0.0,1.0));return;}var sumW:float=0.0;var acc:float=0.0;for(var i=-r;i<=r;i=i+1){let w=float(r+1-abs(i));let sy=clamp(i32(gid.y)+i,0,i32(params.height)-1);let m=textureLoad(inputTex,vec2u(gid.x,u32(sy)),0).r;acc+=w*float(m);sumW+=w;}let result=acc/max(sumW,1e-6);textureStore(outputTex,gid.xy,vec4f(f32(result),0.0,0.0,1.0));}";var tp=Et(0,9),dh=(t,e,r,n,s,o)=>{let u=Math.ceil(r/16),l=Math.ceil(n/16),c=Zt(fh,s);c=Nr(c,{workgroupSizeX:16,workgroupSizeY:16});let f=Zt(hh,s);f=Nr(f,{workgroupSizeX:16,workgroupSizeY:16}),o&&(c=ss(c),f=ss(f));let m=St(c),p=gt(m.uniforms.params),w=t.createBuffer({size:p.arrayBuffer.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST});p.set({width:r,height:n});let A=P=>{p.set({radius:P}),t.queue.writeBuffer(w,0,p.arrayBuffer)},v=t.createTexture({label:`Tent Blur intermediate texture ${r}x${n} ${s}`,format:s,size:[r,n],usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.STORAGE_BINDING}),C=v.createView(),k=t.createTexture({label:`Tent Blur output texture ${r}x${n} ${s}`,format:s,size:[r,n],usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.STORAGE_BINDING}),T=t.createShaderModule({label:`Tent Blur horizontal compute ${r}x${n} ${s}`,code:c}),S=t.createShaderModule({label:`Tent Blur vertical compute ${r}x${n} ${s}`,code:f}),F=t.createComputePipeline({label:`Tent Blur horizontal pipeline ${r}x${n} ${s}`,layout:"auto",compute:{module:T}}),B=t.createComputePipeline({label:`Tent Blur vertical pipeline ${r}x${n} ${s}`,layout:"auto",compute:{module:S}}),z=t.createBindGroup({layout:B.getBindGroupLayout(0),entries:[{binding:0,resource:C},{binding:1,resource:k.createView()},{binding:2,resource:{buffer:w}}]}),N=null,U=null,V=-1;return{render(P,te,ue){I(!e(),O.ContextLost);let me=tp(ue.edgeBlurAmount);V!==me&&(A(me),V=me),N!==te&&(U=t.createBindGroup({layout:F.getBindGroupLayout(0),entries:[{binding:0,resource:te.createView()},{binding:1,resource:C},{binding:2,resource:{buffer:w}}]}),N=te);let pe=P.beginComputePass({label:"Tent Blur H pass"});pe.setPipeline(F),pe.setBindGroup(0,U),pe.dispatchWorkgroups(u,l),pe.end();let re=P.beginComputePass({label:"Tent Blur V pass"});return re.setPipeline(B),re.setBindGroup(0,z),re.dispatchWorkgroups(u,l),re.end(),k},release(){v.destroy(),k.destroy(),w.destroy(),N=null,U=null,V=-1}}};var du="alias float=f32;struct StaticParams{background:float,foreground:float,lightWrap:float,lightWrapTightness:float,lightWrapEdgeBand:float,width:u32,height:u32,}struct DynamicParams{time:float,parity:float,}@group(0)@binding(0)var linearSampler:sampler;@group(0)@binding(1)var nearestSampler:sampler;@group(0)@binding(2)var<uniform> sparams:StaticParams;@group(0)@binding(3)var<uniform> dparams:DynamicParams;@group(1)@binding(0)var foregroundTexture:texture_2d<f32>;@group(1)@binding(1)var backgroundTexture:texture_2d<f32>;@group(1)@binding(2)var maskTexture:texture_2d<f32>;@group(1)@binding(3)var blurredBackgroundTexture:texture_2d<f32>;struct VertexOutput{@builtin(position)Position:vec4f,@location(0)fragUV:vec2f,}fn rgb2yuv(rgb:vec3f)->vec3f{let Y=dot(rgb,vec3f(0.299,0.587,0.114));let U=dot(rgb,vec3f(-0.168736,-0.331264,0.5));let V=dot(rgb,vec3f(0.5,-0.418688,-0.081312));return vec3f(Y,U,V);}fn yuv2rgb(yuv:vec3f)->vec3f{let Y=yuv.x;let U=yuv.y;let V=yuv.z;return vec3f(Y+1.402*V,Y-0.344136*U-0.714136*V,Y+1.772*U);}fn hash12(p:vec2f)->f32{let p3=fract(vec3f(p.xyx)*0.1031);let p4=p3+dot(p3,p3.yzx+33.33);return fract((p4.x+p4.y)*p4.z);}const NOISE_LUMA=2.0f/255.0f;@vertex fn vert_main(@builtin(vertex_index)VertexIndex:u32)->VertexOutput{const pos=array(vec2(1.0,1.0),vec2(1.0,-1.0),vec2(-1.0,-1.0),vec2(1.0,1.0),vec2(-1.0,-1.0),vec2(-1.0,1.0),);const uv=array(vec2(1.0,0.0),vec2(1.0,1.0),vec2(0.0,1.0),vec2(1.0,0.0),vec2(0.0,1.0),vec2(0.0,0.0),);var output:VertexOutput;output.Position=vec4(pos[VertexIndex],0.0,1.0);output.fragUV=uv[VertexIndex];return output;}@fragment fn frag_main(@location(0)fragUV:vec2f)->@location(0)vec4f{let bg=textureSample(backgroundTexture,linearSampler,fragUV).rgb;let fg=textureSample(foregroundTexture,linearSampler,fragUV).rgb;let mask=textureSample(maskTexture,nearestSampler,fragUV).r;let blurBg=textureSample(blurredBackgroundTexture,linearSampler,fragUV).rgb;let bgT=f32(sparams.background);let fgT=f32(sparams.foreground);let lightWrap=f32(sparams.lightWrap);let edgeBand=f32(sparams.lightWrapEdgeBand);let tightness=f32(sparams.lightWrapTightness);let maskFg=smoothstep(bgT,fgT,mask);let edgeBg=smoothstep(bgT,bgT+edgeBand,mask);let edgeFg=1.0-smoothstep(fgT-edgeBand,fgT,mask);let edgeBgTight=pow(edgeBg,tightness);let edgeFgTight=pow(edgeFg,tightness);let maskBg=1.0-maskFg;let pixelCoord=floor(fragUV*vec2f(f32(sparams.width),f32(sparams.height)));let noiseY=(hash12(pixelCoord+vec2f(f32(dparams.time),0.0))-0.5)*NOISE_LUMA*f32(dparams.parity);let noiseWeight=clamp(maskBg+edgeBgTight*maskFg,0.0,1.0);var bgYUV=rgb2yuv(bg);bgYUV.x=clamp(bgYUV.x+noiseY*f32(noiseWeight),0.0,1.0);let bgNoisy=yuv2rgb(bgYUV);let bgSmooth=mix(bgNoisy,blurBg,lightWrap*edgeBgTight);let wrapColor=mix(fg,blurBg,lightWrap);let fgSmooth=mix(fg,wrapColor,edgeFgTight);let composite=mix(bgSmooth,fgSmooth,maskFg);return vec4f(composite,1.0);}";var mh=(t,e,r,n)=>{let s=t.getContext("webgpu");if(!s)throw Error("WebGPU not supported on the canvas.");s.configure({device:e,format:r,alphaMode:"premultiplied"});let o=St(du),a=gt(o.uniforms.sparams),i=gt(o.uniforms.dparams),u=e.createShaderModule({label:"replace shader",code:du}),l=e.createRenderPipeline({label:"replace pipeline",layout:"auto",vertex:{module:u},fragment:{module:u,targets:[{format:r}]}}),c=e.createSampler({addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge",magFilter:"linear",minFilter:"linear"}),f=e.createSampler({addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge",magFilter:"nearest",minFilter:"nearest"}),m=e.createBuffer({size:a.arrayBuffer.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),p=e.createBuffer({size:i.arrayBuffer.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),w=re=>{a.set({background:re.backgroundThreshold,foreground:re.foregroundThreshold,lightWrap:re.lightWrapIntensity,lightWrapTightness:re.lightWrapTightness,lightWrapEdgeBand:re.lightWrapEdgeBand,width:re.width,height:re.height}),e.queue.writeBuffer(m,0,a.arrayBuffer)},A=({time:re,parity:tt})=>{i.set({time:re,parity:tt}),e.queue.writeBuffer(p,0,i.arrayBuffer)},v={loadOp:"load",storeOp:"store"},C={label:"replace renderPass",colorAttachments:[v]},k=e.createBindGroup({layout:l.getBindGroupLayout(0),entries:[{binding:0,resource:c},{binding:1,resource:f},{binding:2,resource:{buffer:m}},{binding:3,resource:{buffer:p}}]}),T=null,S=null,F=null,B=null,z=null,N=-1,U=-1,V=-1,P=-1,te=-1,ue=-1,me=-1,pe=-1;return{render:(re,{foreground:tt,background:We,blurBackground:Vt,mask:Ge,timestamp:$e},J)=>{I(!n(),O.ContextLost),v.view=s.getCurrentTexture().createView(),F===We&&B===tt&&S===Ge&&z===Vt||(T=e.createBindGroup({layout:l.getBindGroupLayout(1),entries:[{binding:0,resource:tt.createView()},{binding:1,resource:We.createView()},{binding:2,resource:Ge.createView()},{binding:3,resource:Vt.createView()}]}),B=tt,F=We,S=Ge,z=Vt),N===J.backgroundThreshold&&U===J.foregroundThreshold&&V===J.lightWrapIntensity&&P===J.lightWrapTightness&&te===J.lightWrapEdgeBand&&ue===We.width&&me===We.height||(w({backgroundThreshold:J.backgroundThreshold,foregroundThreshold:J.foregroundThreshold,lightWrapIntensity:J.lightWrapIntensity,lightWrapTightness:J.lightWrapTightness,lightWrapEdgeBand:J.lightWrapEdgeBand,width:We.width,height:We.height}),N=J.backgroundThreshold,U=J.foregroundThreshold,V=J.lightWrapIntensity,P=J.lightWrapTightness,te=J.lightWrapEdgeBand,ue=We.width,me=We.height),pe=-pe,A({time:$e*1e-6%1024,parity:pe});let Ve=re.beginRenderPass(C);Ve.setPipeline(l),Ve.setBindGroup(0,k),Ve.setBindGroup(1,T),Ve.draw(6),Ve.end()},release:()=>{m.destroy(),p.destroy(),N=-1,U=-1,V=-1,P=-1,te=-1,ue=-1,me=-1,z=null,F=null,B=null,S=null,T=null}}};var ph=(t,e,r=new OffscreenCanvas(hn,fn))=>{let n=Math.trunc(r.width/2),s=Math.trunc(r.height/2),o=Math.trunc(r.width/4),a=Math.trunc(r.height/4),i="rgba8unorm",u={edgeBlurRenderer:()=>(I(c.device),dh(c.device,A,r.width,r.height,c.maskFormat,c.supportF16)),videoFrameRenderer:()=>(I(c.device),Lo(c.device,A,i,r.width,r.height,"linear")),maskRenderer:()=>(I(c.device),Lo(c.device,A,c.maskFormat,r.width,r.height,"nearest")),maskDownsampler2:()=>(I(c.device),Ar(c.device,A,n,s,c.maskFormat,"nearest")),maskDownsampler4:()=>(I(c.device),Ar(c.device,A,o,a,c.maskFormat,"nearest")),maskUpsampler:()=>(I(c.device),Ar(c.device,A,r.width,r.height,c.maskFormat,"nearest")),frameDownsampler2:()=>(I(c.device),Ar(c.device,A,n,s,i,"linear")),frameDownsampler4:()=>(I(c.device),Ar(c.device,A,o,a,i,"linear")),backgroundImageRenderer:()=>(I(c.device),Lo(c.device,A,i,r.width,r.height,"linear")),blendRenderer:()=>(I(c.device),ah(r,c.device,c.presentationFormat,A)),blurRenderer:()=>(I(c.device),cu(c.device,r.width,r.height,i,A)),jointBilateralFilterRenderer2:()=>(I(c.device),hu(r,c.device,A,n,s,c.maskFormat)),jointBilateralFilterRenderer4:()=>(I(c.device),hu(r,c.device,A,o,a,c.maskFormat)),maskSmoothingRenderer2:()=>(I(c.device),lu(c.device,A,c.maskFormat,n,s,c.supportF16)),maskSmoothingRenderer4:()=>(I(c.device),lu(c.device,A,c.maskFormat,o,a,c.supportF16)),prevMaskRenderer:()=>(I(c.device),ch(c.device,A)),strongMaskBlurRenderer:()=>(I(c.device),cu(c.device,r.width,r.height,c.maskFormat,A)),replaceRenderer:()=>(I(c.device),mh(r,c.device,c.presentationFormat,A)),release:v=>()=>{for(let C of Object.keys(v))C!=="release"&&v[C]?.release()}},l=dn(u),c={canvas:r,presentationFormat:"rgba8unorm",supportR16FloatTextureStorage:!1,maskFormat:"rgba16float",supportF16:!1,backend:"webgpu",deviceLost:!1,get videoFrameRenderer(){return l.videoFrameRenderer},get edgeBlurRenderer(){return l.edgeBlurRenderer},get maskRenderer(){return l.maskRenderer},get maskDownsampler2(){return l.maskDownsampler2},get maskDownsampler4(){return l.maskDownsampler4},get maskUpsampler(){return l.maskUpsampler},get frameDownsampler2(){return l.frameDownsampler2},get frameDownsampler4(){return l.frameDownsampler4},get blendRenderer(){return l.blendRenderer},get blurRenderer(){return l.blurRenderer},get backgroundImageRenderer(){return l.backgroundImageRenderer},get maskSmoothingRenderer2(){return l.maskSmoothingRenderer2},get maskSmoothingRenderer4(){return l.maskSmoothingRenderer4},get prevMaskRenderer(){return l.prevMaskRenderer},get jointBilateralFilterRenderer2(){return l.jointBilateralFilterRenderer2},get jointBilateralFilterRenderer4(){return l.jointBilateralFilterRenderer4},get strongMaskBlurRenderer(){return l.strongMaskBlurRenderer},get replaceRenderer(){return l.replaceRenderer}},f=oo(c),m=async()=>{if(!navigator.gpu)throw Error("WebGPU not supported.");c.presentationFormat=navigator.gpu.getPreferredCanvasFormat(),c.device=await nh(t),c.supportR16FloatTextureStorage=au(t)&&sh(c.device,"r16float"),c.supportR16FloatTextureStorage&&(c.maskFormat="r16float"),c.supportF16=iu(t),c.device.lost.then(v=>{v.reason!=="destroyed"&&(c.deviceLost=!0,e.contextLost(v.message),e.contextRestored(v.message))})},p=(v,C,k)=>{k&&f(k),I(c.device);let T=c.device.createCommandEncoder({label:"Renderer Encoder"}),S=T.beginComputePass({label:"frame upload pass"}),F=c.videoFrameRenderer.render(C,S),B=c.maskRenderer.render(v,S);S.end();let z,N;switch(k.downSampleFactor){case 4:{let U=T.beginComputePass({label:"downsample pass"}),V=c.maskDownsampler4.render(U,B),P=c.frameDownsampler4.render(U,F);U.end();let te=c.jointBilateralFilterRenderer4.render(T,V,P,k);z=c.maskSmoothingRenderer4.render(T,te,c.prevMask4??te,k);let ue=T.beginComputePass({label:"upsample pass"}),me=c.maskUpsampler.render(ue,z);ue.end(),N=c.strongMaskBlurRenderer.render(T,me,qn);break}default:{let U=T.beginComputePass({label:"downsample pass"}),V=c.maskDownsampler2.render(U,B),P=c.frameDownsampler2.render(U,F);U.end();let te=c.jointBilateralFilterRenderer2.render(T,V,P,k);z=c.maskSmoothingRenderer2.render(T,te,c.prevMask2??te,k);let ue=T.beginComputePass({label:"upsample pass"}),me=c.maskUpsampler.render(ue,z);ue.end(),N=c.edgeBlurRenderer.render(T,me,k);break}}if(k.effects==="blur"){let U=c.blurRenderer.render(T,F,k.backgroundBlurAmount);c.blendRenderer.render(T,{foreground:F,background:U,mask:N},k)}else if(k.effects==="overlay"&&k.backgroundImage){let U=T.beginComputePass({label:"background image upload pass"}),V=c.backgroundImageRenderer.render(k.backgroundImage,U);U.end();let P=c.blurRenderer.render(T,V,k.backgroundBlurAmount);c.replaceRenderer.render(T,{foreground:F,background:V,mask:N,blurBackground:P,timestamp:C.timestamp},k)}switch(k.downSampleFactor){case 4:c.prevMask4=c.prevMaskRenderer.render(T,z);break;default:c.prevMask2=c.prevMaskRenderer.render(T,z);break}c.device.queue.submit([T.finish()])},w=()=>{l.release(),c.deviceLost=!1,c.prevMask2=void 0,c.prevMask4=void 0,c.presentationFormat="rgba8unorm",c.supportR16FloatTextureStorage=!1,c.maskFormat="rgba16float",l=dn(u)},A=()=>c.deviceLost;return{init:m,render:p,release:w,isContextLost:A}};var K={projection:(t,e,r=-1)=>[2/t,0,0,0,2/e*r,0,-1,1*-r,1],translation:(t,e)=>[1,0,0,0,1,0,t,e,1],rotation:t=>{let e=Math.cos(t),r=Math.sin(t);return[e,-r,0,r,e,0,0,0,1]},scaling:(t,e)=>[t,0,0,0,e,0,0,0,1],multiply:(t,e)=>{let r=t[0],n=t[0*3+1],s=t[0*3+2],o=t[1*3+0],a=t[1*3+1],i=t[1*3+2],u=t[2*3+0],l=t[2*3+1],c=t[2*3+2],f=e[0*3+0],m=e[0*3+1],p=e[0*3+2],w=e[1*3+0],A=e[1*3+1],v=e[1*3+2],C=e[2*3+0],k=e[2*3+1],T=e[2*3+2];return[f*r+m*o+p*u,f*n+m*a+p*l,f*s+m*i+p*c,w*r+A*o+v*u,w*n+A*a+v*l,w*s+A*i+v*c,C*r+k*o+T*u,C*n+k*a+T*l,C*s+k*i+T*c]},translate:(t,e,r)=>K.multiply(t,K.translation(e,r)),rotate:(t,e)=>K.multiply(t,K.rotation(e)),scale:(t,e,r)=>K.multiply(t,K.scaling(e,r))};var Po={VertexShader:WebGLRenderingContext.VERTEX_SHADER,FragmentShader:WebGLRenderingContext.FRAGMENT_SHADER},mu={[Po.VertexShader]:"VertexShader",[Po.FragmentShader]:"FragmentShader"},rp=t=>typeof t=="string"?t.startsWith("#version 300 es"):!1,gh=t=>{if(!rp(t))throw new Error("Expecting GLSL ES 3.00 shader source")},np=/ERROR:\s*\d+:(\d+)/gi;function bh(t,e="",r=0){let n=[...e.matchAll(np)],s=new Map(n.map((o,a)=>{if(!o[1]||o.index===void 0)return[0,e];let i=Number.parseInt(o[1],10),u=n[a+1],l=u?u.index:e.length,c=e.substring(o.index,l);return[i-1,c]}));return t.split(`
44
+ `)this._line++;else if(e=="*"){if(this._peekAhead()=="/"&&(this._advance(),a--,a==0))return!0}else e=="/"&&this._peekAhead()=="*"&&(this._advance(),a++)}return!0}}let r=h.simpleTokens[e];if(r)return this._addToken(r),!0;let n=h.none,s=this._isAlpha(e),o=e==="_";if(this._isAlphaNumeric(e)){let a=this._peekAhead();for(;this._isAlphaNumeric(a);)e+=this._advance(),a=this._peekAhead()}if(s){let a=h.keywords[e];if(a)return this._addToken(a),!0}if(s||o)return this._addToken(h.tokens.ident),!0;for(;;){let a=this._findType(e),i=this._peekAhead();if(e=="-"&&this._tokens.length>0){if(i=="=")return this._current++,e+=i,this._addToken(h.tokens.minus_equal),!0;if(i=="-")return this._current++,e+=i,this._addToken(h.tokens.minus_minus),!0;let u=this._tokens.length-1;if((h.literal_or_ident.includes(this._tokens[u].type)||this._tokens[u].type==h.tokens.paren_right)&&i!=">")return this._addToken(a),!0}if(e==">"&&(i==">"||i=="=")){let u=!1,l=this._tokens.length-1;for(let c=0;c<5&&l>=0&&!h.assignment_operators.includes(this._tokens[l].type);++c,--l)if(this._tokens[l].type===h.tokens.less_than){l>0&&this._tokens[l-1].isArrayOrTemplateType()&&(u=!0);break}if(u)return this._addToken(a),!0}if(a===h.none){let u=e,l=0,c=2;for(let f=0;f<c;++f)if(u+=this._peekAhead(f),a=this._findType(u),a!==h.none){l=f;break}if(a===h.none)return n!==h.none&&(this._current--,this._addToken(n),!0);e=u,this._current+=l+1}if(n=a,this._isAtEnd())break;e+=this._advance()}return n!==h.none&&(this._addToken(n),!0)}_findType(e){for(let n in h.regexTokens){let s=h.regexTokens[n];if(this._match(e,s.rule))return s}return h.literalTokens[e]||h.none}_match(e,r){let n=r.exec(e);return n&&n.index==0&&n[0]==e}_isAtEnd(){return this._current>=this._source.length}_isAlpha(e){return!this._isNumeric(e)&&!this._isWhitespace(e)&&e!=="_"&&!t._operators.has(e)}_isNumeric(e){return e>="0"&&e<="9"}_isAlphaNumeric(e){return this._isAlpha(e)||this._isNumeric(e)||e==="_"}_isWhitespace(e){return e==" "||e==" "||e=="\r"}_advance(e=0){let r=this._source[this._current];return this._current+=e+1,r??"\0"}_peekAhead(e=0){return this._current+e>=this._source.length?"\0":this._source[this._current+e]}_addToken(e){let r=this._source.substring(this._start,this._current);this._tokens.push(new Bo(e,r,this._line,this._start,this._current))}};function L(t){return Array.isArray(t)||t?.buffer instanceof ArrayBuffer}Uo._operators=new Set([".","(",")","[","]","{","}",",",";",":","=","!","<",">","+","-","*","/","%","&","|","^","~","@","#","?","'","`",'"',"\\",`
45
+ `,"\r"," ","\0"]);var Lo=new Float32Array(1),Gm=new Uint32Array(Lo.buffer),Vm=new Uint32Array(Lo.buffer),Po=new Int32Array(1),Wm=new Float32Array(Po.buffer),$m=new Uint32Array(Po.buffer),Oo=new Uint32Array(1),zm=new Float32Array(Oo.buffer),Hm=new Int32Array(Oo.buffer);function Kf(t,e,r){if(e===r)return t;if(e==="f32"){if(r==="i32"||r==="x32")return Lo[0]=t,Gm[0];if(r==="u32")return Lo[0]=t,Vm[0]}else if(e==="i32"||e==="x32"){if(r==="f32")return Po[0]=t,Wm[0];if(r==="u32")return Po[0]=t,$m[0]}else if(e==="u32"){if(r==="f32")return Oo[0]=t,zm[0];if(r==="i32"||r==="x32")return Oo[0]=t,Hm[0]}return console.error(`Unsupported cast from ${e} to ${r}`),t}var Yi=class{constructor(e){this.resources=null,this.inUse=!1,this.info=null,this.node=e}},yn=class{constructor(e,r){this.align=e,this.size=r}},Gr=class t{constructor(){this.uniforms=[],this.storage=[],this.immediates=[],this.textures=[],this.samplers=[],this.aliases=[],this.overrides=[],this.structs=[],this.entry=new $i,this.functions=[],this._types=new Map,this._functions=new Map}_isStorageTexture(e){return e.name=="texture_storage_1d"||e.name=="texture_storage_2d"||e.name=="texture_storage_2d_array"||e.name=="texture_storage_3d"}updateAST(e){for(let r of e)r instanceof Vr&&this._functions.set(r.name,new Yi(r));for(let r of e)if(r instanceof Nt){let n=this.getTypeInfo(r,null);n instanceof Kt&&this.structs.push(n)}for(let r of e)if(r instanceof ts)this.aliases.push(this._getAliasInfo(r));else{if(r instanceof Qn){let n=r,s=this._getAttributeNum(n.attributes,"id",0),o=n.type!=null?this.getTypeInfo(n.type,n.attributes):null;this.overrides.push(new Gi(n.name,o,n.attributes,s));continue}if(this._isUniformVar(r)){let n=r,s=this._getAttributeNum(n.attributes,"group",0),o=this._getAttributeNum(n.attributes,"binding",0),a=this.getTypeInfo(n.type,n.attributes),i=new Or(n.name,a,s,o,n.attributes,Ie.Uniform,n.access);i.access||(i.access="read"),this.uniforms.push(i);continue}if(this._isImmediateVar(r)){let n=r,s=this._getAttributeNum(n.attributes,"group",0),o=this._getAttributeNum(n.attributes,"binding",0),a=this.getTypeInfo(n.type,n.attributes),i=new Or(n.name,a,s,o,n.attributes,Ie.Immediate,n.access);i.access||(i.access="read"),this.immediates.push(i);continue}if(this._isStorageVar(r)){let n=r,s=this._getAttributeNum(n.attributes,"group",0),o=this._getAttributeNum(n.attributes,"binding",0),a=this.getTypeInfo(n.type,n.attributes),i=this._isStorageTexture(a),u=new Or(n.name,a,s,o,n.attributes,i?Ie.StorageTexture:Ie.Storage,n.access);u.access||(u.access="read"),this.storage.push(u);continue}if(this._isTextureVar(r)){let n=r,s=this._getAttributeNum(n.attributes,"group",0),o=this._getAttributeNum(n.attributes,"binding",0),a=this.getTypeInfo(n.type,n.attributes),i=this._isStorageTexture(a),u=i?a.access:n.access,l=new Or(n.name,a,s,o,n.attributes,i?Ie.StorageTexture:Ie.Texture,u||n.access);l.access||(l.access="read"),i?this.storage.push(l):this.textures.push(l);continue}if(this._isSamplerVar(r)){let n=r,s=this._getAttributeNum(n.attributes,"group",0),o=this._getAttributeNum(n.attributes,"binding",0),a=this.getTypeInfo(n.type,n.attributes),i=new Or(n.name,a,s,o,n.attributes,Ie.Sampler,n.access);this.samplers.push(i);continue}}for(let r of e)if(r instanceof Vr){let n=this._getAttribute(r,"vertex"),s=this._getAttribute(r,"fragment"),o=this._getAttribute(r,"compute"),a=n||s||o,i=new Wi(r.name,a?.name,r.attributes);i.attributes=r.attributes,i.startLine=r.startLine,i.endLine=r.endLine,this.functions.push(i),this._functions.get(r.name).info=i,a&&(this._functions.get(r.name).inUse=!0,i.inUse=!0,i.inputs=this._getInputs(r.args),i.outputs=this._getOutputs(r.returnType),this.entry[a.name].push(i)),i.resources=this._findResources(r,!!a),i.arguments=r.args.map(u=>new Vi(u.name,this.getTypeInfo(u.type,u.attributes),u.attributes)),i.returnType=r.returnType?this.getTypeInfo(r.returnType,r.attributes):null;continue}for(let r of this._functions.values())r.info&&(r.info.inUse=r.inUse,this._addCalls(r.node,r.info.calls));for(let r of this._functions.values())r.node.search(n=>{var s,o,a;if(n instanceof Fo){if(n.value)if(L(n.value))for(let i of n.value)for(let u of this.overrides)i===u.name&&((s=r.info)===null||s===void 0||s.overrides.push(u));else for(let i of this.overrides)n.value===i.name&&((o=r.info)===null||o===void 0||o.overrides.push(i))}else if(n instanceof We)for(let i of this.overrides)n.name===i.name&&((a=r.info)===null||a===void 0||a.overrides.push(i))});for(let r of this.uniforms)this._markStructsInUse(r.type);for(let r of this.storage)this._markStructsInUse(r.type)}getFunctionInfo(e){for(let r of this.functions)if(r.name==e)return r;return null}getStructInfo(e){for(let r of this.structs)if(r.name==e)return r;return null}getOverrideInfo(e){for(let r of this.overrides)if(r.name==e)return r;return null}_markStructsInUse(e){if(e)if(e.isStruct){if(e.inUse=!0,e.members)for(let r of e.members)this._markStructsInUse(r.type)}else if(e.isArray)this._markStructsInUse(e.format);else if(e.isTemplate)e.format&&this._markStructsInUse(e.format);else{let r=this._getAlias(e.name);r&&this._markStructsInUse(r)}}_addCalls(e,r){var n;for(let s of e.calls){let o=(n=this._functions.get(s.name))===null||n===void 0?void 0:n.info;o&&r.add(o)}}findResource(e,r,n){if(n){for(let s of this.entry.compute)if(s.name===n){for(let o of s.resources)if(o.group==e&&o.binding==r)return o}for(let s of this.entry.vertex)if(s.name===n){for(let o of s.resources)if(o.group==e&&o.binding==r)return o}for(let s of this.entry.fragment)if(s.name===n){for(let o of s.resources)if(o.group==e&&o.binding==r)return o}}for(let s of this.uniforms)if(s.group==e&&s.binding==r)return s;for(let s of this.storage)if(s.group==e&&s.binding==r)return s;for(let s of this.textures)if(s.group==e&&s.binding==r)return s;for(let s of this.samplers)if(s.group==e&&s.binding==r)return s;return null}_findResource(e){for(let r of this.uniforms)if(r.name==e)return r;for(let r of this.storage)if(r.name==e)return r;for(let r of this.textures)if(r.name==e)return r;for(let r of this.samplers)if(r.name==e)return r;return null}_markStructsFromAST(e){let r=this.getTypeInfo(e,null);this._markStructsInUse(r)}_findResources(e,r){let n=[],s=this,o=[];return e.search(a=>{if(a instanceof wn)o.push({});else if(a instanceof Tn)o.pop();else if(a instanceof It){let i=a;r&&i.type!==null&&this._markStructsFromAST(i.type),o.length>0&&(o[o.length-1][i.name]=i)}else if(a instanceof Rt){let i=a;r&&i.type!==null&&this._markStructsFromAST(i.type)}else if(a instanceof Mr){let i=a;r&&i.type!==null&&this._markStructsFromAST(i.type),o.length>0&&(o[o.length-1][i.name]=i)}else if(a instanceof We){let i=a;if(o.length>0&&o[o.length-1][i.name])return;let u=s._findResource(i.name);u&&n.push(u)}else if(a instanceof rs){let i=a,u=s._functions.get(i.name);if(u&&(r&&(u.inUse=!0),e.calls.add(u.node),u.resources=s._findResources(u.node,r),n.push(...u.resources)),i.name==="textureSample"&&i.args.length>=2){let l=i.args[0],c=null;if(l instanceof We){let p=s._findResource(l.name);p&&p.resourceType===Ie.Texture&&(c=p)}let f=i.args[1],d=null;if(f instanceof We){let p=s._findResource(f.name);p&&p.resourceType===Ie.Sampler&&(d=p)}c&&d&&(c.relations===null&&(c.relations=[]),c.relations.push(d),d.relations===null&&(d.relations=[]),d.relations.push(c))}}else if(a instanceof es){let i=a,u=s._functions.get(i.name);u&&(r&&(u.inUse=!0),e.calls.add(u.node),u.resources=s._findResources(u.node,r),n.push(...u.resources))}}),[...new Map(n.map(a=>[a.name,a])).values()]}getBindGroups(){let e=[];function r(n,s){n>=e.length&&(e.length=n+1),e[n]===void 0&&(e[n]=[]),s>=e[n].length&&(e[n].length=s+1)}for(let n of this.uniforms)r(n.group,n.binding),e[n.group][n.binding]=n;for(let n of this.storage)r(n.group,n.binding),e[n.group][n.binding]=n;for(let n of this.textures)r(n.group,n.binding),e[n.group][n.binding]=n;for(let n of this.samplers)r(n.group,n.binding),e[n.group][n.binding]=n;return e}_getOutputs(e,r=void 0){if(r===void 0&&(r=[]),e instanceof Nt)this._getStructOutputs(e,r);else{let n=this._getOutputInfo(e);n!==null&&r.push(n)}return r}_getStructOutputs(e,r){for(let n of e.members)if(n.type instanceof Nt)this._getStructOutputs(n.type,r);else{let s=this._getAttribute(n,"location")||this._getAttribute(n,"builtin");if(s!==null){let o=this.getTypeInfo(n.type,n.type.attributes),a=this._parseInt(s.value),i=new io(n.name,o,s.name,a);r.push(i)}}}_getOutputInfo(e){let r=this._getAttribute(e,"location")||this._getAttribute(e,"builtin");if(r!==null){let n=this.getTypeInfo(e,e.attributes),s=this._parseInt(r.value);return new io("",n,r.name,s)}return null}_getInputs(e,r=void 0){r===void 0&&(r=[]);for(let n of e)if(n.type instanceof Nt)this._getStructInputs(n.type,r);else{let s=this._getInputInfo(n);s!==null&&r.push(s)}return r}_getStructInputs(e,r){for(let n of e.members)if(n.type instanceof Nt)this._getStructInputs(n.type,r);else{let s=this._getInputInfo(n);s!==null&&r.push(s)}}_getInputInfo(e){let r=this._getAttribute(e,"location")||this._getAttribute(e,"builtin");if(r!==null){let n=this._getAttribute(e,"interpolation"),s=this.getTypeInfo(e.type,e.attributes),o=this._parseInt(r.value),a=new Ni(e.name,s,r.name,o);return n!==null&&(a.interpolation=this._parseString(n.value)),a}return null}_parseString(e){return e instanceof Array&&(e=e[0]),e}_parseInt(e){e instanceof Array&&(e=e[0]);let r=parseInt(e);return isNaN(r)?e:r}_getAlias(e){for(let r of this.aliases)if(r.name==e)return r.type;return null}_getAliasInfo(e){return new Mi(e.name,this.getTypeInfo(e.type,null))}getTypeInfoByName(e){for(let r of this.structs)if(r.name==e)return r;for(let r of this.aliases)if(r.name==e)return r.type;return null}getTypeInfo(e,r=null){if(this._types.has(e))return this._types.get(e);if(e instanceof bn){let s=e.type?this.getTypeInfo(e.type,e.attributes):null,o=new Zn(e.name,s,r);return this._types.set(e,o),this._updateTypeInfo(o),o}if(e instanceof Nr){let s=e,o=s.format?this.getTypeInfo(s.format,s.attributes):null,a=new Zt(s.name,r);return a.format=o,a.count=s.count,this._types.set(e,a),this._updateTypeInfo(a),a}if(e instanceof Nt){let s=e,o=new Kt(s.name,r);o.startLine=s.startLine,o.endLine=s.endLine;for(let a of s.members){let i=this.getTypeInfo(a.type,a.attributes);o.members.push(new ao(a.name,i,a.attributes))}return this._types.set(e,o),this._updateTypeInfo(o),o}if(e instanceof Dr){let s=e,o=s.format instanceof R,a=s.format?o?this.getTypeInfo(s.format,null):new st(s.format,null):null,i=new ur(s.name,a,r,s.access);return this._types.set(e,i),this._updateTypeInfo(i),i}if(e instanceof _){let s=e,o=s.format?this.getTypeInfo(s.format,null):null,a=new ur(s.name,o,r,s.access);return this._types.set(e,a),this._updateTypeInfo(a),a}let n=new st(e.name,r);return this._types.set(e,n),this._updateTypeInfo(n),n}_updateTypeInfo(e){var r,n,s;let o=this._getTypeSize(e);if(e.size=(r=o?.size)!==null&&r!==void 0?r:0,e instanceof Zt&&e.format){let a=this._getTypeSize(e.format);e.stride=Math.max((n=a?.size)!==null&&n!==void 0?n:0,(s=a?.align)!==null&&s!==void 0?s:0),this._updateTypeInfo(e.format)}e instanceof Zn&&this._updateTypeInfo(e.format),e instanceof Kt&&this._updateStructInfo(e)}_updateStructInfo(e){var r;let n=0,s=0,o=0,a=0;for(let i=0,u=e.members.length;i<u;++i){let l=e.members[i],c=this._getTypeSize(l);if(!c)continue;(r=this._getAlias(l.type.name))!==null&&r!==void 0||l.type;let f=c.align,d=c.size;n=this._roundUp(f,n+s),s=d,o=n,a=Math.max(a,f),l.offset=n,l.size=d,this._updateTypeInfo(l.type)}e.size=this._roundUp(a,o+s),e.align=a}_getTypeSize(e){var r,n;if(e==null)return null;let s=this._getAttributeNum(e.attributes,"size",0),o=this._getAttributeNum(e.attributes,"align",0);if(e instanceof ao&&(e=e.type),e instanceof st){let a=this._getAlias(e.name);a!==null&&(e=a)}{let a=t._typeInfo[e.name];if(a!==void 0){let i=((r=e.format)===null||r===void 0?void 0:r.name)==="f16"?2:1;return new yn(Math.max(o,a.align/i),Math.max(s,a.size/i))}}{let a=t._typeInfo[e.name.substring(0,e.name.length-1)];if(a){let i=e.name[e.name.length-1]==="h"?2:1;return new yn(Math.max(o,a.align/i),Math.max(s,a.size/i))}}if(e instanceof Zt){let a=e,i=8,u=8,l=this._getTypeSize(a.format);return l!==null&&(u=l.size,i=l.align),u=a.count*this._getAttributeNum((n=e?.attributes)!==null&&n!==void 0?n:null,"stride",this._roundUp(i,u)),s&&(u=s),new yn(Math.max(o,i),Math.max(s,u))}if(e instanceof Kt){let a=0,i=0,u=0,l=0,c=0;for(let f of e.members){let d=this._getTypeSize(f.type);d!==null&&(a=Math.max(d.align,a),u=this._roundUp(d.align,u+l),l=d.size,c=u)}return i=this._roundUp(a,c+l),new yn(Math.max(o,a),Math.max(s,i))}return null}_isUniformVar(e){return e instanceof It&&e.storage=="uniform"}_isImmediateVar(e){return e instanceof It&&e.storage=="immediate"}_isStorageVar(e){return e instanceof It&&e.storage=="storage"}_isTextureVar(e){return e instanceof It&&e.type!==null&&t._textureTypes.indexOf(e.type.name)!=-1}_isSamplerVar(e){return e instanceof It&&e.type!==null&&t._samplerTypes.indexOf(e.type.name)!=-1}_getAttribute(e,r){let n=e;if(!n||!n.attributes)return null;let s=n.attributes;for(let o of s)if(o.name==r)return o;return null}_getAttributeNum(e,r,n){if(e===null)return n;for(let s of e)if(s.name==r){let o=s!==null&&s.value!==null?s.value:n;return o instanceof Array&&(o=o[0]),typeof o=="number"?o:typeof o=="string"?parseInt(o):n}return n}_roundUp(e,r){return Math.ceil(r/e)*e}};Gr._typeInfo={f16:{align:2,size:2},i32:{align:4,size:4},u32:{align:4,size:4},f32:{align:4,size:4},atomic:{align:4,size:4},vec2:{align:8,size:8},vec3:{align:16,size:12},vec4:{align:16,size:16},mat2x2:{align:8,size:16},mat3x2:{align:8,size:24},mat4x2:{align:8,size:32},mat2x3:{align:16,size:32},mat3x3:{align:16,size:48},mat4x3:{align:16,size:64},mat2x4:{align:16,size:32},mat3x4:{align:16,size:48},mat4x4:{align:16,size:64}},Gr._textureTypes=h.any_texture_type.map(t=>t.name),Gr._samplerTypes=h.sampler_type.map(t=>t.name);var ou=0,qi=class t{constructor(e,r,n){this.id=ou++,this.name=e,this.value=r,this.node=n}clone(){return new t(this.name,this.value,this.node)}},Ki=class t{constructor(e){this.id=ou++,this.name=e.name,this.node=e}clone(){return new t(this.node)}},Zi=class t{constructor(e){this.parent=null,this.variables=new Map,this.functions=new Map,this.currentFunctionName="",this.id=ou++,e&&(this.parent=e,this.currentFunctionName=e.currentFunctionName)}getVariable(e){var r;return this.variables.has(e)?(r=this.variables.get(e))!==null&&r!==void 0?r:null:this.parent?this.parent.getVariable(e):null}getFunction(e){var r;return this.functions.has(e)?(r=this.functions.get(e))!==null&&r!==void 0?r:null:this.parent?this.parent.getFunction(e):null}createVariable(e,r,n){this.variables.set(e,new qi(e,r,n??null))}setVariable(e,r,n){let s=this.getVariable(e);s!==null?s.value=r:this.createVariable(e,r,n)}getVariableValue(e){var r;let n=this.getVariable(e);return(r=n?.value)!==null&&r!==void 0?r:null}clone(){return new t(this)}},Ji=class{evalExpression(e,r){return null}getTypeInfo(e){return null}getVariableName(e,r){return""}},Qi=class{constructor(e){this.exec=e}getTypeInfo(e){return this.exec.getTypeInfo(e)}All(e,r){let n=this.exec.evalExpression(e.args[0],r),s=!0;if(n instanceof m)return n.data.forEach(o=>{o||(s=!1)}),new y(s?1:0,this.getTypeInfo("bool"));throw new Error(`All() expects a vector argument. Line ${e.line}`)}Any(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof m){let s=n.data.some(o=>o);return new y(s?1:0,this.getTypeInfo("bool"))}throw new Error(`Any() expects a vector argument. Line ${e.line}`)}Select(e,r){let n=this.exec.evalExpression(e.args[2],r);if(!(n instanceof y))throw new Error(`Select() expects a bool condition. Line ${e.line}`);return n.value?this.exec.evalExpression(e.args[1],r):this.exec.evalExpression(e.args[0],r)}ArrayLength(e,r){let n=e.args[0];n instanceof Ae&&(n=n.right);let s=this.exec.evalExpression(n,r);if(s instanceof Re&&s.typeInfo.size===0){let o=s.typeInfo,a=s.buffer.byteLength/o.stride;return new y(a,this.getTypeInfo("u32"))}return new y(s.typeInfo.size,this.getTypeInfo("u32"))}Abs(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof m)return new m(n.data.map(o=>Math.abs(o)),n.typeInfo);let s=n;return new y(Math.abs(s.value),s.typeInfo)}Acos(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof m)return new m(n.data.map(o=>Math.acos(o)),n.typeInfo);let s=n;return new y(Math.acos(s.value),n.typeInfo)}Acosh(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof m)return new m(n.data.map(o=>Math.acosh(o)),n.typeInfo);let s=n;return new y(Math.acosh(s.value),n.typeInfo)}Asin(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof m)return new m(n.data.map(o=>Math.asin(o)),n.typeInfo);let s=n;return new y(Math.asin(s.value),n.typeInfo)}Asinh(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof m)return new m(n.data.map(o=>Math.asinh(o)),n.typeInfo);let s=n;return new y(Math.asinh(s.value),n.typeInfo)}Atan(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof m)return new m(n.data.map(o=>Math.atan(o)),n.typeInfo);let s=n;return new y(Math.atan(s.value),n.typeInfo)}Atanh(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof m)return new m(n.data.map(o=>Math.atanh(o)),n.typeInfo);let s=n;return new y(Math.atanh(s.value),n.typeInfo)}Atan2(e,r){let n=this.exec.evalExpression(e.args[0],r),s=this.exec.evalExpression(e.args[1],r);if(n instanceof m&&s instanceof m)return new m(n.data.map((i,u)=>Math.atan2(i,s.data[u])),n.typeInfo);let o=n,a=s;return new y(Math.atan2(o.value,a.value),n.typeInfo)}Ceil(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof m)return new m(n.data.map(o=>Math.ceil(o)),n.typeInfo);let s=n;return new y(Math.ceil(s.value),n.typeInfo)}_clamp(e,r,n){return Math.min(Math.max(e,r),n)}Clamp(e,r){let n=this.exec.evalExpression(e.args[0],r),s=this.exec.evalExpression(e.args[1],r),o=this.exec.evalExpression(e.args[2],r);if(n instanceof m&&s instanceof m&&o instanceof m)return new m(n.data.map((l,c)=>this._clamp(l,s.data[c],o.data[c])),n.typeInfo);let a=n,i=s,u=o;return new y(this._clamp(a.value,i.value,u.value),n.typeInfo)}Cos(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof m)return new m(n.data.map(o=>Math.cos(o)),n.typeInfo);let s=n;return new y(Math.cos(s.value),n.typeInfo)}Cosh(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof m)return new m(n.data.map(o=>Math.cosh(o)),n.typeInfo);let s=n;return new y(Math.cos(s.value),n.typeInfo)}CountLeadingZeros(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof m)return new m(n.data.map(o=>Math.clz32(o)),n.typeInfo);let s=n;return new y(Math.clz32(s.value),n.typeInfo)}_countOneBits(e){let r=0;for(;e!==0;)1&e&&r++,e>>=1;return r}CountOneBits(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof m)return new m(n.data.map(o=>this._countOneBits(o)),n.typeInfo);let s=n;return new y(this._countOneBits(s.value),n.typeInfo)}_countTrailingZeros(e){if(e===0)return 32;let r=0;for(;!(1&e);)e>>=1,r++;return r}CountTrailingZeros(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof m)return new m(n.data.map(o=>this._countTrailingZeros(o)),n.typeInfo);let s=n;return new y(this._countTrailingZeros(s.value),n.typeInfo)}Cross(e,r){let n=this.exec.evalExpression(e.args[0],r),s=this.exec.evalExpression(e.args[1],r);if(n instanceof m&&s instanceof m){if(n.data.length!==3||s.data.length!==3)return console.error(`Cross() expects 3D vectors. Line ${e.line}`),null;let o=n.data,a=s.data;return new m([o[1]*a[2]-a[1]*o[2],o[2]*a[0]-a[2]*o[0],o[0]*a[1]-a[0]*o[1]],n.typeInfo)}return console.error(`Cross() expects vector arguments. Line ${e.line}`),null}Degrees(e,r){let n=this.exec.evalExpression(e.args[0],r),s=180/Math.PI;return n instanceof m?new m(n.data.map(o=>o*s),n.typeInfo):new y(n.value*s,this.getTypeInfo("f32"))}Determinant(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof H){let s=n.data,o=n.typeInfo.getTypeName(),a=o.endsWith("h")?this.getTypeInfo("f16"):this.getTypeInfo("f32");if(o==="mat2x2"||o==="mat2x2f"||o==="mat2x2h")return new y(s[0]*s[3]-s[1]*s[2],a);if(o==="mat2x3"||o==="mat2x3f"||o==="mat2x3h")return new y(s[0]*(s[4]*s[8]-s[5]*s[7])-s[1]*(s[3]*s[8]-s[5]*s[6])+s[2]*(s[3]*s[7]-s[4]*s[6]),a);if(o==="mat2x4"||o==="mat2x4f"||o==="mat2x4h")console.error(`TODO: Determinant for ${o}`);else if(o==="mat3x2"||o==="mat3x2f"||o==="mat3x2h")console.error(`TODO: Determinant for ${o}`);else{if(o==="mat3x3"||o==="mat3x3f"||o==="mat3x3h")return new y(s[0]*(s[4]*s[8]-s[5]*s[7])-s[1]*(s[3]*s[8]-s[5]*s[6])+s[2]*(s[3]*s[7]-s[4]*s[6]),a);o==="mat3x4"||o==="mat3x4f"||o==="mat3x4h"||o==="mat4x2"||o==="mat4x2f"||o==="mat4x2h"||o==="mat4x3"||o==="mat4x3f"||o==="mat4x3h"?console.error(`TODO: Determinant for ${o}`):o!=="mat4x4"&&o!=="mat4x4f"&&o!=="mat4x4h"||console.error(`TODO: Determinant for ${o}`)}}return console.error(`Determinant expects a matrix argument. Line ${e.line}`),null}Distance(e,r){let n=this.exec.evalExpression(e.args[0],r),s=this.exec.evalExpression(e.args[1],r);if(n instanceof m&&s instanceof m){let i=0;for(let u=0;u<n.data.length;++u)i+=(n.data[u]-s.data[u])*(n.data[u]-s.data[u]);return new y(Math.sqrt(i),this.getTypeInfo("f32"))}let o=n,a=s;return new y(Math.abs(o.value-a.value),n.typeInfo)}_dot(e,r){let n=0;for(let s=0;s<e.length;++s)n+=r[s]*e[s];return n}Dot(e,r){let n=this.exec.evalExpression(e.args[0],r),s=this.exec.evalExpression(e.args[1],r);return n instanceof m&&s instanceof m?new y(this._dot(n.data,s.data),this.getTypeInfo("f32")):(console.error(`Dot() expects vector arguments. Line ${e.line}`),null)}Dot4U8Packed(e,r){return console.error(`TODO: dot4U8Packed. Line ${e.line}`),null}Dot4I8Packed(e,r){return console.error(`TODO: dot4I8Packed. Line ${e.line}`),null}Exp(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof m)return new m(n.data.map(o=>Math.exp(o)),n.typeInfo);let s=n;return new y(Math.exp(s.value),n.typeInfo)}Exp2(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof m)return new m(n.data.map(o=>Math.pow(2,o)),n.typeInfo);let s=n;return new y(Math.pow(2,s.value),n.typeInfo)}ExtractBits(e,r){let n=this.exec.evalExpression(e.args[0],r),s=this.exec.evalExpression(e.args[1],r),o=this.exec.evalExpression(e.args[2],r);if(s.typeInfo.name!=="u32"&&s.typeInfo.name!=="x32")return console.error(`ExtractBits() expects an i32 offset argument. Line ${e.line}`),null;if(o.typeInfo.name!=="u32"&&o.typeInfo.name!=="x32")return console.error(`ExtractBits() expects an i32 count argument. Line ${e.line}`),null;let a=s.value,i=o.value;if(n instanceof m)return new m(n.data.map(l=>l>>a&(1<<i)-1),n.typeInfo);if(n.typeInfo.name!=="i32"&&n.typeInfo.name!=="x32")return console.error(`ExtractBits() expects an i32 argument. Line ${e.line}`),null;let u=n.value;return new y(u>>a&(1<<i)-1,this.getTypeInfo("i32"))}FaceForward(e,r){let n=this.exec.evalExpression(e.args[0],r),s=this.exec.evalExpression(e.args[1],r),o=this.exec.evalExpression(e.args[2],r);if(n instanceof m&&s instanceof m&&o instanceof m){let a=this._dot(s.data,o.data);return new m(a<0?Array.from(n.data):n.data.map(i=>-i),n.typeInfo)}return console.error(`FaceForward() expects vector arguments. Line ${e.line}`),null}_firstLeadingBit(e){return e===0?-1:31-Math.clz32(e)}FirstLeadingBit(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof m)return new m(n.data.map(o=>this._firstLeadingBit(o)),n.typeInfo);let s=n;return new y(this._firstLeadingBit(s.value),n.typeInfo)}_firstTrailingBit(e){return e===0?-1:Math.log2(e&-e)}FirstTrailingBit(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof m)return new m(n.data.map(o=>this._firstTrailingBit(o)),n.typeInfo);let s=n;return new y(this._firstTrailingBit(s.value),n.typeInfo)}Floor(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof m)return new m(n.data.map(o=>Math.floor(o)),n.typeInfo);let s=n;return new y(Math.floor(s.value),n.typeInfo)}Fma(e,r){let n=this.exec.evalExpression(e.args[0],r),s=this.exec.evalExpression(e.args[1],r),o=this.exec.evalExpression(e.args[2],r);if(n instanceof m&&s instanceof m&&o instanceof m)return n.data.length!==s.data.length||n.data.length!==o.data.length?(console.error(`Fma() expects vectors of the same length. Line ${e.line}`),null):new m(n.data.map((l,c)=>l*s.data[c]+o.data[c]),n.typeInfo);let a=n,i=s,u=o;return new y(a.value*i.value+u.value,a.typeInfo)}Fract(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof m)return new m(n.data.map(o=>o-Math.floor(o)),n.typeInfo);let s=n;return new y(s.value-Math.floor(s.value),n.typeInfo)}Frexp(e,r){return console.error(`TODO: frexp. Line ${e.line}`),null}InsertBits(e,r){let n=this.exec.evalExpression(e.args[0],r),s=this.exec.evalExpression(e.args[1],r),o=this.exec.evalExpression(e.args[2],r),a=this.exec.evalExpression(e.args[3],r);if(o.typeInfo.name!=="u32"&&o.typeInfo.name!=="x32")return console.error(`InsertBits() expects an i32 offset argument. Line ${e.line}`),null;let i=o.value,u=(1<<a.value)-1<<i,l=~u;if(n instanceof m&&s instanceof m)return new m(n.data.map((d,p)=>d&l|s.data[p]<<i&u),n.typeInfo);let c=n.value,f=s.value;return new y(c&l|f<<i&u,n.typeInfo)}InverseSqrt(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof m)return new m(n.data.map(o=>1/Math.sqrt(o)),n.typeInfo);let s=n;return new y(1/Math.sqrt(s.value),n.typeInfo)}Ldexp(e,r){return console.error(`TODO: ldexp. Line ${e.line}`),null}Length(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof m){let o=0;return n.data.forEach(a=>{o+=a*a}),new y(Math.sqrt(o),this.getTypeInfo("f32"))}let s=n;return new y(Math.abs(s.value),n.typeInfo)}Log(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof m)return new m(n.data.map(o=>Math.log(o)),n.typeInfo);let s=n;return new y(Math.log(s.value),n.typeInfo)}Log2(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof m)return new m(n.data.map(o=>Math.log2(o)),n.typeInfo);let s=n;return new y(Math.log2(s.value),n.typeInfo)}Max(e,r){let n=this.exec.evalExpression(e.args[0],r),s=this.exec.evalExpression(e.args[1],r);if(n instanceof m&&s instanceof m)return new m(n.data.map((i,u)=>Math.max(i,s.data[u])),n.typeInfo);let o=n,a=s;return new y(Math.max(o.value,a.value),n.typeInfo)}Min(e,r){let n=this.exec.evalExpression(e.args[0],r),s=this.exec.evalExpression(e.args[1],r);if(n instanceof m&&s instanceof m)return new m(n.data.map((i,u)=>Math.min(i,s.data[u])),n.typeInfo);let o=n,a=s;return new y(Math.min(o.value,a.value),n.typeInfo)}Mix(e,r){let n=this.exec.evalExpression(e.args[0],r),s=this.exec.evalExpression(e.args[1],r),o=this.exec.evalExpression(e.args[2],r);if(n instanceof m&&s instanceof m&&o instanceof m)return new m(n.data.map((u,l)=>n.data[l]*(1-o.data[l])+s.data[l]*o.data[l]),n.typeInfo);let a=s,i=o;return new y(n.value*(1-i.value)+a.value*i.value,n.typeInfo)}Modf(e,r){let n=this.exec.evalExpression(e.args[0],r),s=this.exec.evalExpression(e.args[1],r);if(n instanceof m&&s instanceof m)return new m(n.data.map((a,i)=>a%s.data[i]),n.typeInfo);let o=s;return new y(n.value%o.value,n.typeInfo)}Normalize(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof m){let s=this.Length(e,r).value;return new m(n.data.map(o=>o/s),n.typeInfo)}return console.error(`Normalize() expects a vector argument. Line ${e.line}`),null}Pow(e,r){let n=this.exec.evalExpression(e.args[0],r),s=this.exec.evalExpression(e.args[1],r);if(n instanceof m&&s instanceof m)return new m(n.data.map((i,u)=>Math.pow(i,s.data[u])),n.typeInfo);let o=n,a=s;return new y(Math.pow(o.value,a.value),n.typeInfo)}QuantizeToF16(e,r){let n=this.exec.evalExpression(e.args[0],r);return n instanceof m?new m(n.data.map(s=>s),n.typeInfo):new y(n.value,n.typeInfo)}Radians(e,r){let n=this.exec.evalExpression(e.args[0],r);return n instanceof m?new m(n.data.map(s=>s*Math.PI/180),n.typeInfo):new y(n.value*Math.PI/180,this.getTypeInfo("f32"))}Reflect(e,r){let n=this.exec.evalExpression(e.args[0],r),s=this.exec.evalExpression(e.args[1],r);if(n instanceof m&&s instanceof m){let o=this._dot(n.data,s.data);return new m(n.data.map((a,i)=>a-2*o*s.data[i]),n.typeInfo)}return console.error(`Reflect() expects vector arguments. Line ${e.line}`),null}Refract(e,r){let n=this.exec.evalExpression(e.args[0],r),s=this.exec.evalExpression(e.args[1],r),o=this.exec.evalExpression(e.args[2],r);if(n instanceof m&&s instanceof m&&o instanceof y){let a=this._dot(s.data,n.data);return new m(n.data.map((i,u)=>{let l=1-o.value*o.value*(1-a*a);if(l<0)return 0;let c=Math.sqrt(l);return o.value*i-(o.value*a+c)*s.data[u]}),n.typeInfo)}return console.error(`Refract() expects vector arguments and a scalar argument. Line ${e.line}`),null}ReverseBits(e,r){return console.error(`TODO: reverseBits. Line ${e.line}`),null}Round(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof m)return new m(n.data.map(o=>Math.round(o)),n.typeInfo);let s=n;return new y(Math.round(s.value),n.typeInfo)}Saturate(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof m)return new m(n.data.map(o=>Math.min(Math.max(o,0),1)),n.typeInfo);let s=n;return new y(Math.min(Math.max(s.value,0),1),n.typeInfo)}Sign(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof m)return new m(n.data.map(o=>Math.sign(o)),n.typeInfo);let s=n;return new y(Math.sign(s.value),n.typeInfo)}Sin(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof m)return new m(n.data.map(o=>Math.sin(o)),n.typeInfo);let s=n;return new y(Math.sin(s.value),n.typeInfo)}Sinh(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof m)return new m(n.data.map(o=>Math.sinh(o)),n.typeInfo);let s=n;return new y(Math.sinh(s.value),n.typeInfo)}_smoothstep(e,r,n){let s=Math.min(Math.max((n-e)/(r-e),0),1);return s*s*(3-2*s)}SmoothStep(e,r){let n=this.exec.evalExpression(e.args[0],r),s=this.exec.evalExpression(e.args[1],r),o=this.exec.evalExpression(e.args[2],r);if(o instanceof m&&n instanceof m&&s instanceof m)return new m(o.data.map((l,c)=>this._smoothstep(n.data[c],s.data[c],l)),o.typeInfo);let a=n,i=s,u=o;return new y(this._smoothstep(a.value,i.value,u.value),o.typeInfo)}Sqrt(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof m)return new m(n.data.map(o=>Math.sqrt(o)),n.typeInfo);let s=n;return new y(Math.sqrt(s.value),n.typeInfo)}Step(e,r){let n=this.exec.evalExpression(e.args[0],r),s=this.exec.evalExpression(e.args[1],r);if(s instanceof m&&n instanceof m)return new m(s.data.map((a,i)=>a<n.data[i]?0:1),s.typeInfo);let o=n;return new y(s.value<o.value?0:1,o.typeInfo)}Tan(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof m)return new m(n.data.map(o=>Math.tan(o)),n.typeInfo);let s=n;return new y(Math.tan(s.value),n.typeInfo)}Tanh(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof m)return new m(n.data.map(o=>Math.tanh(o)),n.typeInfo);let s=n;return new y(Math.tanh(s.value),n.typeInfo)}_getTransposeType(e){let r=e.getTypeName();return r==="mat2x2f"||r==="mat2x2h"?e:r==="mat2x3f"?this.getTypeInfo("mat3x2f"):r==="mat2x3h"?this.getTypeInfo("mat3x2h"):r==="mat2x4f"?this.getTypeInfo("mat4x2f"):r==="mat2x4h"?this.getTypeInfo("mat4x2h"):r==="mat3x2f"?this.getTypeInfo("mat2x3f"):r==="mat3x2h"?this.getTypeInfo("mat2x3h"):r==="mat3x3f"||r==="mat3x3h"?e:r==="mat3x4f"?this.getTypeInfo("mat4x3f"):r==="mat3x4h"?this.getTypeInfo("mat4x3h"):r==="mat4x2f"?this.getTypeInfo("mat2x4f"):r==="mat4x2h"?this.getTypeInfo("mat2x4h"):r==="mat4x3f"?this.getTypeInfo("mat3x4f"):r==="mat4x3h"?this.getTypeInfo("mat3x4h"):(r==="mat4x4f"||r==="mat4x4h"||console.error(`Invalid matrix type ${r}`),e)}Transpose(e,r){let n=this.exec.evalExpression(e.args[0],r);if(!(n instanceof H))return console.error(`Transpose() expects a matrix argument. Line ${e.line}`),null;let s=this._getTransposeType(n.typeInfo);if(n.typeInfo.name==="mat2x2"||n.typeInfo.name==="mat2x2f"||n.typeInfo.name==="mat2x2h"){let o=n.data;return new H([o[0],o[2],o[1],o[3]],s)}if(n.typeInfo.name==="mat2x3"||n.typeInfo.name==="mat2x3f"||n.typeInfo.name==="mat2x3h"){let o=n.data;return new H([o[0],o[3],o[6],o[1],o[4],o[7]],s)}if(n.typeInfo.name==="mat2x4"||n.typeInfo.name==="mat2x4f"||n.typeInfo.name==="mat2x4h"){let o=n.data;return new H([o[0],o[4],o[8],o[12],o[1],o[5],o[9],o[13]],s)}if(n.typeInfo.name==="mat3x2"||n.typeInfo.name==="mat3x2f"||n.typeInfo.name==="mat3x2h"){let o=n.data;return new H([o[0],o[3],o[1],o[4],o[2],o[5]],s)}if(n.typeInfo.name==="mat3x3"||n.typeInfo.name==="mat3x3f"||n.typeInfo.name==="mat3x3h"){let o=n.data;return new H([o[0],o[3],o[6],o[1],o[4],o[7],o[2],o[5],o[8]],s)}if(n.typeInfo.name==="mat3x4"||n.typeInfo.name==="mat3x4f"||n.typeInfo.name==="mat3x4h"){let o=n.data;return new H([o[0],o[4],o[8],o[12],o[1],o[5],o[9],o[13],o[2],o[6],o[10],o[14]],s)}if(n.typeInfo.name==="mat4x2"||n.typeInfo.name==="mat4x2f"||n.typeInfo.name==="mat4x2h"){let o=n.data;return new H([o[0],o[4],o[1],o[5],o[2],o[6]],s)}if(n.typeInfo.name==="mat4x3"||n.typeInfo.name==="mat4x3f"||n.typeInfo.name==="mat4x3h"){let o=n.data;return new H([o[0],o[4],o[8],o[1],o[5],o[9],o[2],o[6],o[10]],s)}if(n.typeInfo.name==="mat4x4"||n.typeInfo.name==="mat4x4f"||n.typeInfo.name==="mat4x4h"){let o=n.data;return new H([o[0],o[4],o[8],o[12],o[1],o[5],o[9],o[13],o[2],o[6],o[10],o[14],o[3],o[7],o[11],o[15]],s)}return console.error(`Invalid matrix type ${n.typeInfo.name}`),null}Trunc(e,r){let n=this.exec.evalExpression(e.args[0],r);if(n instanceof m)return new m(n.data.map(o=>Math.trunc(o)),n.typeInfo);let s=n;return new y(Math.trunc(s.value),n.typeInfo)}Dpdx(e,r){return console.error(`TODO: dpdx. Line ${e.line}`),null}DpdxCoarse(e,r){return console.error(`TODO: dpdxCoarse. Line ${e.line}`),null}DpdxFine(e,r){return console.error("TODO: dpdxFine"),null}Dpdy(e,r){return console.error("TODO: dpdy"),null}DpdyCoarse(e,r){return console.error("TODO: dpdyCoarse"),null}DpdyFine(e,r){return console.error("TODO: dpdyFine"),null}Fwidth(e,r){return console.error("TODO: fwidth"),null}FwidthCoarse(e,r){return console.error("TODO: fwidthCoarse"),null}FwidthFine(e,r){return console.error("TODO: fwidthFine"),null}TextureDimensions(e,r){let n=e.args[0],s=e.args.length>1?this.exec.evalExpression(e.args[1],r).value:0;if(n instanceof We){let o=n.name,a=r.getVariableValue(o);if(a instanceof ir){if(s<0||s>=a.mipLevelCount)return console.error(`Invalid mip level for textureDimensions. Line ${e.line}`),null;let i=a.getMipLevelSize(s),u=a.dimension;return u==="1d"?new y(i[0],this.getTypeInfo("u32")):u==="3d"?new m(i,this.getTypeInfo("vec3u")):u==="2d"?new m(i.slice(0,2),this.getTypeInfo("vec2u")):(console.error(`Invalid texture dimension ${u} not found. Line ${e.line}`),null)}return console.error(`Texture ${o} not found. Line ${e.line}`),null}return console.error(`Invalid texture argument for textureDimensions. Line ${e.line}`),null}TextureGather(e,r){return console.error("TODO: textureGather"),null}TextureGatherCompare(e,r){return console.error("TODO: textureGatherCompare"),null}TextureLoad(e,r){let n=e.args[0],s=this.exec.evalExpression(e.args[1],r);if(!(s instanceof m)||s.data.length!==2)return console.error(`Invalid UV argument for textureLoad. Line ${e.line}`),null;if(n instanceof We){let o=n.name,a=r.getVariableValue(o);if(a instanceof ir){let i=0,u=0;["texture_storage_2d_array","texture_2d_array","texture_depth_2d_array"].indexOf(a.typeInfo.name)>-1&&(i=this.exec.evalExpression(e.args[2],r).value),["texture_1d","texture_2d","texture_depth_2d","texture_3d"].indexOf(a.typeInfo.name)>-1&&(u=this.exec.evalExpression(e.args[2],r).value),["texture_2d_array","texture_depth_2d_array"].indexOf(a.typeInfo.name)>-1&&(u=this.exec.evalExpression(e.args[3],r).value);let l=Math.floor(s.data[0]),c=Math.floor(s.data[1]),f=Math.floor(i),d=Math.floor(u);if(l<0||l>=a.width||c<0||c>=a.height)return console.error(`Texture ${o} out of bounds. Line ${e.line}`),null;let p=a.getPixel(l,c,f,d);return p===null?(console.error(`Invalid texture format for textureLoad. Line ${e.line}`),null):new m(p,this.getTypeInfo("vec4f"))}return console.error(`Texture ${o} not found. Line ${e.line}`),null}return console.error(`Invalid texture argument for textureLoad. Line ${e.line}`),null}TextureNumLayers(e,r){let n=e.args[0];if(n instanceof We){let s=n.name,o=r.getVariableValue(s);return o instanceof ir?new y(o.depthOrArrayLayers,this.getTypeInfo("u32")):(console.error(`Texture ${s} not found. Line ${e.line}`),null)}return console.error(`Invalid texture argument for textureNumLayers. Line ${e.line}`),null}TextureNumLevels(e,r){let n=e.args[0];if(n instanceof We){let s=n.name,o=r.getVariableValue(s);return o instanceof ir?new y(o.mipLevelCount,this.getTypeInfo("u32")):(console.error(`Texture ${s} not found. Line ${e.line}`),null)}return console.error(`Invalid texture argument for textureNumLevels. Line ${e.line}`),null}TextureNumSamples(e,r){let n=e.args[0];if(n instanceof We){let s=n.name,o=r.getVariableValue(s);return o instanceof ir?new y(o.sampleCount,this.getTypeInfo("u32")):(console.error(`Texture ${s} not found. Line ${e.line}`),null)}return console.error(`Invalid texture argument for textureNumSamples. Line ${e.line}`),null}TextureSample(e,r){return console.error("TODO: textureSample"),null}TextureSampleBias(e,r){return console.error("TODO: textureSampleBias"),null}TextureSampleCompare(e,r){return console.error("TODO: textureSampleCompare"),null}TextureSampleCompareLevel(e,r){return console.error("TODO: textureSampleCompareLevel"),null}TextureSampleGrad(e,r){return console.error("TODO: textureSampleGrad"),null}TextureSampleLevel(e,r){return console.error("TODO: textureSampleLevel"),null}TextureSampleBaseClampToEdge(e,r){return console.error("TODO: textureSampleBaseClampToEdge"),null}TextureStore(e,r){let n=e.args[0],s=this.exec.evalExpression(e.args[1],r),o=e.args.length===4?this.exec.evalExpression(e.args[2],r).value:0,a=e.args.length===4?this.exec.evalExpression(e.args[3],r).data:this.exec.evalExpression(e.args[2],r).data;if(a.length!==4)return console.error(`Invalid value argument for textureStore. Line ${e.line}`),null;if(!(s instanceof m)||s.data.length!==2)return console.error(`Invalid UV argument for textureStore. Line ${e.line}`),null;if(n instanceof We){let i=n.name,u=r.getVariableValue(i);if(u instanceof ir){let l=u.getMipLevelSize(0),c=Math.floor(s.data[0]),f=Math.floor(s.data[1]);return c<0||c>=l[0]||f<0||f>=l[1]?(console.error(`Texture ${i} out of bounds. Line ${e.line}`),null):(u.setPixel(c,f,0,o,Array.from(a)),null)}return console.error(`Texture ${i} not found. Line ${e.line}`),null}return console.error(`Invalid texture argument for textureStore. Line ${e.line}`),null}AtomicLoad(e,r){let n=e.args[0];n instanceof Ae&&(n=n.right);let s=this.exec.getVariableName(n,r);return r.getVariable(s).value.getSubData(this.exec,n.postfix,r)}AtomicStore(e,r){let n=e.args[0];n instanceof Ae&&(n=n.right);let s=this.exec.getVariableName(n,r),o=r.getVariable(s),a=e.args[1],i=this.exec.evalExpression(a,r),u=o.value.getSubData(this.exec,n.postfix,r);return u instanceof y&&i instanceof y&&(u.value=i.value),o.value instanceof Re&&o.value.setDataValue(this.exec,u,n.postfix,r),null}AtomicAdd(e,r){let n=e.args[0];n instanceof Ae&&(n=n.right);let s=this.exec.getVariableName(n,r),o=r.getVariable(s),a=e.args[1],i=this.exec.evalExpression(a,r),u=o.value.getSubData(this.exec,n.postfix,r),l=new y(u.value,u.typeInfo);return u instanceof y&&i instanceof y&&(u.value+=i.value),o.value instanceof Re&&o.value.setDataValue(this.exec,u,n.postfix,r),l}AtomicSub(e,r){let n=e.args[0];n instanceof Ae&&(n=n.right);let s=this.exec.getVariableName(n,r),o=r.getVariable(s),a=e.args[1],i=this.exec.evalExpression(a,r),u=o.value.getSubData(this.exec,n.postfix,r),l=new y(u.value,u.typeInfo);return u instanceof y&&i instanceof y&&(u.value-=i.value),o.value instanceof Re&&o.value.setDataValue(this.exec,u,n.postfix,r),l}AtomicMax(e,r){let n=e.args[0];n instanceof Ae&&(n=n.right);let s=this.exec.getVariableName(n,r),o=r.getVariable(s),a=e.args[1],i=this.exec.evalExpression(a,r),u=o.value.getSubData(this.exec,n.postfix,r),l=new y(u.value,u.typeInfo);return u instanceof y&&i instanceof y&&(u.value=Math.max(u.value,i.value)),o.value instanceof Re&&o.value.setDataValue(this.exec,u,n.postfix,r),l}AtomicMin(e,r){let n=e.args[0];n instanceof Ae&&(n=n.right);let s=this.exec.getVariableName(n,r),o=r.getVariable(s),a=e.args[1],i=this.exec.evalExpression(a,r),u=o.value.getSubData(this.exec,n.postfix,r),l=new y(u.value,u.typeInfo);return u instanceof y&&i instanceof y&&(u.value=Math.min(u.value,i.value)),o.value instanceof Re&&o.value.setDataValue(this.exec,u,n.postfix,r),l}AtomicAnd(e,r){let n=e.args[0];n instanceof Ae&&(n=n.right);let s=this.exec.getVariableName(n,r),o=r.getVariable(s),a=e.args[1],i=this.exec.evalExpression(a,r),u=o.value.getSubData(this.exec,n.postfix,r),l=new y(u.value,u.typeInfo);return u instanceof y&&i instanceof y&&(u.value=u.value&i.value),o.value instanceof Re&&o.value.setDataValue(this.exec,u,n.postfix,r),l}AtomicOr(e,r){let n=e.args[0];n instanceof Ae&&(n=n.right);let s=this.exec.getVariableName(n,r),o=r.getVariable(s),a=e.args[1],i=this.exec.evalExpression(a,r),u=o.value.getSubData(this.exec,n.postfix,r),l=new y(u.value,u.typeInfo);return u instanceof y&&i instanceof y&&(u.value=u.value|i.value),o.value instanceof Re&&o.value.setDataValue(this.exec,u,n.postfix,r),l}AtomicXor(e,r){let n=e.args[0];n instanceof Ae&&(n=n.right);let s=this.exec.getVariableName(n,r),o=r.getVariable(s),a=e.args[1],i=this.exec.evalExpression(a,r),u=o.value.getSubData(this.exec,n.postfix,r),l=new y(u.value,u.typeInfo);return u instanceof y&&i instanceof y&&(u.value=u.value^i.value),o.value instanceof Re&&o.value.setDataValue(this.exec,u,n.postfix,r),l}AtomicExchange(e,r){let n=e.args[0];n instanceof Ae&&(n=n.right);let s=this.exec.getVariableName(n,r),o=r.getVariable(s),a=e.args[1],i=this.exec.evalExpression(a,r),u=o.value.getSubData(this.exec,n.postfix,r),l=new y(u.value,u.typeInfo);return u instanceof y&&i instanceof y&&(u.value=i.value),o.value instanceof Re&&o.value.setDataValue(this.exec,u,n.postfix,r),l}AtomicCompareExchangeWeak(e,r){return console.error("TODO: atomicCompareExchangeWeak"),null}Pack4x8snorm(e,r){return console.error("TODO: pack4x8snorm"),null}Pack4x8unorm(e,r){return console.error("TODO: pack4x8unorm"),null}Pack4xI8(e,r){return console.error("TODO: pack4xI8"),null}Pack4xU8(e,r){return console.error("TODO: pack4xU8"),null}Pack4x8Clamp(e,r){return console.error("TODO: pack4x8Clamp"),null}Pack4xU8Clamp(e,r){return console.error("TODO: pack4xU8Clamp"),null}Pack2x16snorm(e,r){return console.error("TODO: pack2x16snorm"),null}Pack2x16unorm(e,r){return console.error("TODO: pack2x16unorm"),null}Pack2x16float(e,r){return console.error("TODO: pack2x16float"),null}Unpack4x8snorm(e,r){return console.error("TODO: unpack4x8snorm"),null}Unpack4x8unorm(e,r){return console.error("TODO: unpack4x8unorm"),null}Unpack4xI8(e,r){return console.error("TODO: unpack4xI8"),null}Unpack4xU8(e,r){return console.error("TODO: unpack4xU8"),null}Unpack2x16snorm(e,r){return console.error("TODO: unpack2x16snorm"),null}Unpack2x16unorm(e,r){return console.error("TODO: unpack2x16unorm"),null}Unpack2x16float(e,r){return console.error("TODO: unpack2x16float"),null}StorageBarrier(e,r){return null}TextureBarrier(e,r){return null}WorkgroupBarrier(e,r){return null}WorkgroupUniformLoad(e,r){return null}SubgroupAdd(e,r){return console.error("TODO: subgroupAdd"),null}SubgroupExclusiveAdd(e,r){return console.error("TODO: subgroupExclusiveAdd"),null}SubgroupInclusiveAdd(e,r){return console.error("TODO: subgroupInclusiveAdd"),null}SubgroupAll(e,r){return console.error("TODO: subgroupAll"),null}SubgroupAnd(e,r){return console.error("TODO: subgroupAnd"),null}SubgroupAny(e,r){return console.error("TODO: subgroupAny"),null}SubgroupBallot(e,r){return console.error("TODO: subgroupBallot"),null}SubgroupBroadcast(e,r){return console.error("TODO: subgroupBroadcast"),null}SubgroupBroadcastFirst(e,r){return console.error("TODO: subgroupBroadcastFirst"),null}SubgroupElect(e,r){return console.error("TODO: subgroupElect"),null}SubgroupMax(e,r){return console.error("TODO: subgroupMax"),null}SubgroupMin(e,r){return console.error("TODO: subgroupMin"),null}SubgroupMul(e,r){return console.error("TODO: subgroupMul"),null}SubgroupExclusiveMul(e,r){return console.error("TODO: subgroupExclusiveMul"),null}SubgroupInclusiveMul(e,r){return console.error("TODO: subgroupInclusiveMul"),null}SubgroupOr(e,r){return console.error("TODO: subgroupOr"),null}SubgroupShuffle(e,r){return console.error("TODO: subgroupShuffle"),null}SubgroupShuffleDown(e,r){return console.error("TODO: subgroupShuffleDown"),null}SubgroupShuffleUp(e,r){return console.error("TODO: subgroupShuffleUp"),null}SubgroupShuffleXor(e,r){return console.error("TODO: subgroupShuffleXor"),null}SubgroupXor(e,r){return console.error("TODO: subgroupXor"),null}QuadBroadcast(e,r){return console.error("TODO: quadBroadcast"),null}QuadSwapDiagonal(e,r){return console.error("TODO: quadSwapDiagonal"),null}QuadSwapX(e,r){return console.error("TODO: quadSwapX"),null}QuadSwapY(e,r){return console.error("TODO: quadSwapY"),null}},Ui={vec2:2,vec2f:2,vec2i:2,vec2u:2,vec2b:2,vec2h:2,vec3:3,vec3f:3,vec3i:3,vec3u:3,vec3b:3,vec3h:3,vec4:4,vec4f:4,vec4i:4,vec4u:4,vec4b:4,vec4h:4},et={mat2x2:[2,2,4],mat2x2f:[2,2,4],mat2x2h:[2,2,4],mat2x3:[2,3,6],mat2x3f:[2,3,6],mat2x3h:[2,3,6],mat2x4:[2,4,8],mat2x4f:[2,4,8],mat2x4h:[2,4,8],mat3x2:[3,2,6],mat3x2f:[3,2,6],mat3x2h:[3,2,6],mat3x3:[3,3,9],mat3x3f:[3,3,9],mat3x3h:[3,3,9],mat3x4:[3,4,12],mat3x4f:[3,4,12],mat3x4h:[3,4,12],mat4x2:[4,2,8],mat4x2f:[4,2,8],mat4x2h:[4,2,8],mat4x3:[4,3,12],mat4x3f:[4,3,12],mat4x3h:[4,3,12],mat4x4:[4,4,16],mat4x4f:[4,4,16],mat4x4h:[4,4,16]},pt=class t extends Ji{constructor(e,r){var n;super(),this.ast=e??[],this.reflection=new Gr,this.reflection.updateAST(this.ast),this.context=(n=r?.clone())!==null&&n!==void 0?n:new Zi,this.builtins=new Qi(this),this.typeInfo={bool:this.getTypeInfo(R.bool),i32:this.getTypeInfo(R.i32),u32:this.getTypeInfo(R.u32),f32:this.getTypeInfo(R.f32),f16:this.getTypeInfo(R.f16),vec2f:this.getTypeInfo(_.vec2f),vec2u:this.getTypeInfo(_.vec2u),vec2i:this.getTypeInfo(_.vec2i),vec2h:this.getTypeInfo(_.vec2h),vec3f:this.getTypeInfo(_.vec3f),vec3u:this.getTypeInfo(_.vec3u),vec3i:this.getTypeInfo(_.vec3i),vec3h:this.getTypeInfo(_.vec3h),vec4f:this.getTypeInfo(_.vec4f),vec4u:this.getTypeInfo(_.vec4u),vec4i:this.getTypeInfo(_.vec4i),vec4h:this.getTypeInfo(_.vec4h),mat2x2f:this.getTypeInfo(_.mat2x2f),mat2x3f:this.getTypeInfo(_.mat2x3f),mat2x4f:this.getTypeInfo(_.mat2x4f),mat3x2f:this.getTypeInfo(_.mat3x2f),mat3x3f:this.getTypeInfo(_.mat3x3f),mat3x4f:this.getTypeInfo(_.mat3x4f),mat4x2f:this.getTypeInfo(_.mat4x2f),mat4x3f:this.getTypeInfo(_.mat4x3f),mat4x4f:this.getTypeInfo(_.mat4x4f)}}getVariableValue(e){var r,n;let s=(n=(r=this.context.getVariable(e))===null||r===void 0?void 0:r.value)!==null&&n!==void 0?n:null;if(s===null)return null;if(s instanceof y)return s.value;if(s instanceof m||s instanceof H)return Array.from(s.data);if(s instanceof Re&&s.typeInfo instanceof Zt){if(s.typeInfo.format.name==="u32")return Array.from(new Uint32Array(s.buffer,s.offset,s.typeInfo.count));if(s.typeInfo.format.name==="i32")return Array.from(new Int32Array(s.buffer,s.offset,s.typeInfo.count));if(s.typeInfo.format.name==="f32")return Array.from(new Float32Array(s.buffer,s.offset,s.typeInfo.count))}return console.error(`Unsupported return variable type ${s.typeInfo.name}`),null}execute(e){(e=e??{}).constants&&this._setOverrides(e.constants,this.context),this._execStatements(this.ast,this.context)}dispatchWorkgroups(e,r,n,s){let o=this.context.clone();(s=s??{}).constants&&this._setOverrides(s.constants,o),this._execStatements(this.ast,o);let a=o.getFunction(e);if(!a)return void console.error(`Function ${e} not found`);if(typeof r=="number")r=[r,1,1];else{if(r.length===0)return void console.error("Invalid dispatch count");r.length===1?r=[r[0],1,1]:r.length===2?r=[r[0],r[1],1]:r.length>3&&(r=[r[0],r[1],r[2]])}let i=r[0],u=r[1],l=r[2],c=this.getTypeInfo("vec3u");o.setVariable("@num_workgroups",new m(r,c));let f=this.reflection.getFunctionInfo(e);f===null&&console.error(`Function ${e} not found in reflection data`);for(let d in n)for(let p in n[d]){let v=n[d][p];o.variables.forEach(A=>{var w;let S=A.node;if(S?.attributes){let k=null,E=null;for(let I of S.attributes)I.name==="binding"?k=I.value:I.name==="group"&&(E=I.value);if(p===k&&d===E){let I=!1;for(let C of f.resources)if(C.name===A.name&&C.group===parseInt(d)&&C.binding===parseInt(p)){I=!0;break}if(I)if(v.texture!==void 0&&v.descriptor!==void 0){let C=new ir(v.texture,this.getTypeInfo(S.type),v.descriptor,(w=v.texture.view)!==null&&w!==void 0?w:null);A.value=C}else v.uniform!==void 0?A.value=new Re(v.uniform,this.getTypeInfo(S.type)):A.value=new Re(v,this.getTypeInfo(S.type))}}})}for(let d=0;d<l;++d)for(let p=0;p<u;++p)for(let v=0;v<i;++v)o.setVariable("@workgroup_id",new m([v,p,d],this.getTypeInfo("vec3u"))),this._dispatchWorkgroup(a,[v,p,d],o)}execStatement(e,r){if(e instanceof xo)return this.evalExpression(e.value,r);if(e instanceof _o){if(e.condition){let n=this.evalExpression(e.condition,r);if(!(n instanceof y))throw new Error("Invalid break-if condition");if(!n.value)return null}return t._breakObj}if(e instanceof bo)return t._continueObj;if(e instanceof Mr)this._let(e,r);else if(e instanceof It)this._var(e,r);else if(e instanceof _n)this._const(e,r);else if(e instanceof Qn)this._override(e,r);else if(e instanceof Vr)this._function(e,r);else{if(e instanceof go)return this._if(e,r);if(e instanceof po)return this._switch(e,r);if(e instanceof lo)return this._for(e,r);if(e instanceof co)return this._while(e,r);if(e instanceof mo)return this._loop(e,r);if(e instanceof Jn){let n=r.clone();return n.currentFunctionName=r.currentFunctionName,this._execStatements(e.body,n)}if(e instanceof ho)this._assign(e,r);else if(e instanceof fo)this._increment(e,r);else{if(e instanceof Nt)return null;if(e instanceof es)this._call(e,r);else{if(e instanceof yo||e instanceof ts)return null;console.error("Invalid statement type.",e,`Line ${e.line}`)}}}return null}evalExpression(e,r){return e instanceof mt?this._evalBinaryOp(e,r):e instanceof Be?this._evalLiteral(e,r):e instanceof We?this._evalVariable(e,r):e instanceof rs?this._evalCall(e,r):e instanceof Rt?this._evalCreate(e,r):e instanceof wo?this._evalConst(e,r):e instanceof To?this._evalBitcast(e,r):e instanceof Ae?this._evalUnaryOp(e,r):(console.error("Invalid expression type",e,`Line ${e.line}`),null)}getTypeInfo(e){var r;if(e instanceof R){let s=this.reflection.getTypeInfo(e);if(s!==null)return s}let n=(r=this.typeInfo[e])!==null&&r!==void 0?r:null;return n!==null||(n=this.reflection.getTypeInfoByName(e)),n}_setOverrides(e,r){for(let n in e){let s=e[n],o=this.reflection.getOverrideInfo(n);o!==null?(o.type===null&&(o.type=this.getTypeInfo("u32")),t._numericScalarTypes.has(o.type.name)?r.setVariable(n,new y(s,o.type)):t._vectorTypes.has(o.type.name)?r.setVariable(n,new m(s,o.type)):console.error(`Invalid constant type for ${n}`)):console.error(`Override ${n} does not exist in the shader.`)}}_dispatchWorkgroup(e,r,n){let s=[1,1,1];for(let c of e.node.attributes)if(c.name==="workgroup_size"){if(c.value.length>0){let f=n.getVariableValue(c.value[0]);s[0]=f instanceof y?f.value:parseInt(c.value[0])}if(c.value.length>1){let f=n.getVariableValue(c.value[1]);s[1]=f instanceof y?f.value:parseInt(c.value[1])}if(c.value.length>2){let f=n.getVariableValue(c.value[2]);s[2]=f instanceof y?f.value:parseInt(c.value[2])}}let o=this.getTypeInfo("vec3u"),a=this.getTypeInfo("u32");n.setVariable("@workgroup_size",new m(s,o));let i=s[0],u=s[1],l=s[2];for(let c=0,f=0;c<l;++c)for(let d=0;d<u;++d)for(let p=0;p<i;++p,++f){let v=[p,d,c],A=[p+r[0]*s[0],d+r[1]*s[1],c+r[2]*s[2]];n.setVariable("@local_invocation_id",new m(v,o)),n.setVariable("@global_invocation_id",new m(A,o)),n.setVariable("@local_invocation_index",new y(f,a)),this._dispatchExec(e,n)}}_dispatchExec(e,r){for(let n of e.node.args)for(let s of n.attributes)if(s.name==="builtin"){let o=`@${s.value}`,a=r.getVariable(o);a!==void 0&&r.variables.set(n.name,a)}this._execStatements(e.node.body,r)}getVariableName(e,r){for(;e instanceof Ae;)e=e.right;return e instanceof We?e.name:(console.error("Unknown variable type",e,"Line",e.line),null)}_execStatements(e,r){for(let n of e){if(Array.isArray(n)){let o=r.clone(),a=this._execStatements(n,o);if(a)return a;continue}let s=this.execStatement(n,r);if(s)return s}return null}_call(e,r){let n=r.clone();n.currentFunctionName=e.name;let s=r.getFunction(e.name);if(s){for(let o=0;o<s.node.args.length;++o){let a=s.node.args[o],i=this.evalExpression(e.args[o],n);n.setVariable(a.name,i,a)}this._execStatements(s.node.body,n)}else e.isBuiltin?this._callBuiltinFunction(e,n):this.getTypeInfo(e.name)&&this._evalCreate(e,r)}_increment(e,r){let n=this.getVariableName(e.variable,r),s=r.getVariable(n);s?e.operator==="++"?s.value instanceof y?s.value.value++:console.error(`Variable ${n} is not a scalar. Line ${e.line}`):e.operator==="--"?s.value instanceof y?s.value.value--:console.error(`Variable ${n} is not a scalar. Line ${e.line}`):console.error(`Unknown increment operator ${e.operator}. Line ${e.line}`):console.error(`Variable ${n} not found. Line ${e.line}`)}_getVariableData(e,r){if(e instanceof We){let n=this.getVariableName(e,r),s=r.getVariable(n);return s===null?(console.error(`Variable ${n} not found. Line ${e.line}`),null):s.value.getSubData(this,e.postfix,r)}if(e instanceof Ae){if(e.operator==="*"){let n=this._getVariableData(e.right,r);return n instanceof Er?n.reference.getSubData(this,e.postfix,r):(console.error(`Variable ${e.right} is not a pointer. Line ${e.line}`),null)}if(e.operator==="&"){let n=this._getVariableData(e.right,r);return new Er(n)}}return null}_assign(e,r){let n=null,s="<var>",o=null;if(e.variable instanceof Ae){let u=this._getVariableData(e.variable,r),l=this.evalExpression(e.value,r),c=e.operator;if(c==="="){if(u instanceof y||u instanceof m||u instanceof H){if(l instanceof y||l instanceof m||l instanceof H&&u.data.length===l.data.length)return void u.data.set(l.data);console.error(`Invalid assignment. Line ${e.line}`)}else if(u instanceof Re&&l instanceof Re&&u.buffer.byteLength-u.offset>=l.buffer.byteLength-l.offset)return void(u.buffer.byteLength%4==0?new Uint32Array(u.buffer,u.offset,u.typeInfo.size/4).set(new Uint32Array(l.buffer,l.offset,l.typeInfo.size/4)):new Uint8Array(u.buffer,u.offset,u.typeInfo.size).set(new Uint8Array(l.buffer,l.offset,l.typeInfo.size)));return console.error(`Invalid assignment. Line ${e.line}`),null}if(c==="+=")return u instanceof y||u instanceof m||u instanceof H?l instanceof y||l instanceof m||l instanceof H?void u.data.set(l.data.map((f,d)=>u.data[d]+f)):void console.error(`Invalid assignment . Line ${e.line}`):void console.error(`Invalid assignment. Line ${e.line}`);if(c==="-=")return(u instanceof y||u instanceof m||u instanceof H)&&(l instanceof y||l instanceof m||l instanceof H)?void u.data.set(l.data.map((f,d)=>u.data[d]-f)):void console.error(`Invalid assignment. Line ${e.line}`)}if(e.variable instanceof Ae){if(e.variable.operator==="*"){s=this.getVariableName(e.variable.right,r);let u=r.getVariable(s);if(!(u&&u.value instanceof Er))return void console.error(`Variable ${s} is not a pointer. Line ${e.line}`);n=u.value.reference;let l=e.variable.postfix;if(!l){let c=e.variable.right;for(;c instanceof Ae;){if(c.postfix){l=c.postfix;break}c=c.right}}l&&(n=n.getSubData(this,l,r))}}else{o=e.variable.postfix,s=this.getVariableName(e.variable,r);let u=r.getVariable(s);if(u===null)return void console.error(`Variable ${s} not found. Line ${e.line}`);n=u.value}if(n instanceof Er&&(n=n.reference),n===null)return void console.error(`Variable ${s} not found. Line ${e.line}`);let a=this.evalExpression(e.value,r),i=e.operator;if(i!=="="){let u=n.getSubData(this,o,r);if(u instanceof m&&a instanceof y){let l=u.data,c=a.value;if(i==="+=")for(let f=0;f<l.length;++f)l[f]+=c;else if(i==="-=")for(let f=0;f<l.length;++f)l[f]-=c;else if(i==="*=")for(let f=0;f<l.length;++f)l[f]*=c;else if(i==="/=")for(let f=0;f<l.length;++f)l[f]/=c;else if(i==="%=")for(let f=0;f<l.length;++f)l[f]%=c;else if(i==="&=")for(let f=0;f<l.length;++f)l[f]&=c;else if(i==="|=")for(let f=0;f<l.length;++f)l[f]|=c;else if(i==="^=")for(let f=0;f<l.length;++f)l[f]^=c;else if(i==="<<=")for(let f=0;f<l.length;++f)l[f]<<=c;else if(i===">>=")for(let f=0;f<l.length;++f)l[f]>>=c;else console.error(`Invalid operator ${i}. Line ${e.line}`)}else if(u instanceof m&&a instanceof m){let l=u.data,c=a.data;if(l.length!==c.length)return void console.error(`Vector length mismatch. Line ${e.line}`);if(i==="+=")for(let f=0;f<l.length;++f)l[f]+=c[f];else if(i==="-=")for(let f=0;f<l.length;++f)l[f]-=c[f];else if(i==="*=")for(let f=0;f<l.length;++f)l[f]*=c[f];else if(i==="/=")for(let f=0;f<l.length;++f)l[f]/=c[f];else if(i==="%=")for(let f=0;f<l.length;++f)l[f]%=c[f];else if(i==="&=")for(let f=0;f<l.length;++f)l[f]&=c[f];else if(i==="|=")for(let f=0;f<l.length;++f)l[f]|=c[f];else if(i==="^=")for(let f=0;f<l.length;++f)l[f]^=c[f];else if(i==="<<=")for(let f=0;f<l.length;++f)l[f]<<=c[f];else if(i===">>=")for(let f=0;f<l.length;++f)l[f]>>=c[f];else console.error(`Invalid operator ${i}. Line ${e.line}`)}else{if(!(u instanceof y&&a instanceof y))return void console.error(`Invalid type for ${e.operator} operator. Line ${e.line}`);i==="+="?u.value+=a.value:i==="-="?u.value-=a.value:i==="*="?u.value*=a.value:i==="/="?u.value/=a.value:i==="%="?u.value%=a.value:i==="&="?u.value&=a.value:i==="|="?u.value|=a.value:i==="^="?u.value^=a.value:i==="<<="?u.value<<=a.value:i===">>="?u.value>>=a.value:console.error(`Invalid operator ${i}. Line ${e.line}`)}return void(n instanceof Re&&n.setDataValue(this,u,o,r))}if(n instanceof Re)n.setDataValue(this,a,o,r);else if(o){if(!(n instanceof m||n instanceof H))return void console.error(`Variable ${s} is not a vector or matrix. Line ${e.line}`);if(o instanceof Ar){let u=this.evalExpression(o.index,r).value;if(n instanceof m){if(!(a instanceof y))return void console.error(`Invalid assignment to ${s}. Line ${e.line}`);n.data[u]=a.value}else{if(!(n instanceof H))return void console.error(`Invalid assignment to ${s}. Line ${e.line}`);{let l=this.evalExpression(o.index,r).value;if(l<0)return void console.error(`Invalid assignment to ${s}. Line ${e.line}`);if(!(a instanceof m))return void console.error(`Invalid assignment to ${s}. Line ${e.line}`);{let c=n.typeInfo.getTypeName();if(c==="mat2x2"||c==="mat2x2f"||c==="mat2x2h"){if(!(l<2&&a.data.length===2))return void console.error(`Invalid assignment to ${s}. Line ${e.line}`);n.data[2*l]=a.data[0],n.data[2*l+1]=a.data[1]}else if(c==="mat2x3"||c==="mat2x3f"||c==="mat2x3h"){if(!(l<2&&a.data.length===3))return void console.error(`Invalid assignment to ${s}. Line ${e.line}`);n.data[3*l]=a.data[0],n.data[3*l+1]=a.data[1],n.data[3*l+2]=a.data[2]}else if(c==="mat2x4"||c==="mat2x4f"||c==="mat2x4h"){if(!(l<2&&a.data.length===4))return void console.error(`Invalid assignment to ${s}. Line ${e.line}`);n.data[4*l]=a.data[0],n.data[4*l+1]=a.data[1],n.data[4*l+2]=a.data[2],n.data[4*l+3]=a.data[3]}else if(c==="mat3x2"||c==="mat3x2f"||c==="mat3x2h"){if(!(l<3&&a.data.length===2))return void console.error(`Invalid assignment to ${s}. Line ${e.line}`);n.data[2*l]=a.data[0],n.data[2*l+1]=a.data[1]}else if(c==="mat3x3"||c==="mat3x3f"||c==="mat3x3h"){if(!(l<3&&a.data.length===3))return void console.error(`Invalid assignment to ${s}. Line ${e.line}`);n.data[3*l]=a.data[0],n.data[3*l+1]=a.data[1],n.data[3*l+2]=a.data[2]}else if(c==="mat3x4"||c==="mat3x4f"||c==="mat3x4h"){if(!(l<3&&a.data.length===4))return void console.error(`Invalid assignment to ${s}. Line ${e.line}`);n.data[4*l]=a.data[0],n.data[4*l+1]=a.data[1],n.data[4*l+2]=a.data[2],n.data[4*l+3]=a.data[3]}else if(c==="mat4x2"||c==="mat4x2f"||c==="mat4x2h"){if(!(l<4&&a.data.length===2))return void console.error(`Invalid assignment to ${s}. Line ${e.line}`);n.data[2*l]=a.data[0],n.data[2*l+1]=a.data[1]}else if(c==="mat4x3"||c==="mat4x3f"||c==="mat4x3h"){if(!(l<4&&a.data.length===3))return void console.error(`Invalid assignment to ${s}. Line ${e.line}`);n.data[3*l]=a.data[0],n.data[3*l+1]=a.data[1],n.data[3*l+2]=a.data[2]}else{if(c!=="mat4x4"&&c!=="mat4x4f"&&c!=="mat4x4h")return void console.error(`Invalid assignment to ${s}. Line ${e.line}`);if(!(l<4&&a.data.length===4))return void console.error(`Invalid assignment to ${s}. Line ${e.line}`);n.data[4*l]=a.data[0],n.data[4*l+1]=a.data[1],n.data[4*l+2]=a.data[2],n.data[4*l+3]=a.data[3]}}}}}else if(o instanceof cr){let u=o.value;if(!(n instanceof m))return void console.error(`Invalid assignment to ${u}. Variable ${s} is not a vector. Line ${e.line}`);if(a instanceof y){if(u.length>1)return void console.error(`Invalid assignment to ${u} for variable ${s}. Line ${e.line}`);if(u==="x")n.data[0]=a.value;else if(u==="y"){if(n.data.length<2)return void console.error(`Invalid assignment to ${u} for variable ${s}. Line ${e.line}`);n.data[1]=a.value}else if(u==="z"){if(n.data.length<3)return void console.error(`Invalid assignment to ${u} for variable ${s}. Line ${e.line}`);n.data[2]=a.value}else if(u==="w"){if(n.data.length<4)return void console.error(`Invalid assignment to ${u} for variable ${s}. Line ${e.line}`);n.data[3]=a.value}}else{if(!(a instanceof m))return void console.error(`Invalid assignment to ${s}. Line ${e.line}`);if(u.length!==a.data.length)return void console.error(`Invalid assignment to ${u} for variable ${s}. Line ${e.line}`);for(let l=0;l<u.length;++l){let c=u[l];if(c==="x"||c==="r")n.data[0]=a.data[l];else if(c==="y"||c==="g"){if(a.data.length<2)return void console.error(`Invalid assignment to ${c} for variable ${s}. Line ${e.line}`);n.data[1]=a.data[l]}else if(c==="z"||c==="b"){if(a.data.length<3)return void console.error(`Invalid assignment to ${c} for variable ${s}. Line ${e.line}`);n.data[2]=a.data[l]}else{if(c!=="w"&&c!=="a")return void console.error(`Invalid assignment to ${c} for variable ${s}. Line ${e.line}`);if(a.data.length<4)return void console.error(`Invalid assignment to ${c} for variable ${s}. Line ${e.line}`);n.data[3]=a.data[l]}}}}}else n instanceof y&&a instanceof y?n.value=a.value:n instanceof m&&a instanceof m||n instanceof H&&a instanceof H?n.data.set(a.data):console.error(`Invalid assignment to ${s}. Line ${e.line}`)}_function(e,r){let n=new Ki(e);r.functions.set(e.name,n)}_const(e,r){let n=null;e.value!==null&&(n=this.evalExpression(e.value,r)),r.createVariable(e.name,n,e)}_override(e,r){let n=r.getVariable(e.name);if(n===null||n.value===null){let s=null;e.value!==null&&(s=this.evalExpression(e.value,r)),r.createVariable(e.name,s,e)}}_let(e,r){let n=null;if(e.value!==null){if(n=this.evalExpression(e.value,r),n===null)return void console.error(`Invalid value for variable ${e.name}. Line ${e.line}`);e.value instanceof Ae||(n=n.clone())}else{let s=e.type.name;if(t._defaultableTypes.has(s)){let o=new Rt(e.type,[]);n=this._evalCreate(o,r)}}r.createVariable(e.name,n,e)}_var(e,r){let n=null;if(e.value!==null){if(n=this.evalExpression(e.value,r),n===null)return void console.error(`Invalid value for variable ${e.name}. Line ${e.line}`);e.value instanceof Ae||(n=n.clone())}else{if(e.type===null)return void console.error(`Variable ${e.name} has no type. Line ${e.line}`);let s=e.type.name;if(t._defaultableTypes.has(s)||e.type instanceof Nr||e.type instanceof Nt||e.type instanceof _){let o=new Rt(e.type,[]);n=this._evalCreate(o,r)}}r.createVariable(e.name,n,e)}_switch(e,r){r=r.clone();let n=this.evalExpression(e.condition,r);if(!(n instanceof y))return console.error(`Invalid if condition. Line ${e.line}`),null;let s=null;for(let o of e.cases)if(o instanceof Ao)for(let a of o.selectors){if(a instanceof vn){s=o;continue}let i=this.evalExpression(a,r);if(!(i instanceof y))return console.error(`Invalid case selector. Line ${e.line}`),null;if(i.value===n.value)return this._execStatements(o.body,r)}else o instanceof Ro&&(s=o);return s?this._execStatements(s.body,r):null}_if(e,r){r=r.clone();let n=this.evalExpression(e.condition,r);if(!(n instanceof y))return console.error(`Invalid if condition. Line ${e.line}`),null;if(n.value)return this._execStatements(e.body,r);for(let s of e.elseif){let o=this.evalExpression(s.condition,r);if(!(o instanceof y))return console.error(`Invalid if condition. Line ${e.line}`),null;if(o.value)return this._execStatements(s.body,r)}return e.else?this._execStatements(e.else,r):null}_getScalarValue(e){return e instanceof y?e.value:(console.error("Expected scalar value.",e),0)}_for(e,r){for(r=r.clone(),this.execStatement(e.init,r);this._getScalarValue(this.evalExpression(e.condition,r));){let n=this._execStatements(e.body,r);if(n===t._breakObj)break;if(n!==null&&n!==t._continueObj)return n;this.execStatement(e.increment,r)}return null}_loop(e,r){for(r=r.clone();;){let n=this._execStatements(e.body,r);if(n===t._breakObj)break;if(n===t._continueObj){if(e.continuing&&this._execStatements(e.continuing.body,r)===t._breakObj)break}else if(n!==null)return n}return null}_while(e,r){for(r=r.clone();this._getScalarValue(this.evalExpression(e.condition,r));){let n=this._execStatements(e.body,r);if(n===t._breakObj)break;if(n!==t._continueObj&&n!==null)return n}return null}_evalBitcast(e,r){let n=this.evalExpression(e.value,r),s=e.type;if(n instanceof y){let o=Kf(n.value,n.typeInfo.name,s.name);return new y(o,this.getTypeInfo(s))}if(n instanceof m){let o=n.typeInfo.getTypeName(),a="";if(o.endsWith("f"))a="f32";else if(o.endsWith("i"))a="i32";else if(o.endsWith("u"))a="u32";else if(o.endsWith("b"))a="bool";else{if(!o.endsWith("h"))return console.error(`Unknown vector type ${o}. Line ${e.line}`),null;a="f16"}let i=s.getTypeName(),u="";if(i.endsWith("f"))u="f32";else if(i.endsWith("i"))u="i32";else if(i.endsWith("u"))u="u32";else if(i.endsWith("b"))u="bool";else{if(!i.endsWith("h"))return console.error(`Unknown vector type ${u}. Line ${e.line}`),null;u="f16"}let l=function(c,f,d){if(f===d)return c;let p=new Array(c.length);for(let v=0;v<c.length;v++)p[v]=Kf(c[v],f,d);return p}(Array.from(n.data),a,u);return new m(l,this.getTypeInfo(s))}return console.error(`TODO: bitcast for ${n.typeInfo.name}. Line ${e.line}`),null}_evalConst(e,r){return r.getVariableValue(e.name).clone().getSubData(this,e.postfix,r)}_evalCreate(e,r){var n;if(e instanceof Rt){if(e.type===null)return ns.void;switch(e.type.getTypeName()){case"bool":case"i32":case"u32":case"f32":case"f16":return this._callConstructorValue(e,r);case"vec2":case"vec3":case"vec4":case"vec2f":case"vec3f":case"vec4f":case"vec2h":case"vec3h":case"vec4h":case"vec2i":case"vec3i":case"vec4i":case"vec2u":case"vec3u":case"vec4u":case"vec2b":case"vec3b":case"vec4b":return this._callConstructorVec(e,r);case"mat2x2":case"mat2x2f":case"mat2x2h":case"mat2x3":case"mat2x3f":case"mat2x3h":case"mat2x4":case"mat2x4f":case"mat2x4h":case"mat3x2":case"mat3x2f":case"mat3x2h":case"mat3x3":case"mat3x3f":case"mat3x3h":case"mat3x4":case"mat3x4f":case"mat3x4h":case"mat4x2":case"mat4x2f":case"mat4x2h":case"mat4x3":case"mat4x3f":case"mat4x3h":case"mat4x4":case"mat4x4f":case"mat4x4h":return this._callConstructorMatrix(e,r)}}let s=e instanceof Rt?e.type.name:e.name,o=e instanceof Rt?this.getTypeInfo(e.type):this.getTypeInfo(e.name);if(o===null)return console.error(`Unknown type ${s}. Line ${e.line}`),null;if(o.size===0)return null;let a=new Re(new ArrayBuffer(o.size),o,0);if(o instanceof Kt){if(e.args)for(let i=0;i<e.args.length;++i){let u=o.members[i],l=e.args[i],c=this.evalExpression(l,r);a.setData(this,c,u.type,u.offset,r)}}else if(o instanceof Zt){let i=0;if(e.args)for(let u=0;u<e.args.length;++u){let l=e.args[u],c=this.evalExpression(l,r);o.format===null&&(((n=c.typeInfo)===null||n===void 0?void 0:n.name)==="x32"?o.format=this.getTypeInfo("i32"):o.format=c.typeInfo),a.setData(this,c,o.format,i,r),i+=o.stride}}else console.error(`Unknown type "${s}". Line ${e.line}`);return e instanceof Rt?a.getSubData(this,e.postfix,r):a}_evalLiteral(e,r){let n=this.getTypeInfo(e.type),s=n.name;return s==="x32"||s==="u32"||s==="f32"||s==="f16"||s==="i32"||s==="bool"?new y(e.scalarValue,n):s==="vec2"||s==="vec3"||s==="vec4"||s==="vec2f"||s==="vec3f"||s==="vec4f"||s==="vec2h"||s==="vec3h"||s==="vec4h"||s==="vec2i"||s==="vec3i"||s==="vec4i"||s==="vec2u"||s==="vec3u"||s==="vec4u"?this._callConstructorVec(e,r):s==="mat2x2"||s==="mat2x3"||s==="mat2x4"||s==="mat3x2"||s==="mat3x3"||s==="mat3x4"||s==="mat4x2"||s==="mat4x3"||s==="mat4x4"||s==="mat2x2f"||s==="mat2x3f"||s==="mat2x4f"||s==="mat3x2f"||s==="mat3x3f"||s==="mat3x4f"||s==="mat4x2f"||s==="mat4x3f"||s==="mat4x4f"||s==="mat2x2h"||s==="mat2x3h"||s==="mat2x4h"||s==="mat3x2h"||s==="mat3x3h"||s==="mat3x4h"||s==="mat4x2h"||s==="mat4x3h"||s==="mat4x4h"?this._callConstructorMatrix(e,r):e.value}_evalVariable(e,r){let n=r.getVariableValue(e.name);return n===null?n:n.getSubData(this,e.postfix,r)}_maxFormatTypeInfo(e){let r=e[0];if(r.name==="f32")return r;for(let n=1;n<e.length;++n){let s=t._priority.get(r.name);t._priority.get(e[n].name)<s&&(r=e[n])}return r.name==="x32"?this.getTypeInfo("i32"):r}_evalUnaryOp(e,r){let n=this.evalExpression(e.right,r);if(e.operator==="&")return new Er(n);if(e.operator==="*")return n instanceof Er?n.reference.getSubData(this,e.postfix,r):(console.error(`Invalid dereference. Line ${e.line}`),null);let s=n instanceof y?n.value:n instanceof m?Array.from(n.data):null;switch(e.operator){case"+":{if(L(s)){let i=s.map((u,l)=>+u);return new m(i,n.typeInfo)}let o=s,a=this._maxFormatTypeInfo([n.typeInfo,n.typeInfo]);return new y(+o,a)}case"-":{if(L(s)){let i=s.map((u,l)=>-u);return new m(i,n.typeInfo)}let o=s,a=this._maxFormatTypeInfo([n.typeInfo,n.typeInfo]);return new y(-o,a)}case"!":{if(L(s)){let i=s.map((u,l)=>u?0:1);return new m(i,n.typeInfo)}let o=s,a=this._maxFormatTypeInfo([n.typeInfo,n.typeInfo]);return new y(o?0:1,a)}case"~":{if(L(s)){let i=s.map((u,l)=>~u);return new m(i,n.typeInfo)}let o=s,a=this._maxFormatTypeInfo([n.typeInfo,n.typeInfo]);return new y(~o,a)}}return console.error(`Invalid unary operator ${e.operator}. Line ${e.line}`),null}_isMatrixType(e){return e.typeInfo.getTypeName().startsWith("mat")}_isVectorType(e){return e.typeInfo.getTypeName().startsWith("vec")}_evalBinaryOp(e,r){let n=this.evalExpression(e.left,r),s=this.evalExpression(e.right,r),o=n instanceof y?n.value:n instanceof m||n instanceof H?Array.from(n.data):n instanceof Re?n.toArray():null,a=s instanceof y?s.value:s instanceof m||s instanceof H?Array.from(s.data):s instanceof Re?s.toArray():null;switch(e.operator){case"+":{if(L(o)&&L(a)){let c=o,f=a;if(c.length!==f.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;let d=c.map((p,v)=>p+f[v]);return new m(d,n.typeInfo)}if(L(o)){let c=a,f=o.map((d,p)=>d+c);return new m(f,n.typeInfo)}if(L(a)){let c=o,f=a.map((d,p)=>c+d);return new m(f,s.typeInfo)}let i=o,u=a,l=this._maxFormatTypeInfo([n.typeInfo,s.typeInfo]);return new y(i+u,l)}case"-":{if(L(o)&&L(a)){let c=o,f=a;if(c.length!==f.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;let d=c.map((p,v)=>p-f[v]);return new m(d,n.typeInfo)}if(L(o)){let c=a,f=o.map((d,p)=>d-c);return new m(f,n.typeInfo)}if(L(a)){let c=o,f=a.map((d,p)=>c-d);return new m(f,s.typeInfo)}let i=o,u=a,l=this._maxFormatTypeInfo([n.typeInfo,s.typeInfo]);return new y(i-u,l)}case"*":{if(L(o)&&L(a)){let c=o,f=a;if(this._isMatrixType(n)&&this._isMatrixType(s)){let d=function(w,S,k,E){if(et[S.name]===void 0||et[E.name]===void 0)return null;let I=et[S.name][0],C=et[S.name][1],B=et[E.name][0];if(I!==et[E.name][1])return null;let z=new Array(B*C);for(let N=0;N<C;N++)for(let U=0;U<B;U++){let V=0;for(let P=0;P<I;P++)V+=w[P*C+N]*k[U*I+P];z[N*B+U]=V}return z}(c,n.typeInfo,f,s.typeInfo);if(d===null)return console.error(`Matrix multiplication failed. Line ${e.line}.`),null;let p=et[s.typeInfo.name][0],v=et[n.typeInfo.name][1],A=this.getTypeInfo(`mat${p}x${v}f`);return new H(d,A)}if(this._isMatrixType(n)&&this._isVectorType(s)){let d=function(p,v,A,w){if(et[v.name]===void 0||Ui[w.name]===void 0)return null;let S=et[v.name][0],k=et[v.name][1];if(S!==A.length)return null;let E=new Array(k);for(let I=0;I<k;I++){let C=0;for(let B=0;B<S;B++)C+=p[B*k+I]*A[B];E[I]=C}return E}(c,n.typeInfo,f,s.typeInfo);return d===null?(console.error(`Matrix vector multiplication failed. Line ${e.line}.`),null):new m(d,s.typeInfo)}if(this._isVectorType(n)&&this._isMatrixType(s)){let d=function(p,v,A,w){if(Ui[v.name]===void 0||et[w.name]===void 0)return null;let S=et[w.name][0],k=et[w.name][1];if(k!==p.length)return null;let E=[];for(let I=0;I<S;I++){let C=0;for(let B=0;B<k;B++)C+=p[B]*A[B*S+I];E[I]=C}return E}(c,n.typeInfo,f,s.typeInfo);return d===null?(console.error(`Matrix vector multiplication failed. Line ${e.line}.`),null):new m(d,n.typeInfo)}{if(c.length!==f.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;let d=c.map((p,v)=>p*f[v]);return new m(d,n.typeInfo)}}if(L(o)){let c=a,f=o.map((d,p)=>d*c);return this._isMatrixType(n)?new H(f,n.typeInfo):new m(f,n.typeInfo)}if(L(a)){let c=o,f=a.map((d,p)=>c*d);return s instanceof H?new H(f,s.typeInfo):new m(f,s.typeInfo)}let i=o,u=a,l=this._maxFormatTypeInfo([n.typeInfo,s.typeInfo]);return new y(i*u,l)}case"%":{if(L(o)&&L(a)){let c=o,f=a;if(c.length!==f.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;let d=c.map((p,v)=>p%f[v]);return new m(d,n.typeInfo)}if(L(o)){let c=a,f=o.map((d,p)=>d%c);return new m(f,n.typeInfo)}if(L(a)){let c=o,f=a.map((d,p)=>c%d);return new m(f,s.typeInfo)}let i=o,u=a,l=this._maxFormatTypeInfo([n.typeInfo,s.typeInfo]);return new y(i%u,l)}case"/":{if(L(o)&&L(a)){let c=o,f=a;if(c.length!==f.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;let d=c.map((p,v)=>p/f[v]);return new m(d,n.typeInfo)}if(L(o)){let c=a,f=o.map((d,p)=>d/c);return new m(f,n.typeInfo)}if(L(a)){let c=o,f=a.map((d,p)=>c/d);return new m(f,s.typeInfo)}let i=o,u=a,l=this._maxFormatTypeInfo([n.typeInfo,s.typeInfo]);return new y(i/u,l)}case"&":{if(L(o)&&L(a)){let c=o,f=a;if(c.length!==f.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;let d=c.map((p,v)=>p&f[v]);return new m(d,n.typeInfo)}if(L(o)){let c=a,f=o.map((d,p)=>d&c);return new m(f,n.typeInfo)}if(L(a)){let c=o,f=a.map((d,p)=>c&d);return new m(f,s.typeInfo)}let i=o,u=a,l=this._maxFormatTypeInfo([n.typeInfo,s.typeInfo]);return new y(i&u,l)}case"|":{if(L(o)&&L(a)){let c=o,f=a;if(c.length!==f.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;let d=c.map((p,v)=>p|f[v]);return new m(d,n.typeInfo)}if(L(o)){let c=a,f=o.map((d,p)=>d|c);return new m(f,n.typeInfo)}if(L(a)){let c=o,f=a.map((d,p)=>c|d);return new m(f,s.typeInfo)}let i=o,u=a,l=this._maxFormatTypeInfo([n.typeInfo,s.typeInfo]);return new y(i|u,l)}case"^":{if(L(o)&&L(a)){let c=o,f=a;if(c.length!==f.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;let d=c.map((p,v)=>p^f[v]);return new m(d,n.typeInfo)}if(L(o)){let c=a,f=o.map((d,p)=>d^c);return new m(f,n.typeInfo)}if(L(a)){let c=o,f=a.map((d,p)=>c^d);return new m(f,s.typeInfo)}let i=o,u=a,l=this._maxFormatTypeInfo([n.typeInfo,s.typeInfo]);return new y(i^u,l)}case"<<":{if(L(o)&&L(a)){let c=o,f=a;if(c.length!==f.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;let d=c.map((p,v)=>p<<f[v]);return new m(d,n.typeInfo)}if(L(o)){let c=a,f=o.map((d,p)=>d<<c);return new m(f,n.typeInfo)}if(L(a)){let c=o,f=a.map((d,p)=>c<<d);return new m(f,s.typeInfo)}let i=o,u=a,l=this._maxFormatTypeInfo([n.typeInfo,s.typeInfo]);return new y(i<<u,l)}case">>":{if(L(o)&&L(a)){let c=o,f=a;if(c.length!==f.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;let d=c.map((p,v)=>p>>f[v]);return new m(d,n.typeInfo)}if(L(o)){let c=a,f=o.map((d,p)=>d>>c);return new m(f,n.typeInfo)}if(L(a)){let c=o,f=a.map((d,p)=>c>>d);return new m(f,s.typeInfo)}let i=o,u=a,l=this._maxFormatTypeInfo([n.typeInfo,s.typeInfo]);return new y(i>>u,l)}case">":if(L(o)&&L(a)){let i=o,u=a;if(i.length!==u.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;let l=i.map((c,f)=>c>u[f]?1:0);return new m(l,n.typeInfo)}if(L(o)){let i=a,u=o.map((l,c)=>l>i?1:0);return new m(u,n.typeInfo)}if(L(a)){let i=o,u=a.map((l,c)=>i>l?1:0);return new m(u,s.typeInfo)}return new y(o>a?1:0,this.getTypeInfo("bool"));case"<":if(L(o)&&L(a)){let i=o,u=a;if(i.length!==u.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;let l=i.map((c,f)=>c<u[f]?1:0);return new m(l,n.typeInfo)}if(L(o)){let i=a,u=o.map((l,c)=>l<i?1:0);return new m(u,n.typeInfo)}if(L(a)){let i=o,u=a.map((l,c)=>i<l?1:0);return new m(u,s.typeInfo)}return new y(o<a?1:0,this.getTypeInfo("bool"));case"==":if(L(o)&&L(a)){let i=o,u=a;if(i.length!==u.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;let l=i.map((c,f)=>c===u[f]?1:0);return new m(l,n.typeInfo)}if(L(o)){let i=a,u=o.map((l,c)=>l===i?1:0);return new m(u,n.typeInfo)}if(L(a)){let i=o,u=a.map((l,c)=>i===l?1:0);return new m(u,s.typeInfo)}return new y(o===a?1:0,this.getTypeInfo("bool"));case"!=":if(L(o)&&L(a)){let i=o,u=a;if(i.length!==u.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;let l=i.map((c,f)=>c!==u[f]?1:0);return new m(l,n.typeInfo)}if(L(o)){let i=a,u=o.map((l,c)=>l!==i?1:0);return new m(u,n.typeInfo)}if(L(a)){let i=o,u=a.map((l,c)=>i!==l?1:0);return new m(u,s.typeInfo)}return new y(o!==a?1:0,this.getTypeInfo("bool"));case">=":if(L(o)&&L(a)){let i=o,u=a;if(i.length!==u.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;let l=i.map((c,f)=>c>=u[f]?1:0);return new m(l,n.typeInfo)}if(L(o)){let i=a,u=o.map((l,c)=>l>=i?1:0);return new m(u,n.typeInfo)}if(L(a)){let i=o,u=a.map((l,c)=>i>=l?1:0);return new m(u,s.typeInfo)}return new y(o>=a?1:0,this.getTypeInfo("bool"));case"<=":if(L(o)&&L(a)){let i=o,u=a;if(i.length!==u.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;let l=i.map((c,f)=>c<=u[f]?1:0);return new m(l,n.typeInfo)}if(L(o)){let i=a,u=o.map((l,c)=>l<=i?1:0);return new m(u,n.typeInfo)}if(L(a)){let i=o,u=a.map((l,c)=>i<=l?1:0);return new m(u,s.typeInfo)}return new y(o<=a?1:0,this.getTypeInfo("bool"));case"&&":if(L(o)&&L(a)){let i=o,u=a;if(i.length!==u.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;let l=i.map((c,f)=>c&&u[f]?1:0);return new m(l,n.typeInfo)}if(L(o)){let i=a,u=o.map((l,c)=>l&&i?1:0);return new m(u,n.typeInfo)}if(L(a)){let i=o,u=a.map((l,c)=>i&&l?1:0);return new m(u,s.typeInfo)}return new y(o&&a?1:0,this.getTypeInfo("bool"));case"||":if(L(o)&&L(a)){let i=o,u=a;if(i.length!==u.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;let l=i.map((c,f)=>c||u[f]?1:0);return new m(l,n.typeInfo)}if(L(o)){let i=a,u=o.map((l,c)=>l||i?1:0);return new m(u,n.typeInfo)}if(L(a)){let i=o,u=a.map((l,c)=>i||l?1:0);return new m(u,s.typeInfo)}return new y(o||a?1:0,this.getTypeInfo("bool"))}return console.error(`Unknown operator ${e.operator}. Line ${e.line}`),null}_evalCall(e,r){if(e.cachedReturnValue!==null)return e.cachedReturnValue;let n=r.clone();n.currentFunctionName=e.name;let s=r.getFunction(e.name);if(!s)return e.isBuiltin?this._callBuiltinFunction(e,n):this.getTypeInfo(e.name)?this._evalCreate(e,r):(console.error(`Unknown function "${e.name}". Line ${e.line}`),null);for(let o=0;o<s.node.args.length;++o){let a=s.node.args[o],i=this.evalExpression(e.args[o],n);n.createVariable(a.name,i,a)}return this._execStatements(s.node.body,n)}_callBuiltinFunction(e,r){switch(e.name){case"all":return this.builtins.All(e,r);case"any":return this.builtins.Any(e,r);case"select":return this.builtins.Select(e,r);case"arrayLength":return this.builtins.ArrayLength(e,r);case"abs":return this.builtins.Abs(e,r);case"acos":return this.builtins.Acos(e,r);case"acosh":return this.builtins.Acosh(e,r);case"asin":return this.builtins.Asin(e,r);case"asinh":return this.builtins.Asinh(e,r);case"atan":return this.builtins.Atan(e,r);case"atanh":return this.builtins.Atanh(e,r);case"atan2":return this.builtins.Atan2(e,r);case"ceil":return this.builtins.Ceil(e,r);case"clamp":return this.builtins.Clamp(e,r);case"cos":return this.builtins.Cos(e,r);case"cosh":return this.builtins.Cosh(e,r);case"countLeadingZeros":return this.builtins.CountLeadingZeros(e,r);case"countOneBits":return this.builtins.CountOneBits(e,r);case"countTrailingZeros":return this.builtins.CountTrailingZeros(e,r);case"cross":return this.builtins.Cross(e,r);case"degrees":return this.builtins.Degrees(e,r);case"determinant":return this.builtins.Determinant(e,r);case"distance":return this.builtins.Distance(e,r);case"dot":return this.builtins.Dot(e,r);case"dot4U8Packed":return this.builtins.Dot4U8Packed(e,r);case"dot4I8Packed":return this.builtins.Dot4I8Packed(e,r);case"exp":return this.builtins.Exp(e,r);case"exp2":return this.builtins.Exp2(e,r);case"extractBits":return this.builtins.ExtractBits(e,r);case"faceForward":return this.builtins.FaceForward(e,r);case"firstLeadingBit":return this.builtins.FirstLeadingBit(e,r);case"firstTrailingBit":return this.builtins.FirstTrailingBit(e,r);case"floor":return this.builtins.Floor(e,r);case"fma":return this.builtins.Fma(e,r);case"fract":return this.builtins.Fract(e,r);case"frexp":return this.builtins.Frexp(e,r);case"insertBits":return this.builtins.InsertBits(e,r);case"inverseSqrt":return this.builtins.InverseSqrt(e,r);case"ldexp":return this.builtins.Ldexp(e,r);case"length":return this.builtins.Length(e,r);case"log":return this.builtins.Log(e,r);case"log2":return this.builtins.Log2(e,r);case"max":return this.builtins.Max(e,r);case"min":return this.builtins.Min(e,r);case"mix":return this.builtins.Mix(e,r);case"modf":return this.builtins.Modf(e,r);case"normalize":return this.builtins.Normalize(e,r);case"pow":return this.builtins.Pow(e,r);case"quantizeToF16":return this.builtins.QuantizeToF16(e,r);case"radians":return this.builtins.Radians(e,r);case"reflect":return this.builtins.Reflect(e,r);case"refract":return this.builtins.Refract(e,r);case"reverseBits":return this.builtins.ReverseBits(e,r);case"round":return this.builtins.Round(e,r);case"saturate":return this.builtins.Saturate(e,r);case"sign":return this.builtins.Sign(e,r);case"sin":return this.builtins.Sin(e,r);case"sinh":return this.builtins.Sinh(e,r);case"smoothstep":return this.builtins.SmoothStep(e,r);case"sqrt":return this.builtins.Sqrt(e,r);case"step":return this.builtins.Step(e,r);case"tan":return this.builtins.Tan(e,r);case"tanh":return this.builtins.Tanh(e,r);case"transpose":return this.builtins.Transpose(e,r);case"trunc":return this.builtins.Trunc(e,r);case"dpdx":return this.builtins.Dpdx(e,r);case"dpdxCoarse":return this.builtins.DpdxCoarse(e,r);case"dpdxFine":return this.builtins.DpdxFine(e,r);case"dpdy":return this.builtins.Dpdy(e,r);case"dpdyCoarse":return this.builtins.DpdyCoarse(e,r);case"dpdyFine":return this.builtins.DpdyFine(e,r);case"fwidth":return this.builtins.Fwidth(e,r);case"fwidthCoarse":return this.builtins.FwidthCoarse(e,r);case"fwidthFine":return this.builtins.FwidthFine(e,r);case"textureDimensions":return this.builtins.TextureDimensions(e,r);case"textureGather":return this.builtins.TextureGather(e,r);case"textureGatherCompare":return this.builtins.TextureGatherCompare(e,r);case"textureLoad":return this.builtins.TextureLoad(e,r);case"textureNumLayers":return this.builtins.TextureNumLayers(e,r);case"textureNumLevels":return this.builtins.TextureNumLevels(e,r);case"textureNumSamples":return this.builtins.TextureNumSamples(e,r);case"textureSample":return this.builtins.TextureSample(e,r);case"textureSampleBias":return this.builtins.TextureSampleBias(e,r);case"textureSampleCompare":return this.builtins.TextureSampleCompare(e,r);case"textureSampleCompareLevel":return this.builtins.TextureSampleCompareLevel(e,r);case"textureSampleGrad":return this.builtins.TextureSampleGrad(e,r);case"textureSampleLevel":return this.builtins.TextureSampleLevel(e,r);case"textureSampleBaseClampToEdge":return this.builtins.TextureSampleBaseClampToEdge(e,r);case"textureStore":return this.builtins.TextureStore(e,r);case"atomicLoad":return this.builtins.AtomicLoad(e,r);case"atomicStore":return this.builtins.AtomicStore(e,r);case"atomicAdd":return this.builtins.AtomicAdd(e,r);case"atomicSub":return this.builtins.AtomicSub(e,r);case"atomicMax":return this.builtins.AtomicMax(e,r);case"atomicMin":return this.builtins.AtomicMin(e,r);case"atomicAnd":return this.builtins.AtomicAnd(e,r);case"atomicOr":return this.builtins.AtomicOr(e,r);case"atomicXor":return this.builtins.AtomicXor(e,r);case"atomicExchange":return this.builtins.AtomicExchange(e,r);case"atomicCompareExchangeWeak":return this.builtins.AtomicCompareExchangeWeak(e,r);case"pack4x8snorm":return this.builtins.Pack4x8snorm(e,r);case"pack4x8unorm":return this.builtins.Pack4x8unorm(e,r);case"pack4xI8":return this.builtins.Pack4xI8(e,r);case"pack4xU8":return this.builtins.Pack4xU8(e,r);case"pack4x8Clamp":return this.builtins.Pack4x8Clamp(e,r);case"pack4xU8Clamp":return this.builtins.Pack4xU8Clamp(e,r);case"pack2x16snorm":return this.builtins.Pack2x16snorm(e,r);case"pack2x16unorm":return this.builtins.Pack2x16unorm(e,r);case"pack2x16float":return this.builtins.Pack2x16float(e,r);case"unpack4x8snorm":return this.builtins.Unpack4x8snorm(e,r);case"unpack4x8unorm":return this.builtins.Unpack4x8unorm(e,r);case"unpack4xI8":return this.builtins.Unpack4xI8(e,r);case"unpack4xU8":return this.builtins.Unpack4xU8(e,r);case"unpack2x16snorm":return this.builtins.Unpack2x16snorm(e,r);case"unpack2x16unorm":return this.builtins.Unpack2x16unorm(e,r);case"unpack2x16float":return this.builtins.Unpack2x16float(e,r);case"storageBarrier":return this.builtins.StorageBarrier(e,r);case"textureBarrier":return this.builtins.TextureBarrier(e,r);case"workgroupBarrier":return this.builtins.WorkgroupBarrier(e,r);case"workgroupUniformLoad":return this.builtins.WorkgroupUniformLoad(e,r);case"subgroupAdd":return this.builtins.SubgroupAdd(e,r);case"subgroupExclusiveAdd":return this.builtins.SubgroupExclusiveAdd(e,r);case"subgroupInclusiveAdd":return this.builtins.SubgroupInclusiveAdd(e,r);case"subgroupAll":return this.builtins.SubgroupAll(e,r);case"subgroupAnd":return this.builtins.SubgroupAnd(e,r);case"subgroupAny":return this.builtins.SubgroupAny(e,r);case"subgroupBallot":return this.builtins.SubgroupBallot(e,r);case"subgroupBroadcast":return this.builtins.SubgroupBroadcast(e,r);case"subgroupBroadcastFirst":return this.builtins.SubgroupBroadcastFirst(e,r);case"subgroupElect":return this.builtins.SubgroupElect(e,r);case"subgroupMax":return this.builtins.SubgroupMax(e,r);case"subgroupMin":return this.builtins.SubgroupMin(e,r);case"subgroupMul":return this.builtins.SubgroupMul(e,r);case"subgroupExclusiveMul":return this.builtins.SubgroupExclusiveMul(e,r);case"subgroupInclusiveMul":return this.builtins.SubgroupInclusiveMul(e,r);case"subgroupOr":return this.builtins.SubgroupOr(e,r);case"subgroupShuffle":return this.builtins.SubgroupShuffle(e,r);case"subgroupShuffleDown":return this.builtins.SubgroupShuffleDown(e,r);case"subgroupShuffleUp":return this.builtins.SubgroupShuffleUp(e,r);case"subgroupShuffleXor":return this.builtins.SubgroupShuffleXor(e,r);case"subgroupXor":return this.builtins.SubgroupXor(e,r);case"quadBroadcast":return this.builtins.QuadBroadcast(e,r);case"quadSwapDiagonal":return this.builtins.QuadSwapDiagonal(e,r);case"quadSwapX":return this.builtins.QuadSwapX(e,r);case"quadSwapY":return this.builtins.QuadSwapY(e,r)}let n=r.getFunction(e.name);if(n){let s=r.clone();for(let o=0;o<n.node.args.length;++o){let a=n.node.args[o],i=this.evalExpression(e.args[o],s);s.setVariable(a.name,i,a)}return this._execStatements(n.node.body,s)}return null}_callConstructorValue(e,r){if(!e.args||e.args.length===0)return new y(0,this.getTypeInfo(e.type));let n=this.evalExpression(e.args[0],r);return n.typeInfo=this.getTypeInfo(e.type),n.getSubData(this,e.postfix,r).clone()}_callConstructorVec(e,r){let n=this.getTypeInfo(e.type),s=e.type.getTypeName(),o=Ui[s];if(o===void 0)return console.error(`Invalid vec constructor ${s}. Line ${e.line}`),null;let a=[];if(e instanceof Be)if(e.isVector){let i=e.vectorValue;for(let u of i)a.push(u)}else a.push(e.scalarValue);else if(e.args)for(let i of e.args){let u=this.evalExpression(i,r);if(u instanceof m){let l=u.data;for(let c=0;c<l.length;++c){let f=l[c];a.push(f)}}else if(u instanceof y){let l=u.value;a.push(l)}}if(e.type instanceof _&&e.type.format===null&&(e.type.format=_.f32),a.length===0){let i=new Array(o).fill(0);return new m(i,n).getSubData(this,e.postfix,r)}if(a.length===1)for(;a.length<o;)a.push(a[0]);return a.length<o?(console.error(`Invalid vec constructor. Line ${e.line}`),null):new m(a.length>o?a.slice(0,o):a,n).getSubData(this,e.postfix,r)}_callConstructorMatrix(e,r){let n=this.getTypeInfo(e.type),s=e.type.getTypeName(),o=et[s];if(o===void 0)return console.error(`Invalid matrix constructor ${s}. Line ${e.line}`),null;let a=[];if(e instanceof Be)if(e.isVector){let i=e.vectorValue;for(let u of i)a.push(u)}else a.push(e.scalarValue);else if(e.args)for(let i of e.args){let u=this.evalExpression(i,r);u instanceof m?a.push(...u.data):u instanceof y?a.push(u.value):u instanceof H&&a.push(...u.data)}if(n instanceof ur&&n.format===null&&(n.format=this.getTypeInfo("f32")),a.length===0){let i=new Array(o[2]).fill(0);return new H(i,n).getSubData(this,e.postfix,r)}return a.length!==o[2]?(console.error(`Invalid matrix constructor. Line ${e.line}`),null):new H(a,n).getSubData(this,e.postfix,r)}};pt._numericScalarTypes=new Set(["f32","i32","u32","bool","f16"]),pt._vectorTypes=new Set(["vec2","vec3","vec4","vec2f","vec3f","vec4f","vec2i","vec3i","vec4i","vec2u","vec3u","vec4u","vec2h","vec3h","vec4h","vec2b","vec3b","vec4b"]),pt._matrixTypes=new Set(["mat2x2","mat2x3","mat2x4","mat3x2","mat3x3","mat3x4","mat4x2","mat4x3","mat4x4","mat2x2f","mat2x3f","mat2x4f","mat3x2f","mat3x3f","mat3x4f","mat4x2f","mat4x3f","mat4x4f","mat2x2h","mat2x3h","mat2x4h","mat3x2h","mat3x3h","mat3x4h","mat4x2h","mat4x3h","mat4x4h"]),pt._defaultableTypes=new Set([...pt._numericScalarTypes,...pt._vectorTypes,...pt._matrixTypes,"array"]),pt._breakObj=new Co(new st("BREAK",null),null),pt._continueObj=new Co(new st("CONTINUE",null),null),pt._priority=new Map([["f32",0],["f16",1],["u32",2],["i32",3],["x32",3]]);var eu=class{constructor(){this.constants=new Map,this.aliases=new Map,this.structs=new Map}},tu=class{constructor(){this._tokens=[],this._current=0,this._currentLine=1,this._deferArrayCountEval=[],this._currentLoop=[],this._context=new eu,this._exec=new pt,this._forwardTypeCount=0}parse(e){this._initialize(e),this._deferArrayCountEval.length=0;let r=[];for(;!this._isAtEnd();){let n=this._global_decl_or_directive();if(!n)break;r.push(n)}if(this._deferArrayCountEval.length>0){for(let n of this._deferArrayCountEval){let s=n.arrayType,o=n.countNode;if(o instanceof We){let a=o.name,i=this._context.constants.get(a);if(i)try{let u=i.constEvaluate(this._exec);s.count=u}catch{}}}this._deferArrayCountEval.length=0}if(this._forwardTypeCount>0)for(let n of r)n.search(s=>{s instanceof So||s instanceof bn?s.type=this._forwardType(s.type):s instanceof Nr?s.format=this._forwardType(s.format):s instanceof It||s instanceof Mr||s instanceof _n?s.type=this._forwardType(s.type):s instanceof Vr?s.returnType=this._forwardType(s.returnType):s instanceof Io&&(s.type=this._forwardType(s.type))});return r}_forwardType(e){if(e instanceof vo){let r=this._getType(e.name);if(r)return r}else e instanceof bn?e.type=this._forwardType(e.type):e instanceof Nr&&(e.format=this._forwardType(e.format));return e}_initialize(e){if(e)if(typeof e=="string"){let r=new Uo(e);this._tokens=r.scanTokens()}else this._tokens=e;else this._tokens=[];this._current=0}_updateNode(e,r){return e.line=r??this._currentLine,e}_error(e,r){return new Error(`${r}. Line: ${e.line}`)}_isAtEnd(){return this._current>=this._tokens.length||this._peek().type===h.eof}_match(e){if(e instanceof g)return!!this._check(e)&&(this._advance(),!0);for(let r=0,n=e.length;r<n;++r){let s=e[r];if(this._check(s))return this._advance(),!0}return!1}_consume(e,r){if(this._check(e))return this._advance();throw this._error(this._peek(),r)}_check(e){if(this._isAtEnd())return!1;let r=this._peek();if(Array.isArray(e)){let n=r.type,s=!1;for(let o of e){if(n===o)return!0;o===h.tokens.name&&(s=!0)}if(s){let o=h.tokens.name.rule.exec(r.lexeme);if(o&&o.index===0&&o[0]===r.lexeme)return!0}return!1}if(r.type===e)return!0;if(e===h.tokens.name){let n=h.tokens.name.rule.exec(r.lexeme);return n&&n.index===0&&n[0]===r.lexeme}return!1}_advance(){var e,r;return this._currentLine=(r=(e=this._peek())===null||e===void 0?void 0:e.line)!==null&&r!==void 0?r:-1,this._isAtEnd()||this._current++,this._previous()}_peek(){return this._tokens[this._current]}_previous(){return this._tokens[this._current-1]}_global_decl_or_directive(){for(;this._match(h.tokens.semicolon)&&!this._isAtEnd(););if(this._match(h.keywords.const_assert)){let r=this._global_assert();return this._consume(h.tokens.semicolon,"Expected ';'"),this._exec.reflection.updateAST([r]),r}if(this._match(h.keywords.alias)){let r=this._type_alias();return this._consume(h.tokens.semicolon,"Expected ';'"),this._exec.reflection.updateAST([r]),r}if(this._match(h.keywords.diagnostic)){let r=this._diagnostic();return this._consume(h.tokens.semicolon,"Expected ';'"),this._exec.reflection.updateAST([r]),r}if(this._match(h.keywords.requires)){let r=this._requires_directive();return this._consume(h.tokens.semicolon,"Expected ';'"),this._exec.reflection.updateAST([r]),r}if(this._match(h.keywords.enable)){let r=this._enable_directive();return this._consume(h.tokens.semicolon,"Expected ';'"),this._exec.reflection.updateAST([r]),r}let e=this._attribute();if(this._check(h.keywords.var)){let r=this._global_variable_decl();return r!=null&&(r.attributes=e),this._consume(h.tokens.semicolon,"Expected ';'."),this._exec.reflection.updateAST([r]),r}if(this._check(h.keywords.override)){let r=this._override_variable_decl();return r!=null&&(r.attributes=e),this._consume(h.tokens.semicolon,"Expected ';'."),this._exec.reflection.updateAST([r]),r}if(this._check(h.keywords.let)){let r=this._global_let_decl();return r!=null&&(r.attributes=e),this._consume(h.tokens.semicolon,"Expected ';'."),this._exec.reflection.updateAST([r]),r}if(this._check(h.keywords.const)){let r=this._global_const_decl();return r!=null&&(r.attributes=e),this._consume(h.tokens.semicolon,"Expected ';'."),this._exec.reflection.updateAST([r]),r}if(this._check(h.keywords.struct)){let r=this._struct_decl();return r!=null&&(r.attributes=e),this._exec.reflection.updateAST([r]),r}if(this._check(h.keywords.fn)){let r=this._function_decl();return r!=null&&(r.attributes=e),this._exec.reflection.updateAST([r]),r}return null}_function_decl(){if(!this._match(h.keywords.fn))return null;let e=this._currentLine,r=this._consume(h.tokens.ident,"Expected function name.").toString();this._consume(h.tokens.paren_left,"Expected '(' for function arguments.");let n=[];if(!this._check(h.tokens.paren_right))do{if(this._check(h.tokens.paren_right))break;let i=this._attribute(),u=this._consume(h.tokens.name,"Expected argument name.").toString();this._consume(h.tokens.colon,"Expected ':' for argument type.");let l=this._attribute(),c=this._type_decl();c!=null&&(c.attributes=l,n.push(this._updateNode(new Io(u,c,i))))}while(this._match(h.tokens.comma));this._consume(h.tokens.paren_right,"Expected ')' after function arguments.");let s=null;if(this._match(h.tokens.arrow)){let i=this._attribute();s=this._type_decl(),s!=null&&(s.attributes=i)}let o=this._compound_statement(),a=this._currentLine;return this._updateNode(new Vr(r,n,s,o,e,a),e)}_compound_statement(){let e=[];for(this._consume(h.tokens.brace_left,"Expected '{' for block.");!this._check(h.tokens.brace_right);){let r=this._statement();r!==null&&e.push(r)}return this._consume(h.tokens.brace_right,"Expected '}' for block."),e}_statement(){for(;this._match(h.tokens.semicolon)&&!this._isAtEnd(););if(this._check(h.tokens.attr)&&this._attribute(),this._check(h.keywords.if))return this._if_statement();if(this._check(h.keywords.switch))return this._switch_statement();if(this._check(h.keywords.loop))return this._loop_statement();if(this._check(h.keywords.for))return this._for_statement();if(this._check(h.keywords.while))return this._while_statement();if(this._check(h.keywords.continuing))return this._continuing_statement();if(this._check(h.keywords.static_assert))return this._static_assert_statement();if(this._check(h.tokens.brace_left))return this._compound_statement();let e=null;if(this._check(h.keywords.return))e=this._return_statement();else if(this._check([h.keywords.var,h.keywords.let,h.keywords.const]))e=this._variable_statement();else if(this._match(h.keywords.discard))e=this._updateNode(new Xi);else if(this._match(h.keywords.break)){let r=this._updateNode(new _o);if(this._currentLoop.length>0){let n=this._currentLoop[this._currentLoop.length-1];r.loopId=n.id}e=r,this._check(h.keywords.if)&&(this._advance(),r.condition=this._optional_paren_expression())}else if(this._match(h.keywords.continue)){let r=this._updateNode(new bo);if(!(this._currentLoop.length>0))throw this._error(this._peek(),"Continue statement must be inside a loop");{let n=this._currentLoop[this._currentLoop.length-1];r.loopId=n.id}e=r}else e=this._increment_decrement_statement()||this._func_call_statement()||this._assignment_statement();return e!=null&&this._consume(h.tokens.semicolon,"Expected ';' after statement."),e}_static_assert_statement(){if(!this._match(h.keywords.static_assert))return null;let e=this._currentLine,r=this._optional_paren_expression();return this._updateNode(new uo(r),e)}_global_assert(){let e=this._currentLine,r=this._short_circuit_or_expression();return this._updateNode(new uo(r),e)}_while_statement(){if(!this._match(h.keywords.while))return null;let e=this._updateNode(new co(null,null));return this._currentLoop.push(e),e.condition=this._optional_paren_expression(),this._check(h.tokens.attr)&&this._attribute(),e.body=this._compound_statement(),this._currentLoop.pop(),e}_continuing_statement(){let e=this._currentLoop.length>0?this._currentLoop[this._currentLoop.length-1].id:-1;if(!this._match(h.keywords.continuing))return null;let r=this._currentLine,n=this._compound_statement();return this._updateNode(new Jn(n,e),r)}_for_statement(){if(!this._match(h.keywords.for))return null;this._consume(h.tokens.paren_left,"Expected '('.");let e=this._updateNode(new lo(null,null,null,null));return this._currentLoop.push(e),e.init=this._check(h.tokens.semicolon)?null:this._for_init(),this._consume(h.tokens.semicolon,"Expected ';'."),e.condition=this._check(h.tokens.semicolon)?null:this._short_circuit_or_expression(),this._consume(h.tokens.semicolon,"Expected ';'."),e.increment=this._check(h.tokens.paren_right)?null:this._for_increment(),this._consume(h.tokens.paren_right,"Expected ')'."),this._check(h.tokens.attr)&&this._attribute(),e.body=this._compound_statement(),this._currentLoop.pop(),e}_for_init(){return this._variable_statement()||this._func_call_statement()||this._assignment_statement()}_for_increment(){return this._func_call_statement()||this._increment_decrement_statement()||this._assignment_statement()}_variable_statement(){if(this._check(h.keywords.var)){let e=this._variable_decl();if(e===null)throw this._error(this._peek(),"Variable declaration expected.");let r=null;return this._match(h.tokens.equal)&&(r=this._short_circuit_or_expression()),this._updateNode(new It(e.name,e.type,e.storage,e.access,r),e.line)}if(this._match(h.keywords.let)){let e=this._currentLine,r=this._consume(h.tokens.name,"Expected name for let.").toString(),n=null;if(this._match(h.tokens.colon)){let o=this._attribute();n=this._type_decl(),n!=null&&(n.attributes=o)}this._consume(h.tokens.equal,"Expected '=' for let.");let s=this._short_circuit_or_expression();return this._updateNode(new Mr(r,n,null,null,s),e)}if(this._match(h.keywords.const)){let e=this._currentLine,r=this._consume(h.tokens.name,"Expected name for const.").toString(),n=null;if(this._match(h.tokens.colon)){let o=this._attribute();n=this._type_decl(),n!=null&&(n.attributes=o)}this._consume(h.tokens.equal,"Expected '=' for const.");let s=this._short_circuit_or_expression();return n===null&&s instanceof Be&&(n=s.type),this._updateNode(new _n(r,n,null,null,s),e)}return null}_increment_decrement_statement(){let e=this._current,r=this._unary_expression();if(r===null)return null;if(!this._check(h.increment_operators))return this._current=e,null;let n=this._consume(h.increment_operators,"Expected increment operator");return this._updateNode(new fo(n.type===h.tokens.plus_plus?xn.increment:xn.decrement,r))}_assignment_statement(){let e=null,r=this._currentLine;if(this._check(h.tokens.brace_right))return null;let n=this._match(h.tokens.underscore);if(n||(e=this._unary_expression()),!n&&e===null)return null;let s=this._consume(h.assignment_operators,"Expected assignment operator."),o=this._short_circuit_or_expression();return this._updateNode(new ho(Kn.parse(s.lexeme),e,o),r)}_func_call_statement(){if(!this._check(h.tokens.ident))return null;let e=this._currentLine,r=this._current,n=this._consume(h.tokens.ident,"Expected function name."),s=this._argument_expression_list();return s===null?(this._current=r,null):this._updateNode(new es(n.lexeme,s),e)}_loop_statement(){if(!this._match(h.keywords.loop))return null;this._check(h.tokens.attr)&&this._attribute(),this._consume(h.tokens.brace_left,"Expected '{' for loop.");let e=this._updateNode(new mo([],null));this._currentLoop.push(e);let r=this._statement();for(;r!==null;){if(Array.isArray(r))for(let n of r)e.body.push(n);else e.body.push(r);if(r instanceof Jn){e.continuing=r;break}r=this._statement()}return this._currentLoop.pop(),this._consume(h.tokens.brace_right,"Expected '}' for loop."),e}_switch_statement(){if(!this._match(h.keywords.switch))return null;let e=this._updateNode(new po(null,[]));if(this._currentLoop.push(e),e.condition=this._optional_paren_expression(),this._check(h.tokens.attr)&&this._attribute(),this._consume(h.tokens.brace_left,"Expected '{' for switch."),e.cases=this._switch_body(),e.cases===null||e.cases.length===0)throw this._error(this._previous(),"Expected 'case' or 'default'.");return this._consume(h.tokens.brace_right,"Expected '}' for switch."),this._currentLoop.pop(),e}_switch_body(){let e=[],r=!1;for(;this._check([h.keywords.default,h.keywords.case]);){if(this._match(h.keywords.case)){let n=this._case_selectors();for(let o of n)if(o instanceof vn){if(r)throw this._error(this._previous(),"Multiple default cases in switch statement.");r=!0;break}this._match(h.tokens.colon),this._check(h.tokens.attr)&&this._attribute(),this._consume(h.tokens.brace_left,"Exected '{' for switch case.");let s=this._case_body();this._consume(h.tokens.brace_right,"Exected '}' for switch case."),e.push(this._updateNode(new Ao(n,s)))}if(this._match(h.keywords.default)){if(r)throw this._error(this._previous(),"Multiple default cases in switch statement.");this._match(h.tokens.colon),this._check(h.tokens.attr)&&this._attribute(),this._consume(h.tokens.brace_left,"Exected '{' for switch default.");let n=this._case_body();this._consume(h.tokens.brace_right,"Exected '}' for switch default."),e.push(this._updateNode(new Ro(n)))}}return e}_case_selectors(){let e=[];for(this._match(h.keywords.default)?e.push(this._updateNode(new vn)):e.push(this._shift_expression());this._match(h.tokens.comma);)this._match(h.keywords.default)?e.push(this._updateNode(new vn)):e.push(this._shift_expression());return e}_case_body(){if(this._match(h.keywords.fallthrough))return this._consume(h.tokens.semicolon,"Expected ';'"),[];let e=this._statement();if(e===null)return[];Array.isArray(e)||(e=[e]);let r=this._case_body();return r.length===0?e:[...e,r[0]]}_if_statement(){if(!this._match(h.keywords.if))return null;let e=this._currentLine,r=this._optional_paren_expression();this._check(h.tokens.attr)&&this._attribute();let n=this._compound_statement(),s=[];this._match_elseif()&&(this._check(h.tokens.attr)&&this._attribute(),s=this._elseif_statement(s));let o=null;return this._match(h.keywords.else)&&(this._check(h.tokens.attr)&&this._attribute(),o=this._compound_statement()),this._updateNode(new go(r,n,s,o),e)}_match_elseif(){return this._tokens[this._current].type===h.keywords.else&&this._tokens[this._current+1].type===h.keywords.if&&(this._advance(),this._advance(),!0)}_elseif_statement(e=[]){let r=this._optional_paren_expression(),n=this._compound_statement();return e.push(this._updateNode(new ji(r,n))),this._match_elseif()&&(this._check(h.tokens.attr)&&this._attribute(),this._elseif_statement(e)),e}_return_statement(){if(!this._match(h.keywords.return))return null;let e=this._short_circuit_or_expression();return this._updateNode(new xo(e))}_short_circuit_or_expression(){let e=this._short_circuit_and_expr();for(;this._match(h.tokens.or_or);)e=this._updateNode(new mt(this._previous().toString(),e,this._short_circuit_and_expr()));return e}_short_circuit_and_expr(){let e=this._inclusive_or_expression();for(;this._match(h.tokens.and_and);)e=this._updateNode(new mt(this._previous().toString(),e,this._inclusive_or_expression()));return e}_inclusive_or_expression(){let e=this._exclusive_or_expression();for(;this._match(h.tokens.or);)e=this._updateNode(new mt(this._previous().toString(),e,this._exclusive_or_expression()));return e}_exclusive_or_expression(){let e=this._and_expression();for(;this._match(h.tokens.xor);)e=this._updateNode(new mt(this._previous().toString(),e,this._and_expression()));return e}_and_expression(){let e=this._equality_expression();for(;this._match(h.tokens.and);)e=this._updateNode(new mt(this._previous().toString(),e,this._equality_expression()));return e}_equality_expression(){let e=this._relational_expression();return this._match([h.tokens.equal_equal,h.tokens.not_equal])?this._updateNode(new mt(this._previous().toString(),e,this._relational_expression())):e}_relational_expression(){let e=this._shift_expression();for(;this._match([h.tokens.less_than,h.tokens.greater_than,h.tokens.less_than_equal,h.tokens.greater_than_equal]);)e=this._updateNode(new mt(this._previous().toString(),e,this._shift_expression()));return e}_shift_expression(){let e=this._additive_expression();for(;this._match([h.tokens.shift_left,h.tokens.shift_right]);)e=this._updateNode(new mt(this._previous().toString(),e,this._additive_expression()));return e}_additive_expression(){let e=this._multiplicative_expression();for(;this._match([h.tokens.plus,h.tokens.minus]);)e=this._updateNode(new mt(this._previous().toString(),e,this._multiplicative_expression()));return e}_multiplicative_expression(){let e=this._unary_expression();for(;this._match([h.tokens.star,h.tokens.forward_slash,h.tokens.modulo]);)e=this._updateNode(new mt(this._previous().toString(),e,this._unary_expression()));return e}_unary_expression(){return this._match([h.tokens.minus,h.tokens.bang,h.tokens.tilde,h.tokens.star,h.tokens.and])?this._updateNode(new Ae(this._previous().toString(),this._unary_expression())):this._singular_expression()}_singular_expression(){let e=this._primary_expression(),r=this._postfix_expression();return r&&(e.postfix=r),e}_postfix_expression(){if(this._match(h.tokens.bracket_left)){let e=this._short_circuit_or_expression();this._consume(h.tokens.bracket_right,"Expected ']'.");let r=this._updateNode(new Ar(e)),n=this._postfix_expression();return n&&(r.postfix=n),r}if(this._match(h.tokens.period)){let e=this._consume(h.tokens.name,"Expected member name."),r=this._postfix_expression(),n=this._updateNode(new cr(e.lexeme));return r&&(n.postfix=r),n}return null}_getStruct(e){var r;if(this._context.aliases.has(e)){let n=(r=this._context.aliases.get(e))===null||r===void 0?void 0:r.type;return n??null}if(this._context.structs.has(e)){let n=this._context.structs.get(e);return n??null}return null}_getType(e){let r=this._getStruct(e);if(r!==null)return r;switch(e){case"void":return R.void;case"bool":return R.bool;case"i32":return R.i32;case"u32":return R.u32;case"f32":return R.f32;case"f16":return R.f16;case"vec2f":return _.vec2f;case"vec3f":return _.vec3f;case"vec4f":return _.vec4f;case"vec2i":return _.vec2i;case"vec3i":return _.vec3i;case"vec4i":return _.vec4i;case"vec2u":return _.vec2u;case"vec3u":return _.vec3u;case"vec4u":return _.vec4u;case"vec2h":return _.vec2h;case"vec3h":return _.vec3h;case"vec4h":return _.vec4h;case"mat2x2f":return _.mat2x2f;case"mat2x3f":return _.mat2x3f;case"mat2x4f":return _.mat2x4f;case"mat3x2f":return _.mat3x2f;case"mat3x3f":return _.mat3x3f;case"mat3x4f":return _.mat3x4f;case"mat4x2f":return _.mat4x2f;case"mat4x3f":return _.mat4x3f;case"mat4x4f":return _.mat4x4f;case"mat2x2h":return _.mat2x2h;case"mat2x3h":return _.mat2x3h;case"mat2x4h":return _.mat2x4h;case"mat3x2h":return _.mat3x2h;case"mat3x3h":return _.mat3x3h;case"mat3x4h":return _.mat3x4h;case"mat4x2h":return _.mat4x2h;case"mat4x3h":return _.mat4x3h;case"mat4x4h":return _.mat4x4h;case"mat2x2i":return _.mat2x2i;case"mat2x3i":return _.mat2x3i;case"mat2x4i":return _.mat2x4i;case"mat3x2i":return _.mat3x2i;case"mat3x3i":return _.mat3x3i;case"mat3x4i":return _.mat3x4i;case"mat4x2i":return _.mat4x2i;case"mat4x3i":return _.mat4x3i;case"mat4x4i":return _.mat4x4i;case"mat2x2u":return _.mat2x2u;case"mat2x3u":return _.mat2x3u;case"mat2x4u":return _.mat2x4u;case"mat3x2u":return _.mat3x2u;case"mat3x3u":return _.mat3x3u;case"mat3x4u":return _.mat3x4u;case"mat4x2u":return _.mat4x2u;case"mat4x3u":return _.mat4x3u;case"mat4x4u":return _.mat4x4u}return null}_validateTypeRange(e,r){if(r.name==="i32"){if(e<-2147483648||e>2147483647)throw this._error(this._previous(),`Value out of range for i32: ${e}`)}else if(r.name==="u32"&&(e<0||e>4294967295))throw this._error(this._previous(),`Value out of range for u32: ${e}`)}_primary_expression(){if(this._match(h.tokens.ident)){let n=this._previous().toString();if(this._check(h.tokens.paren_left)){let s=this._argument_expression_list(),o=this._getType(n);return o!==null?this._updateNode(new Rt(o,s)):this._updateNode(new rs(n,s))}if(this._context.constants.has(n)){let s=this._context.constants.get(n);if(s)return this._updateNode(new wo(n,s.value))}return this._updateNode(new We(n))}if(this._match(h.tokens.int_literal)){let n=this._previous().toString(),s=n.endsWith("i")||n.endsWith("i")?R.i32:n.endsWith("u")||n.endsWith("U")?R.u32:R.x32,o=parseInt(n);return this._validateTypeRange(o,s),this._updateNode(new Be(new y(o,this._exec.getTypeInfo(s)),s))}if(this._match(h.tokens.uint_literal)){let n=parseInt(this._previous().toString());return this._validateTypeRange(n,R.u32),this._updateNode(new Be(new y(n,this._exec.getTypeInfo(R.u32)),R.u32))}if(this._match([h.tokens.decimal_float_literal,h.tokens.hex_float_literal])){let n=this._previous().toString(),s=n.endsWith("h");s&&(n=n.substring(0,n.length-1));let o=parseFloat(n);this._validateTypeRange(o,s?R.f16:R.f32);let a=s?R.f16:R.f32;return this._updateNode(new Be(new y(o,this._exec.getTypeInfo(a)),a))}if(this._match([h.keywords.true,h.keywords.false])){let n=this._previous().toString()===h.keywords.true.rule;return this._updateNode(new Be(new y(n?1:0,this._exec.getTypeInfo(R.bool)),R.bool))}if(this._check(h.tokens.paren_left))return this._paren_expression();if(this._match(h.keywords.bitcast)){this._consume(h.tokens.less_than,"Expected '<'.");let n=this._type_decl();this._consume(h.tokens.greater_than,"Expected '>'.");let s=this._paren_expression();return this._updateNode(new To(n,s))}let e=this._type_decl(),r=this._argument_expression_list();return this._updateNode(new Rt(e,r))}_argument_expression_list(){if(!this._match(h.tokens.paren_left))return null;let e=[];do{if(this._check(h.tokens.paren_right))break;let r=this._short_circuit_or_expression();e.push(r)}while(this._match(h.tokens.comma));return this._consume(h.tokens.paren_right,"Expected ')' for argument list"),e}_optional_paren_expression(){let e=this._match(h.tokens.paren_left),r=this._short_circuit_or_expression();return r.hasParen=e,e&&this._consume(h.tokens.paren_right,"Expected ')'."),r}_paren_expression(){this._consume(h.tokens.paren_left,"Expected '('.");let e=this._short_circuit_or_expression();return this._consume(h.tokens.paren_right,"Expected ')'."),e.hasParen=!0,e}_struct_decl(){if(!this._match(h.keywords.struct))return null;let e=this._currentLine,r=this._consume(h.tokens.ident,"Expected name for struct.").toString();this._consume(h.tokens.brace_left,"Expected '{' for struct body.");let n=[];for(;!this._check(h.tokens.brace_right);){let a=this._attribute(),i=this._consume(h.tokens.name,"Expected variable name.").toString();this._consume(h.tokens.colon,"Expected ':' for struct member type.");let u=this._attribute(),l=this._type_decl();l!=null&&(l.attributes=u),this._check(h.tokens.brace_right)?this._match(h.tokens.comma):this._consume(h.tokens.comma,"Expected ',' for struct member."),n.push(this._updateNode(new So(i,l,a)))}this._consume(h.tokens.brace_right,"Expected '}' after struct body.");let s=this._currentLine,o=this._updateNode(new Nt(r,n,e,s),e);return this._context.structs.set(r,o),o}_global_variable_decl(){let e=this._variable_decl();if(!e)return null;if(this._match(h.tokens.equal)){let r=this._const_expression();e.value=r}if(e.type!==null&&e.value instanceof Be){if(e.value.type.name!=="x32"&&e.type.getTypeName()!==e.value.type.getTypeName())throw this._error(this._peek(),`Invalid cast from ${e.value.type.name} to ${e.type.name}`);e.value.isScalar&&this._validateTypeRange(e.value.scalarValue,e.type),e.value.type=e.type}else e.type===null&&e.value instanceof Be&&(e.type=e.value.type.name==="x32"?R.i32:e.value.type,e.value.isScalar&&this._validateTypeRange(e.value.scalarValue,e.type));return e}_override_variable_decl(){let e=this._override_decl();return e&&this._match(h.tokens.equal)&&(e.value=this._const_expression()),e}_global_const_decl(){var e;if(!this._match(h.keywords.const))return null;let r=this._consume(h.tokens.name,"Expected variable name"),n=this._currentLine,s=null;if(this._match(h.tokens.colon)){let u=this._attribute();s=this._type_decl(),s!=null&&(s.attributes=u)}let o=null;this._consume(h.tokens.equal,"const declarations require an assignment");let a=this._short_circuit_or_expression();try{let u=[R.f32],l=a.constEvaluate(this._exec,u);l instanceof y&&this._validateTypeRange(l.value,u[0]),u[0]instanceof _&&u[0].format===null&&l.typeInfo instanceof ur&&l.typeInfo.format!==null&&(l.typeInfo.format.name==="f16"?u[0].format=R.f16:l.typeInfo.format.name==="f32"?u[0].format=R.f32:l.typeInfo.format.name==="i32"?u[0].format=R.i32:l.typeInfo.format.name==="u32"?u[0].format=R.u32:l.typeInfo.format.name==="bool"?u[0].format=R.bool:console.error(`TODO: implement template format type ${l.typeInfo.format.name}`)),o=this._updateNode(new Be(l,u[0])),this._exec.context.setVariable(r.toString(),l)}catch{o=a}if(s!==null&&o instanceof Be){if(o.type.name!=="x32"&&s.getTypeName()!==o.type.getTypeName())throw this._error(this._peek(),`Invalid cast from ${o.type.name} to ${s.name}`);o.type=s,o.isScalar&&this._validateTypeRange(o.scalarValue,o.type)}else s===null&&o instanceof Be&&(s=(e=o?.type)!==null&&e!==void 0?e:R.f32,s===R.x32&&(s=R.i32));let i=this._updateNode(new _n(r.toString(),s,"","",o),n);return this._context.constants.set(i.name,i),i}_global_let_decl(){if(!this._match(h.keywords.let))return null;let e=this._currentLine,r=this._consume(h.tokens.name,"Expected variable name"),n=null;if(this._match(h.tokens.colon)){let o=this._attribute();n=this._type_decl(),n!=null&&(n.attributes=o)}let s=null;if(this._match(h.tokens.equal)&&(s=this._const_expression()),n!==null&&s instanceof Be){if(s.type.name!=="x32"&&n.getTypeName()!==s.type.getTypeName())throw this._error(this._peek(),`Invalid cast from ${s.type.name} to ${n.name}`);s.type=n}else n===null&&s instanceof Be&&(n=s.type.name==="x32"?R.i32:s.type);return s instanceof Be&&s.isScalar&&this._validateTypeRange(s.scalarValue,n),this._updateNode(new Mr(r.toString(),n,"","",s),e)}_const_expression(){return this._short_circuit_or_expression()}_variable_decl(){if(!this._match(h.keywords.var))return null;let e=this._currentLine,r="",n="";this._match(h.tokens.less_than)&&(r=this._consume(h.storage_class,"Expected storage_class.").toString(),this._match(h.tokens.comma)&&(n=this._consume(h.access_mode,"Expected access_mode.").toString()),this._consume(h.tokens.greater_than,"Expected '>'."));let s=this._consume(h.tokens.name,"Expected variable name"),o=null;if(this._match(h.tokens.colon)){let a=this._attribute();o=this._type_decl(),o!=null&&(o.attributes=a)}return this._updateNode(new It(s.toString(),o,r,n,null),e)}_override_decl(){if(!this._match(h.keywords.override))return null;let e=this._consume(h.tokens.name,"Expected variable name"),r=null;if(this._match(h.tokens.colon)){let n=this._attribute();r=this._type_decl(),r!=null&&(r.attributes=n)}return this._updateNode(new Qn(e.toString(),r,null))}_diagnostic(){this._consume(h.tokens.paren_left,"Expected '('");let e=this._consume(h.tokens.ident,"Expected severity control name.");this._consume(h.tokens.comma,"Expected ','");let r=this._consume(h.tokens.ident,"Expected diagnostic rule name.").toString();return this._match(h.tokens.period)&&(r+=`.${this._consume(h.tokens.ident,"Expected diagnostic message.").toString()}`),this._consume(h.tokens.paren_right,"Expected ')'"),this._updateNode(new yo(e.toString(),r))}_enable_directive(){let e=this._consume(h.tokens.ident,"identity expected.");return this._updateNode(new zi(e.toString()))}_requires_directive(){let e=[this._consume(h.tokens.ident,"identity expected.").toString()];for(;this._match(h.tokens.comma);){let r=this._consume(h.tokens.ident,"identity expected.");e.push(r.toString())}return this._updateNode(new Hi(e))}_type_alias(){let e=this._consume(h.tokens.ident,"identity expected.");this._consume(h.tokens.equal,"Expected '=' for type alias.");let r=this._type_decl();if(r===null)throw this._error(this._peek(),"Expected Type for Alias.");this._context.aliases.has(r.name)&&(r=this._context.aliases.get(r.name).type);let n=this._updateNode(new ts(e.toString(),r));return this._context.aliases.set(n.name,n),n}_type_decl(){var e,r,n;if(this._check([h.tokens.ident,...h.texel_format,h.keywords.bool,h.keywords.f32,h.keywords.i32,h.keywords.u32])){let a=this._advance().toString();if(this._context.structs.has(a))return(e=this._context.structs.get(a))!==null&&e!==void 0?e:null;if(this._context.aliases.has(a))return(n=(r=this._context.aliases.get(a))===null||r===void 0?void 0:r.type)!==null&&n!==void 0?n:null;if(!this._getType(a)){let i=this._updateNode(new vo(a));return this._forwardTypeCount++,i}return this._updateNode(new R(a))}let s=this._texture_sampler_types();if(s)return s;if(this._check(h.template_types)){let a=this._advance().toString(),i=null,u=null;return this._match(h.tokens.less_than)&&(i=this._type_decl(),u=null,this._match(h.tokens.comma)&&(u=this._consume(h.access_mode,"Expected access_mode for pointer").toString()),this._consume(h.tokens.greater_than,"Expected '>' for type.")),this._updateNode(new _(a,i,u))}if(this._match(h.keywords.ptr)){let a=this._previous().toString();this._consume(h.tokens.less_than,"Expected '<' for pointer.");let i=this._consume(h.storage_class,"Expected storage_class for pointer");this._consume(h.tokens.comma,"Expected ',' for pointer.");let u=this._type_decl(),l=null;return this._match(h.tokens.comma)&&(l=this._consume(h.access_mode,"Expected access_mode for pointer").toString()),this._consume(h.tokens.greater_than,"Expected '>' for pointer."),this._updateNode(new bn(a,i.toString(),u,l))}let o=this._attribute();if(this._match(h.keywords.array)){let a=null,i=-1,u=this._previous(),l=null;if(this._match(h.tokens.less_than)){a=this._type_decl(),this._context.aliases.has(a.name)&&(a=this._context.aliases.get(a.name).type);let f="";if(this._match(h.tokens.comma)){l=this._shift_expression();try{f=l.constEvaluate(this._exec).toString(),l=null}catch{f="1"}}this._consume(h.tokens.greater_than,"Expected '>' for array."),i=f?parseInt(f):0}let c=this._updateNode(new Nr(u.toString(),o,a,i));return l&&this._deferArrayCountEval.push({arrayType:c,countNode:l}),c}return null}_texture_sampler_types(){if(this._match(h.sampler_type))return this._updateNode(new Dr(this._previous().toString(),null,null));if(this._match(h.depth_texture_type))return this._updateNode(new Dr(this._previous().toString(),null,null));if(this._match(h.sampled_texture_type)||this._match(h.multisampled_texture_type)){let e=this._previous();this._consume(h.tokens.less_than,"Expected '<' for sampler type.");let r=this._type_decl();return this._consume(h.tokens.greater_than,"Expected '>' for sampler type."),this._updateNode(new Dr(e.toString(),r,null))}if(this._match(h.storage_texture_type)){let e=this._previous();this._consume(h.tokens.less_than,"Expected '<' for sampler type.");let r=this._consume(h.texel_format,"Invalid texel format.").toString();this._consume(h.tokens.comma,"Expected ',' after texel format.");let n=this._consume(h.access_mode,"Expected access mode for storage texture type.").toString();return this._consume(h.tokens.greater_than,"Expected '>' for sampler type."),this._updateNode(new Dr(e.toString(),r,n))}return null}_attribute(){let e=[];for(;this._match(h.tokens.attr);){let r=this._consume(h.attribute_name,"Expected attribute name"),n=this._updateNode(new Fo(r.toString(),null));if(this._match(h.tokens.paren_left)){if(n.value=this._consume(h.literal_or_ident,"Expected attribute value").toString(),this._check(h.tokens.comma)){this._advance();do{let s=this._consume(h.literal_or_ident,"Expected attribute value").toString();Array.isArray(n.value)||(n.value=[n.value]),n.value.push(s)}while(this._match(h.tokens.comma))}this._consume(h.tokens.paren_right,"Expected ')'")}e.push(n)}return e.length===0?null:e}},ru=class extends Gr{constructor(e){super(),e!==void 0&&this.update(e)}update(e){let r=new tu().parse(e);this.updateAST(r)}};function Pr(t,e){return Object.fromEntries(e.map(r=>{let n=Km(t,r,0);return[r.name,{typeDefinition:n,group:r.group,binding:r.binding,size:n.size}]}))}function nh(t,e,r){return{fields:Object.fromEntries(e.members.map(s=>[s.name,{offset:s.offset,type:au(t,s.type,0)}])),size:e.size,offset:r}}function Xm(t){if(t.name.includes("depth"))return"depth";switch(t.format?.name){case"f32":return"float";case"i32":return"sint";case"u32":return"uint";default:throw new Error("unknown texture sample type")}}function Zf(t){return t.name.includes("2d_array")?"2d-array":t.name.includes("cube_array")?"cube-array":t.name.includes("3d")?"3d":t.name.includes("1d")?"1d":t.name.includes("cube")?"cube":"2d"}function jm(t){switch(t.access){case"read":return"read-only";case"write":return"write-only";case"read_write":return"read-write";default:throw new Error("unknonw storage texture access")}}function Ym(t){return t.name.endsWith("_comparison")?"comparison":"filtering"}function qm(t,e){let{binding:r,access:n,type:s}=t;switch(t.resourceType){case Ie.Uniform:return{binding:r,visibility:e,buffer:{...t.size&&{minBindingSize:t.size}}};case Ie.Storage:return{binding:r,visibility:e,buffer:{type:n===""||n==="read"?"read-only-storage":"storage",...t.size&&{minBindingSize:t.size}}};case Ie.Texture:{if(s.name==="texture_external")return{binding:r,visibility:e,externalTexture:{}};let o=s.name.includes("multisampled");return{binding:r,visibility:e,texture:{sampleType:Xm(s),viewDimension:Zf(s),multisampled:o}}}case Ie.Sampler:return{binding:r,visibility:e,sampler:{type:Ym(s)}};case Ie.StorageTexture:return{binding:r,visibility:e,storageTexture:{access:jm(s),format:s.format.name,viewDimension:Zf(s)}};default:throw new Error("unknown resource type")}}function Li(t,e){let r={};for(let n of t)r[n.name]={stage:e,resources:n.resources.map(s=>{let{name:o,group:a}=s;return{name:o,group:a,entry:qm(s,e)}})};return r}function Ft(t){let e=new ru(t),r=Object.fromEntries(e.structs.map(f=>[f.name,nh(e,f,0)])),n=Pr(e,e.uniforms),s=Pr(e,e.immediates),o=Pr(e,e.storage.filter(f=>f.resourceType===Ie.Storage)),a=Pr(e,e.storage.filter(f=>f.resourceType===Ie.StorageTexture)),i=Pr(e,e.textures.filter(f=>f.type.name!=="texture_external")),u=Pr(e,e.textures.filter(f=>f.type.name==="texture_external")),l=Pr(e,e.samplers),c={...Li(e.entry.vertex,GPUShaderStage.VERTEX),...Li(e.entry.fragment,GPUShaderStage.FRAGMENT),...Li(e.entry.compute,GPUShaderStage.COMPUTE)};return{externalTextures:u,immediates:s,samplers:l,structs:r,storages:o,storageTextures:a,textures:i,uniforms:n,entryPoints:c}}function Pi(t,e=""){if(!t)throw new Error(e)}function Km(t,e,r){switch(e.resourceType){case Ie.Immediate:case Ie.Uniform:case Ie.Storage:case Ie.StorageTexture:return au(t,e.type,r);default:return{size:0,type:e.type.name}}}function au(t,e,r){if(e.isArray){Pi(!e.isStruct,"struct array is invalid"),Pi(!e.isStruct,"template array is invalid");let n=e;return{size:n.size,elementType:au(t,n.format,r),numElements:n.count}}else{if(e.isStruct)return Pi(!e.isTemplate,"template struct is invalid"),nh(t,e,r);{let n=e,s=e.isTemplate?`${n.name}<${n.format.name}>`:e.name;return{size:e.size,type:s}}}}var Zm=new Map([[Int8Array,{formats:["sint8","snorm8"],defaultForType:1}],[Uint8Array,{formats:["uint8","unorm8"],defaultForType:1}],[Int16Array,{formats:["sint16","snorm16"],defaultForType:1}],[Uint16Array,{formats:["uint16","unorm16"],defaultForType:1}],[Int32Array,{formats:["sint32","snorm32"],defaultForType:0}],[Uint32Array,{formats:["uint32","unorm32"],defaultForType:0}],[Float16Array,{formats:["float16","float16"],defaultForType:0}],[Float32Array,{formats:["float32","float32"],defaultForType:0}]]),f0=new Map([...Zm.entries()].map(([t,{formats:[e,r]}])=>[[e,t],[r,t]]).flat());var h0={"8snorm":Int8Array,"8unorm":Uint8Array,"8sint":Int8Array,"8uint":Uint8Array,"16snorm":Int16Array,"16unorm":Uint16Array,"16sint":Int16Array,"16uint":Uint16Array,"32snorm":Int32Array,"32unorm":Uint32Array,"32sint":Int32Array,"32uint":Uint32Array,"16float":Float16Array,"32float":Float32Array};var iu=t=>t.features.has("texture-formats-tier1"),uu=t=>t.features.has("shader-f16"),sh=async t=>{let e=[];return iu(t)&&e.push("texture-formats-tier1"),uu(t)&&e.push("shader-f16"),await t?.requestDevice({requiredFeatures:e})};function oh(t,e,r=GPUTextureUsage.STORAGE_BINDING|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT){try{return t.createTexture({size:[4,4,1],format:e,usage:r}).destroy(),!0}catch{return!1}}var Jm=/const WORKGROUP_SIZE_X(\s*)=(\s*)\d+u*;/,Qm=/const WORKGROUP_SIZE_Y(\s*)=(\s*)\d+u*;/,Wr=(t,{workgroupSizeX:e,workgroupSizeY:r})=>t.replace(Jm,`const WORKGROUP_SIZE_X$1=$2${e}u;`).replace(Qm,`const WORKGROUP_SIZE_Y$1=$2${r}u;`),ep=/texture_storage_2d<\w+,(\s*)write>/,Jt=(t,e)=>t.replace(ep,`texture_storage_2d<${e},$1write>`),tp=/alias float(\s*)=(\s*)f32;/,ss=t=>t.replace(tp,"enable f16;alias float$1=$2f16;");var ah="struct Params{outWidth:u32,outHeight:u32,}@group(0)@binding(0)var inSampler:sampler;@group(0)@binding(1)var inTexture:texture_2d<f32>;@group(0)@binding(2)var outTexture:texture_storage_2d<rgba8unorm,write>;@group(0)@binding(3)var<uniform> params:Params;const WORKGROUP_SIZE_X=16u;const WORKGROUP_SIZE_Y=16u;@compute @workgroup_size(WORKGROUP_SIZE_X,WORKGROUP_SIZE_Y,1)fn main(@builtin(global_invocation_id)gid:vec3u){if gid.x>=params.outWidth||gid.y>=params.outHeight{return;}let uv=(vec2f(gid.xy)+0.5)/vec2f(f32(params.outWidth),f32(params.outHeight));let color=textureSampleLevel(inTexture,inSampler,uv,0.0);textureStore(outTexture,gid.xy,color);}";var Rr=(t,e,r,n,s,o)=>{let a=Jt(ah,s),i=16,u=16,l=Math.ceil(r/i),c=Math.ceil(n/u);a=Wr(a,{workgroupSizeX:i,workgroupSizeY:u});let f=Ft(a),d=xt(f.uniforms.params),p=t.createBuffer({size:d.arrayBuffer.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST});d.set({outWidth:r,outHeight:n}),t.queue.writeBuffer(p,0,d.arrayBuffer);let v=t.createShaderModule({label:`Resize shader module to ${r}x${n} with ${s} & ${o}`,code:a}),A=t.createComputePipeline({layout:"auto",label:`Resize shader pipeline to ${r}x${n} with ${s} & ${o}`,compute:{module:v}}),w=t.createTexture({label:`Resize out texture to ${r}x${n} with ${s} & ${o}`,format:s,size:[r,n],usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.STORAGE_BINDING}),S=w.createView(),k=t.createSampler({magFilter:o,minFilter:o,addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"}),E=null,I=null;return{render(C,B){return F(!e(),O.ContextLost),B!==I&&(E=t.createBindGroup({layout:A.getBindGroupLayout(0),entries:[{binding:0,resource:k},{binding:1,resource:B.createView()},{binding:2,resource:S},{binding:3,resource:{buffer:p}}]}),I=B),C.setPipeline(A),C.setBindGroup(0,E),C.dispatchWorkgroups(l,c),w},release(){p.destroy(),w.destroy(),E=null,I=null}}};var Do=(t,e,r,n,s,o)=>{let a=new Map,i=Rr(t,e,n,s,r,o),u=(l,c)=>{let f=`${l}x${c}`,d=a.get(f);return d||(d=t.createTexture({label:"Video Frame to Texture",format:"rgba8unorm",size:[l,c],usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.COPY_SRC|GPUTextureUsage.RENDER_ATTACHMENT}),a.set(f,d)),d};return{render:(l,c)=>{F(!e(),O.ContextLost);let f=l instanceof VideoFrame?l.displayWidth:l.width,d=l instanceof VideoFrame?l.displayHeight:l.height,p=u(f,d);return t.queue.copyExternalImageToTexture({source:l,flipY:!1},{texture:p},{width:f,height:d}),i.render(c,p)},release:()=>{for(let l of a.values())l.destroy();a.clear(),i.release()}}};var cu="alias float=f32;struct Thresholds{background:float,foreground:float,}@group(0)@binding(0)var linearSampler:sampler;@group(0)@binding(1)var nearestSampler:sampler;@group(0)@binding(2)var<uniform> thresholds:Thresholds;@group(1)@binding(0)var bgTexture:texture_2d<f32>;@group(1)@binding(1)var personTexture:texture_2d<f32>;@group(1)@binding(2)var maskTexture:texture_2d<f32>;struct VertexOutput{@builtin(position)Position:vec4f,@location(0)fragUV:vec2f,}@vertex fn vert_main(@builtin(vertex_index)VertexIndex:u32)->VertexOutput{const pos=array(vec2(1.0,1.0),vec2(1.0,-1.0),vec2(-1.0,-1.0),vec2(1.0,1.0),vec2(-1.0,-1.0),vec2(-1.0,1.0),);const uv=array(vec2(1.0,0.0),vec2(1.0,1.0),vec2(0.0,1.0),vec2(1.0,0.0),vec2(0.0,1.0),vec2(0.0,0.0),);var output:VertexOutput;output.Position=vec4(pos[VertexIndex],0.0,1.0);output.fragUV=uv[VertexIndex];return output;}@fragment fn frag_main(@location(0)fragUV:vec2f)->@location(0)vec4f{let bg=textureSample(bgTexture,linearSampler,fragUV);let person=textureSample(personTexture,linearSampler,fragUV);let mask=textureSample(maskTexture,nearestSampler,fragUV);let alpha=smoothstep(thresholds.background,thresholds.foreground,mask.r);return mix(bg,person,alpha);}";var ih=(t,e,r,n)=>{let s=t.getContext("webgpu");if(!s)throw Error("WebGPU not supported on the canvas.");s.configure({device:e,format:r,alphaMode:"premultiplied"});let o=Ft(cu),a=xt(o.uniforms.thresholds),i=e.createShaderModule({label:"blender shader",code:cu}),u=e.createRenderPipeline({label:"blender pipeline",layout:"auto",vertex:{module:i},fragment:{module:i,targets:[{format:r}]}}),l=e.createSampler({addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge",magFilter:"linear",minFilter:"linear"}),c=e.createSampler({addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge",magFilter:"nearest",minFilter:"nearest"}),f=e.createBuffer({size:a.arrayBuffer.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),d=B=>{a.set({background:B.backgroundThreshold,foreground:B.foregroundThreshold}),e.queue.writeBuffer(f,0,a.arrayBuffer)},p={loadOp:"load",storeOp:"store"},v={label:"blender renderPass",colorAttachments:[p]},A=e.createBindGroup({layout:u.getBindGroupLayout(0),entries:[{binding:0,resource:l},{binding:1,resource:c},{binding:2,resource:{buffer:f}}]}),w=null,S=null,k=null,E=null,I=-1,C=-1;return{render:(B,{foreground:z,background:N,mask:U},V)=>{F(!n(),O.ContextLost),p.view=s.getCurrentTexture().createView(),k===N&&E===z&&S===U||(w=e.createBindGroup({layout:u.getBindGroupLayout(1),entries:[{binding:0,resource:N.createView()},{binding:1,resource:z.createView()},{binding:2,resource:U.createView()}]}),k=N,E=z,S=U),I===V.backgroundThreshold&&C===V.foregroundThreshold||(d(V),I=V.backgroundThreshold,C=V.foregroundThreshold);let P=B.beginRenderPass(v);P.setPipeline(u),P.setBindGroup(0,A),P.setBindGroup(1,w),P.draw(6),P.end()},release:()=>{f.destroy(),I=-1,C=-1}}};var uh="struct VertexOutput{@builtin(position)position:vec4f,@location(0)uv:vec2f,};@vertex fn vs_main(@builtin(vertex_index)vertex_index:u32)->VertexOutput{var out:VertexOutput;let x=f32((vertex_index<<1u)&2u);let y=f32(vertex_index&2u);out.position=vec4f(x*2.0-1.0,1.0-y*2.0,0.0,1.0);out.uv=vec2f(x,y);return out;}@group(0)@binding(0)var u_sampler:sampler;@group(0)@binding(1)var u_frame:texture_2d<f32>;@fragment fn downsample_fs(in:VertexOutput)->@location(0)vec4f{let src_size=vec2f(textureDimensions(u_frame));let halfpixel=0.5/src_size;let uv=in.uv;var sum=textureSample(u_frame,u_sampler,uv)*4.0;sum+=textureSample(u_frame,u_sampler,uv+halfpixel);sum+=textureSample(u_frame,u_sampler,uv-halfpixel);sum+=textureSample(u_frame,u_sampler,uv+vec2f(halfpixel.x,-halfpixel.y));sum+=textureSample(u_frame,u_sampler,uv+vec2f(-halfpixel.x,halfpixel.y));return sum*0.125;}@fragment fn upsample_fs(in:VertexOutput)->@location(0)vec4f{let src_size=vec2f(textureDimensions(u_frame));let halfpixel=0.5/src_size;let uv=in.uv;let double_half=halfpixel*2.0;var sum=textureSample(u_frame,u_sampler,uv+vec2f(-double_half.x,0.0));sum+=textureSample(u_frame,u_sampler,uv+vec2f(double_half.x,0.0));sum+=textureSample(u_frame,u_sampler,uv+vec2f(0.0,double_half.y));sum+=textureSample(u_frame,u_sampler,uv+vec2f(0.0,-double_half.y));sum+=textureSample(u_frame,u_sampler,uv+vec2f(-halfpixel.x,halfpixel.y))*2.0;sum+=textureSample(u_frame,u_sampler,uv+vec2f(halfpixel.x,halfpixel.y))*2.0;sum+=textureSample(u_frame,u_sampler,uv+vec2f(halfpixel.x,-halfpixel.y))*2.0;sum+=textureSample(u_frame,u_sampler,uv+vec2f(-halfpixel.x,-halfpixel.y))*2.0;return sum*0.08333333333;}";var rp=At(1,9),lu=(t,e,r,n,s)=>{let o=t.createShaderModule({label:"dual blur compute shader",code:uh}),a=t.createRenderPipeline({label:"dual blur downsample compute pipeline",layout:"auto",vertex:{module:o,entryPoint:"vs_main"},fragment:{module:o,targets:[{format:n}],entryPoint:"downsample_fs"}}),i=t.createRenderPipeline({label:"dual blur upsample compute pipeline",layout:"auto",vertex:{module:o,entryPoint:"vs_main"},fragment:{module:o,targets:[{format:n}],entryPoint:"upsample_fs"}}),u=t.createSampler({magFilter:"linear",minFilter:"linear",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"}),l=(C,B)=>t.createTexture({label:"dual filter blur texture",format:n,size:[C,B],usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.RENDER_ATTACHMENT}),c=[],f=-1,d=-1,p=[],v=[],A=[],w=[],S=null,k=null,E=null;function I(C,B,z){let N=rp(C+1);if(c.length!==N||f!==B||d!==z){for(let U of c)U.texture.destroy();c=[],A=[],p=[],w=[],S=null,k=null;for(let U=0;U<N;U++){let V=Math.max(Math.trunc(B/2**U),1),P=Math.max(Math.trunc(z/2**U),1),te=l(V,P);c.push({texture:te,view:te.createView(),width:V,height:P})}for(let U=2;U<c.length;U++){let V=c[U-1],P=c[U];F(V),F(P),A.push(t.createBindGroup({layout:a.getBindGroupLayout(0),entries:[{binding:0,resource:u},{binding:1,resource:V.view}]})),p.push({label:`downsample render pass ${U}`,colorAttachments:[{loadOp:"load",storeOp:"store",view:P.view}]})}for(let U=c.length-2;U>=0;U--){let V=c[U+1],P=c[U];F(V),F(P),w.push(t.createBindGroup({layout:i.getBindGroupLayout(0),entries:[{binding:0,resource:u},{binding:1,resource:V.view}]})),v.push({label:`upsample render pass ${U}`,colorAttachments:[{loadOp:"load",storeOp:"store",view:P.view}]})}f=B,d=z}}return{render:(C,B,z)=>{F(!s(),O.ContextLost),I(z,e,r);let N=c[1];F(N),B!==S&&(k=t.createBindGroup({layout:a.getBindGroupLayout(0),entries:[{binding:0,resource:u},{binding:1,resource:B.createView()}]}),E={label:"downsample render pass 0",colorAttachments:[{loadOp:"load",storeOp:"store",view:N.view}]},S=B),F(E);let U=C.beginRenderPass(E);U.setPipeline(a),U.setBindGroup(0,k),U.draw(3),U.end();for(let P=2;P<c.length;P++){let te=c[P];F(te);let ue=A[P-2],me=p[P-2];F(ue),F(me);let pe=C.beginRenderPass(me);pe.setPipeline(a),pe.setBindGroup(0,ue),pe.draw(3),pe.end()}for(let P=0;P<w.length;P++){let te=c.length-2-P,ue=c[te];F(ue);let me=w[P],pe=v[P];F(me),F(pe);let re=C.beginRenderPass(pe);re.setPipeline(i),re.setBindGroup(0,me),re.draw(3),re.end()}let V=c[0];return F(V),V.texture},release:()=>{for(let C of c)C.texture.destroy();c=[],p=[],v=[],A=[],w=[],S=null,k=null}}};var ch="alias float=f32;alias texture_storage=texture_storage_2d<rgba16float,write>;struct Params{maskCombineRatio:f32,}@group(0)@binding(0)var outputTex:texture_storage;@group(0)@binding(1)var<uniform> params:Params;@group(1)@binding(0)var mask:texture_2d<f32>;@group(1)@binding(1)var prevMask:texture_2d<f32>;const WORKGROUP_SIZE_X=16u;const WORKGROUP_SIZE_Y=16u;fn smoothingMask(prevMask:texture_2d<f32>,mask:texture_2d<f32>,uv:vec2<u32>,ratio:f32)->float{let prevMaskValue=float(textureLoad(prevMask,uv,0u).r);let currMaskValue=float(textureLoad(mask,uv,0u).r);let c1=float(5.68842);let c2=float(-0.748699);let c3=float(-57.8051);let c4=float(291.309);let c5=float(-624.717);let t=currMaskValue-0.5;let x=t*t;let uncertainty=1.0-min(1.0,x*(c1+x*(c2+x*(c3+x*(c4+x*c5)))));return currMaskValue+(prevMaskValue-currMaskValue)*(uncertainty*float(ratio));}@compute @workgroup_size(WORKGROUP_SIZE_X,WORKGROUP_SIZE_Y,1)fn main(@builtin(global_invocation_id)gid:vec3u){let dims=textureDimensions(mask,0);if gid.x>=dims.x||gid.y>=dims.y{return;}let uv=vec2u(gid.xy);let alpha=smoothingMask(prevMask,mask,uv,params.maskCombineRatio);textureStore(outputTex,uv,vec4f(f32(alpha),0.0,0.0,1.0));}";var fu=(t,e,r,n,s,o)=>{let u=Math.ceil(n/16),l=Math.ceil(s/16),c=Wr(ch,{workgroupSizeX:16,workgroupSizeY:16});c=Jt(c,r),o&&(c=ss(c));let f=t.createTexture({label:"Smoothed Mask Texture",format:r,size:[n,s],usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.STORAGE_BINDING|GPUTextureUsage.COPY_SRC}),d=Ft(c),p=xt(d.uniforms.params),v=t.createBuffer({size:p.arrayBuffer.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),A=z=>{p.set({maskCombineRatio:z.maskCombineRatio}),t.queue.writeBuffer(v,0,p.arrayBuffer)},w=t.createShaderModule({label:"smoothing mask compute",code:c}),S=t.createComputePipeline({label:"smoothing mask pipeline",layout:"auto",compute:{module:w}}),k=t.createBindGroup({layout:S.getBindGroupLayout(0),entries:[{binding:0,resource:f.createView()},{binding:1,resource:{buffer:v}}]}),E=null,I=null,C=null,B=-1;return{render:(z,N,U,V)=>{F(!e(),O.ContextLost),N===E&&U===I||(C=t.createBindGroup({layout:S.getBindGroupLayout(1),entries:[{binding:0,resource:N.createView()},{binding:1,resource:U.createView()}]}),E=N,I=U),B!==V.maskCombineRatio&&(A(V),B=V.maskCombineRatio);let P=z.beginComputePass({label:"smoothing mask compute pass"});return P.setPipeline(S),P.setBindGroup(0,k),P.setBindGroup(1,C),P.dispatchWorkgroups(u,l),P.end(),f},release:()=>{f.destroy(),v.destroy(),E=null,I=null,C=null,B=-1}}};var lh=(t,e)=>{let r=new Map,n=(s,o,a,i)=>{let u=`${s}x${o}x${a}-${i}`,l=r.get(u);return l||(l=t.createTexture({size:{width:s,height:o,depthOrArrayLayers:a},format:i,usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST}),r.set(u,l)),l};return{render:(s,o)=>{F(!e(),O.ContextLost);let a=n(o.width,o.height,o.depthOrArrayLayers,o.format);return s.copyTextureToTexture({texture:o},{texture:a},{width:a.width,height:a.height,depthOrArrayLayers:a.depthOrArrayLayers}),a},release:()=>{for(let s of r.values())s.destroy();r.clear()}}};var hu="struct Params{sigmaSpace:f32,sigmaRangeLo:f32,sigmaRangeHi:f32,backgroundThreshold:f32,foregroundThreshold:f32,texelWidth:f32,texelHeight:f32,width:u32,height:u32,}@group(0)@binding(0)var inputTex:texture_2d<f32>;@group(0)@binding(1)var guideTex:texture_2d<f32>;@group(1)@binding(0)var<uniform> params:Params;@group(1)@binding(1)var outputTex:texture_storage_2d<rgba16float,write>;const MAX_RADIUS:u32=24u;const FOREGROUND_BIAS:f32=1.3;const EDGE_THRESHOLD:f32=0.08;const SPARSITY_FACTOR:f32=0.66;const TILE_W:u32=32u;const TILE_ROWS:u32=4u;var<workgroup> tile_mask:array<array<f32,80>,4>;var<workgroup> tile_guide_lum:array<array<f32,80>,4>;fn gaussian_sqr(dist2:f32,sigma2:f32)->f32{return exp(-0.5*dist2/max(sigma2,1e-6));}fn luminance(c:vec3f)->f32{return dot(c,vec3f(0.299,0.587,0.114));}@compute @workgroup_size(TILE_W,TILE_ROWS,1)fn main(@builtin(global_invocation_id)gid:vec3u,@builtin(local_invocation_id)lid:vec3u,@builtin(workgroup_id)wg_id:vec3u,){let x=i32(gid.x);let y=i32(gid.y);let lx=i32(lid.x);let ly=i32(lid.y);let radius=min(i32(floor(params.sigmaSpace+0.5)),i32(MAX_RADIUS));let w=i32(params.width);let h=i32(params.height);let tile_base_x=i32(wg_id.x)*i32(TILE_W);let shared_center=lx+radius;let gx_center=clamp(tile_base_x+lx,0,w-1);let gy=clamp(y,0,h-1);tile_mask[ly][shared_center]=textureLoad(inputTex,vec2i(gx_center,gy),0).r;tile_guide_lum[ly][shared_center]=luminance(textureLoad(guideTex,vec2i(gx_center,gy),0).rgb);if lx<radius{let halo_x=clamp(tile_base_x+lx-radius,0,w-1);tile_mask[ly][lx]=textureLoad(inputTex,vec2i(halo_x,gy),0).r;tile_guide_lum[ly][lx]=luminance(textureLoad(guideTex,vec2i(halo_x,gy),0).rgb);}if lx>=i32(TILE_W)-radius{let shared_right=shared_center+radius;let halo_x=clamp(tile_base_x+lx+radius,0,w-1);tile_mask[ly][shared_right]=textureLoad(inputTex,vec2i(halo_x,gy),0).r;tile_guide_lum[ly][shared_right]=luminance(textureLoad(guideTex,vec2i(halo_x,gy),0).rgb);}workgroupBarrier();if x>=w||y>=h{return;}let center_mask=tile_mask[ly][shared_center];let center_lum=tile_guide_lum[ly][shared_center];let t=smoothstep(params.backgroundThreshold,params.foregroundThreshold,center_mask);let sigma_color=mix(params.sigmaRangeLo,params.sigmaRangeHi,t);let sigma_texel=params.texelWidth*params.sigmaSpace;let sigma_texel2=sigma_texel*sigma_texel;let sigma_color2=sigma_color*sigma_color;let sparsity=max(1.0,sqrt(params.sigmaSpace)*SPARSITY_FACTOR);let step_i=max(1,i32(floor(sparsity+0.5)));let offset_i=select(0,step_i/2,step_i>1);let fg_w=mix(1.0,FOREGROUND_BIAS,center_mask);var acc:f32=0.0;var total_weight:f32=0.0;for(var offset=-radius;offset<=radius;offset=offset+1){let sparsitySkip=((offset+offset_i)% step_i)!=0;if sparsitySkip{continue;}let idx=shared_center+offset;let neighbor_mask=tile_mask[ly][idx];let neighbor_lum=tile_guide_lum[ly][idx];let dx=f32(offset)*params.texelWidth;let space_weight=gaussian_sqr(dx*dx,sigma_texel2);let dL=abs(neighbor_lum-center_lum);if dL>EDGE_THRESHOLD{continue;}let color_weight=gaussian_sqr(dL*dL,sigma_color2);let w_sample=space_weight*color_weight*fg_w;total_weight=total_weight+w_sample;acc=acc+w_sample*neighbor_mask;}let result=acc/max(total_weight,1e-6);textureStore(outputTex,gid.xy,vec4f(result,0.0,0.0,1.0));}";var fh="struct Params{sigmaSpace:f32,sigmaRangeLo:f32,sigmaRangeHi:f32,backgroundThreshold:f32,foregroundThreshold:f32,texelWidth:f32,texelHeight:f32,width:u32,height:u32,}@group(0)@binding(0)var inputTex:texture_2d<f32>;@group(0)@binding(1)var guideTex:texture_2d<f32>;@group(1)@binding(0)var<uniform> params:Params;@group(1)@binding(1)var outputTex:texture_storage_2d<rgba16float,write>;const MAX_RADIUS:u32=24u;const FOREGROUND_BIAS:f32=1.3;const EDGE_THRESHOLD:f32=0.08;const SPARSITY_FACTOR:f32=0.66;const TILE_COLS:u32=4u;const TILE_H:u32=32u;var<workgroup> tile_mask:array<array<f32,80>,4>;var<workgroup> tile_guide_lum:array<array<f32,80>,4>;fn gaussian_sqr(dist2:f32,sigma2:f32)->f32{return exp(-0.5*dist2/max(sigma2,1e-6));}fn luminance(c:vec3f)->f32{return dot(c,vec3f(0.299,0.587,0.114));}@compute @workgroup_size(TILE_COLS,TILE_H,1)fn main(@builtin(global_invocation_id)gid:vec3u,@builtin(local_invocation_id)lid:vec3u,@builtin(workgroup_id)wg_id:vec3u,){let x=i32(gid.x);let y=i32(gid.y);let lx=i32(lid.x);let ly=i32(lid.y);let radius=min(i32(floor(params.sigmaSpace+0.5)),i32(MAX_RADIUS));let w=i32(params.width);let h=i32(params.height);let tile_base_y=i32(wg_id.y)*i32(TILE_H);let shared_center=ly+radius;let gx=clamp(x,0,w-1);let gy_center=clamp(tile_base_y+ly,0,h-1);tile_mask[lx][shared_center]=textureLoad(inputTex,vec2i(gx,gy_center),0).r;tile_guide_lum[lx][shared_center]=luminance(textureLoad(guideTex,vec2i(gx,gy_center),0).rgb);if ly<radius{let halo_y=clamp(tile_base_y+ly-radius,0,h-1);tile_mask[lx][ly]=textureLoad(inputTex,vec2i(gx,halo_y),0).r;tile_guide_lum[lx][ly]=luminance(textureLoad(guideTex,vec2i(gx,halo_y),0).rgb);}if ly>=i32(TILE_H)-radius{let shared_bottom=shared_center+radius;let halo_y=clamp(tile_base_y+ly+radius,0,h-1);tile_mask[lx][shared_bottom]=textureLoad(inputTex,vec2i(gx,halo_y),0).r;tile_guide_lum[lx][shared_bottom]=luminance(textureLoad(guideTex,vec2i(gx,halo_y),0).rgb);}workgroupBarrier();if x>=w||y>=h{return;}let center_mask=tile_mask[lx][shared_center];let center_lum=tile_guide_lum[lx][shared_center];let t=smoothstep(params.backgroundThreshold,params.foregroundThreshold,center_mask);let sigma_color=mix(params.sigmaRangeLo,params.sigmaRangeHi,t);let sigma_texel=params.texelHeight*params.sigmaSpace;let sigma_texel2=sigma_texel*sigma_texel;let sigma_color2=sigma_color*sigma_color;let sparsity=max(1.0,sqrt(params.sigmaSpace)*SPARSITY_FACTOR);let step_i=max(1,i32(floor(sparsity+0.5)));let offset_i=select(0,step_i/2,step_i>1);let fg_w=mix(1.0,FOREGROUND_BIAS,center_mask);var acc:f32=0.0;var total_weight:f32=0.0;for(var offset=-radius;offset<=radius;offset=offset+1){let sparsitySkip=((offset+offset_i)% step_i)!=0;if sparsitySkip{continue;}let idx=shared_center+offset;let neighbor_mask=tile_mask[lx][idx];let neighbor_lum=tile_guide_lum[lx][idx];let dy=f32(offset)*params.texelHeight;let space_weight=gaussian_sqr(dy*dy,sigma_texel2);let dL=abs(neighbor_lum-center_lum);if dL>EDGE_THRESHOLD{continue;}let color_weight=gaussian_sqr(dL*dL,sigma_color2);let w_sample=space_weight*color_weight*fg_w;total_weight=total_weight+w_sample;acc=acc+w_sample*neighbor_mask;}let result=acc/max(total_weight,1e-6);textureStore(outputTex,gid.xy,vec4f(result,0.0,0.0,1.0));}";var du=(t,e,r,n,s,o)=>{let c=e.createTexture({label:"Joint Bilateral Filtered temporary mask texture",format:o,size:[n,s],usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.STORAGE_BINDING}),f=e.createTexture({label:"Joint Bilateral Filtered Mask Texture",format:o,size:[n,s],usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.STORAGE_BINDING}),d=Ft(hu),p=xt(d.uniforms.params),v=e.createBuffer({size:p.arrayBuffer.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),A=n/t.width,w=1/n,S=1/s;p.set({width:n,height:s,texelWidth:w,texelHeight:S});let k=He=>{p.set({...He,sigmaSpace:He.sigmaSpace*A}),e.queue.writeBuffer(v,0,p.arrayBuffer)},E=Jt(hu,o),I=Jt(fh,o),C=e.createShaderModule({label:"joint bilateral filter horizontal compute",code:E}),B=e.createShaderModule({label:"joint bilateral filter vertical compute",code:I}),z=e.createComputePipeline({label:"joint bilateral filter horizontal pipeline",layout:"auto",compute:{module:C}}),N=e.createComputePipeline({label:"joint bilateral filter vertical pipeline",layout:"auto",compute:{module:B}}),U=e.createBindGroup({layout:z.getBindGroupLayout(1),entries:[{binding:0,resource:{buffer:v}},{binding:1,resource:c.createView()}]}),V=e.createBindGroup({layout:N.getBindGroupLayout(1),entries:[{binding:0,resource:{buffer:v}},{binding:1,resource:f.createView()}]}),P=(He,J,Ve,Ue,as,Xh,jh)=>{let An=J.beginComputePass({label:He});An.setPipeline(Ve),An.setBindGroup(0,Ue),An.setBindGroup(1,as),An.dispatchWorkgroups(Xh,jh),An.end()},te=Math.ceil(n/32),ue=Math.ceil(s/4),me=Math.ceil(n/4),pe=Math.ceil(s/32),re=null,tt=null,ze=null,Wt=null,Ge={sigmaSpace:-1,sigmaRangeLo:-1,sigmaRangeHi:-1,backgroundThreshold:-1,foregroundThreshold:-1};return{render:(He,J,Ve,Ue)=>(F(!r(),O.ContextLost),Ge.sigmaSpace===Ue.sigmaSpace&&Ge.sigmaRangeLo===Ue.sigmaRangeLo&&Ge.sigmaRangeHi===Ue.sigmaRangeHi&&Ge.backgroundThreshold===Ue.backgroundThreshold&&Ge.foregroundThreshold===Ue.foregroundThreshold||(k(Ue),Ge.sigmaSpace=Ue.sigmaSpace,Ge.sigmaRangeLo=Ue.sigmaRangeLo,Ge.sigmaRangeHi=Ue.sigmaRangeHi,Ge.backgroundThreshold=Ue.backgroundThreshold,Ge.foregroundThreshold=Ue.foregroundThreshold),(re!==J||tt!==Ve)&&(ze=e.createBindGroup({layout:z.getBindGroupLayout(0),entries:[{binding:0,resource:J.createView()},{binding:1,resource:Ve.createView()}]}),re=J),P("Joint Bilateral Filter Horizontal pass",He,z,ze,U,te,ue),tt!==Ve&&(Wt=e.createBindGroup({layout:N.getBindGroupLayout(0),entries:[{binding:0,resource:c.createView()},{binding:1,resource:Ve.createView()}]}),tt=Ve),P("Joint Bilateral Filter Vertical pass",He,N,Wt,V,me,pe),f),release:()=>{c.destroy(),f.destroy(),v.destroy(),re=null,tt=null,ze=null,Wt=null}}};var hh="alias float=f32;struct TentParams{radius:u32,width:u32,height:u32,}@group(0)@binding(0)var inputTex:texture_2d<f32>;@group(0)@binding(1)var outputTex:texture_storage_2d<rgba16float,write>;@group(0)@binding(2)var<uniform> params:TentParams;const WORKGROUP_SIZE_X=16u;const WORKGROUP_SIZE_Y=16u;@compute @workgroup_size(WORKGROUP_SIZE_X,WORKGROUP_SIZE_Y,1)fn main(@builtin(global_invocation_id)gid:vec3u){if gid.x>=params.width||gid.y>=params.height{return;}let r=i32(params.radius);if r==0{let m=textureLoad(inputTex,gid.xy,0).r;textureStore(outputTex,gid.xy,vec4f(m,0.0,0.0,1.0));return;}var sumW:float=0.0;var acc:float=0.0;for(var i=-r;i<=r;i=i+1){let w=float(r+1-abs(i));let sx=clamp(i32(gid.x)+i,0,i32(params.width)-1);let m=textureLoad(inputTex,vec2u(u32(sx),gid.y),0).r;acc+=w*float(m);sumW+=w;}let result=acc/max(sumW,1e-6);textureStore(outputTex,gid.xy,vec4f(f32(result),0.0,0.0,1.0));}";var dh="alias float=f32;struct TentParams{radius:u32,width:u32,height:u32,}@group(0)@binding(0)var inputTex:texture_2d<f32>;@group(0)@binding(1)var outputTex:texture_storage_2d<rgba16float,write>;@group(0)@binding(2)var<uniform> params:TentParams;const WORKGROUP_SIZE_X=16u;const WORKGROUP_SIZE_Y=16u;@compute @workgroup_size(WORKGROUP_SIZE_X,WORKGROUP_SIZE_Y,1)fn main(@builtin(global_invocation_id)gid:vec3u){if gid.x>=params.width||gid.y>=params.height{return;}let r=i32(params.radius);if r==0{let m=textureLoad(inputTex,gid.xy,0).r;textureStore(outputTex,gid.xy,vec4f(m,0.0,0.0,1.0));return;}var sumW:float=0.0;var acc:float=0.0;for(var i=-r;i<=r;i=i+1){let w=float(r+1-abs(i));let sy=clamp(i32(gid.y)+i,0,i32(params.height)-1);let m=textureLoad(inputTex,vec2u(gid.x,u32(sy)),0).r;acc+=w*float(m);sumW+=w;}let result=acc/max(sumW,1e-6);textureStore(outputTex,gid.xy,vec4f(f32(result),0.0,0.0,1.0));}";var np=At(0,9),mh=(t,e,r,n,s,o)=>{let u=Math.ceil(r/16),l=Math.ceil(n/16),c=Jt(hh,s);c=Wr(c,{workgroupSizeX:16,workgroupSizeY:16});let f=Jt(dh,s);f=Wr(f,{workgroupSizeX:16,workgroupSizeY:16}),o&&(c=ss(c),f=ss(f));let d=Ft(c),p=xt(d.uniforms.params),v=t.createBuffer({size:p.arrayBuffer.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST});p.set({width:r,height:n});let A=P=>{p.set({radius:P}),t.queue.writeBuffer(v,0,p.arrayBuffer)},w=t.createTexture({label:`Tent Blur intermediate texture ${r}x${n} ${s}`,format:s,size:[r,n],usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.STORAGE_BINDING}),S=w.createView(),k=t.createTexture({label:`Tent Blur output texture ${r}x${n} ${s}`,format:s,size:[r,n],usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.STORAGE_BINDING}),E=t.createShaderModule({label:`Tent Blur horizontal compute ${r}x${n} ${s}`,code:c}),I=t.createShaderModule({label:`Tent Blur vertical compute ${r}x${n} ${s}`,code:f}),C=t.createComputePipeline({label:`Tent Blur horizontal pipeline ${r}x${n} ${s}`,layout:"auto",compute:{module:E}}),B=t.createComputePipeline({label:`Tent Blur vertical pipeline ${r}x${n} ${s}`,layout:"auto",compute:{module:I}}),z=t.createBindGroup({layout:B.getBindGroupLayout(0),entries:[{binding:0,resource:S},{binding:1,resource:k.createView()},{binding:2,resource:{buffer:v}}]}),N=null,U=null,V=-1;return{render(P,te,ue){F(!e(),O.ContextLost);let me=np(ue.edgeBlurAmount);V!==me&&(A(me),V=me),N!==te&&(U=t.createBindGroup({layout:C.getBindGroupLayout(0),entries:[{binding:0,resource:te.createView()},{binding:1,resource:S},{binding:2,resource:{buffer:v}}]}),N=te);let pe=P.beginComputePass({label:"Tent Blur H pass"});pe.setPipeline(C),pe.setBindGroup(0,U),pe.dispatchWorkgroups(u,l),pe.end();let re=P.beginComputePass({label:"Tent Blur V pass"});return re.setPipeline(B),re.setBindGroup(0,z),re.dispatchWorkgroups(u,l),re.end(),k},release(){w.destroy(),k.destroy(),v.destroy(),N=null,U=null,V=-1}}};var mu="alias float=f32;struct StaticParams{background:float,foreground:float,lightWrap:float,lightWrapTightness:float,lightWrapEdgeBand:float,width:u32,height:u32,}struct DynamicParams{time:float,parity:float,}@group(0)@binding(0)var linearSampler:sampler;@group(0)@binding(1)var nearestSampler:sampler;@group(0)@binding(2)var<uniform> sparams:StaticParams;@group(0)@binding(3)var<uniform> dparams:DynamicParams;@group(1)@binding(0)var foregroundTexture:texture_2d<f32>;@group(1)@binding(1)var backgroundTexture:texture_2d<f32>;@group(1)@binding(2)var maskTexture:texture_2d<f32>;@group(1)@binding(3)var blurredBackgroundTexture:texture_2d<f32>;struct VertexOutput{@builtin(position)Position:vec4f,@location(0)fragUV:vec2f,}fn rgb2yuv(rgb:vec3f)->vec3f{let Y=dot(rgb,vec3f(0.299,0.587,0.114));let U=dot(rgb,vec3f(-0.168736,-0.331264,0.5));let V=dot(rgb,vec3f(0.5,-0.418688,-0.081312));return vec3f(Y,U,V);}fn yuv2rgb(yuv:vec3f)->vec3f{let Y=yuv.x;let U=yuv.y;let V=yuv.z;return vec3f(Y+1.402*V,Y-0.344136*U-0.714136*V,Y+1.772*U);}fn hash12(p:vec2f)->f32{let p3=fract(vec3f(p.xyx)*0.1031);let p4=p3+dot(p3,p3.yzx+33.33);return fract((p4.x+p4.y)*p4.z);}const NOISE_LUMA=2.0f/255.0f;@vertex fn vert_main(@builtin(vertex_index)VertexIndex:u32)->VertexOutput{const pos=array(vec2(1.0,1.0),vec2(1.0,-1.0),vec2(-1.0,-1.0),vec2(1.0,1.0),vec2(-1.0,-1.0),vec2(-1.0,1.0),);const uv=array(vec2(1.0,0.0),vec2(1.0,1.0),vec2(0.0,1.0),vec2(1.0,0.0),vec2(0.0,1.0),vec2(0.0,0.0),);var output:VertexOutput;output.Position=vec4(pos[VertexIndex],0.0,1.0);output.fragUV=uv[VertexIndex];return output;}@fragment fn frag_main(@location(0)fragUV:vec2f)->@location(0)vec4f{let bg=textureSample(backgroundTexture,linearSampler,fragUV).rgb;let fg=textureSample(foregroundTexture,linearSampler,fragUV).rgb;let mask=textureSample(maskTexture,nearestSampler,fragUV).r;let blurBg=textureSample(blurredBackgroundTexture,linearSampler,fragUV).rgb;let bgT=f32(sparams.background);let fgT=f32(sparams.foreground);let lightWrap=f32(sparams.lightWrap);let edgeBand=f32(sparams.lightWrapEdgeBand);let tightness=f32(sparams.lightWrapTightness);let maskFg=smoothstep(bgT,fgT,mask);let edgeBg=smoothstep(bgT,bgT+edgeBand,mask);let edgeFg=1.0-smoothstep(fgT-edgeBand,fgT,mask);let edgeBgTight=pow(edgeBg,tightness);let edgeFgTight=pow(edgeFg,tightness);let maskBg=1.0-maskFg;let pixelCoord=floor(fragUV*vec2f(f32(sparams.width),f32(sparams.height)));let noiseY=(hash12(pixelCoord+vec2f(f32(dparams.time),0.0))-0.5)*NOISE_LUMA*f32(dparams.parity);let noiseWeight=clamp(maskBg+edgeBgTight*maskFg,0.0,1.0);var bgYUV=rgb2yuv(bg);bgYUV.x=clamp(bgYUV.x+noiseY*f32(noiseWeight),0.0,1.0);let bgNoisy=yuv2rgb(bgYUV);let bgSmooth=mix(bgNoisy,blurBg,lightWrap*edgeBgTight);let wrapColor=mix(fg,blurBg,lightWrap);let fgSmooth=mix(fg,wrapColor,edgeFgTight);let composite=mix(bgSmooth,fgSmooth,maskFg);return vec4f(composite,1.0);}";var ph=(t,e,r,n)=>{let s=t.getContext("webgpu");if(!s)throw Error("WebGPU not supported on the canvas.");s.configure({device:e,format:r,alphaMode:"premultiplied"});let o=Ft(mu),a=xt(o.uniforms.sparams),i=xt(o.uniforms.dparams),u=e.createShaderModule({label:"replace shader",code:mu}),l=e.createRenderPipeline({label:"replace pipeline",layout:"auto",vertex:{module:u},fragment:{module:u,targets:[{format:r}]}}),c=e.createSampler({addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge",magFilter:"linear",minFilter:"linear"}),f=e.createSampler({addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge",magFilter:"nearest",minFilter:"nearest"}),d=e.createBuffer({size:a.arrayBuffer.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),p=e.createBuffer({size:i.arrayBuffer.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),v=re=>{a.set({background:re.backgroundThreshold,foreground:re.foregroundThreshold,lightWrap:re.lightWrapIntensity,lightWrapTightness:re.lightWrapTightness,lightWrapEdgeBand:re.lightWrapEdgeBand,width:re.width,height:re.height}),e.queue.writeBuffer(d,0,a.arrayBuffer)},A=({time:re,parity:tt})=>{i.set({time:re,parity:tt}),e.queue.writeBuffer(p,0,i.arrayBuffer)},w={loadOp:"load",storeOp:"store"},S={label:"replace renderPass",colorAttachments:[w]},k=e.createBindGroup({layout:l.getBindGroupLayout(0),entries:[{binding:0,resource:c},{binding:1,resource:f},{binding:2,resource:{buffer:d}},{binding:3,resource:{buffer:p}}]}),E=null,I=null,C=null,B=null,z=null,N=-1,U=-1,V=-1,P=-1,te=-1,ue=-1,me=-1,pe=-1;return{render:(re,{foreground:tt,background:ze,blurBackground:Wt,mask:Ge,timestamp:He},J)=>{F(!n(),O.ContextLost),w.view=s.getCurrentTexture().createView(),C===ze&&B===tt&&I===Ge&&z===Wt||(E=e.createBindGroup({layout:l.getBindGroupLayout(1),entries:[{binding:0,resource:tt.createView()},{binding:1,resource:ze.createView()},{binding:2,resource:Ge.createView()},{binding:3,resource:Wt.createView()}]}),B=tt,C=ze,I=Ge,z=Wt),N===J.backgroundThreshold&&U===J.foregroundThreshold&&V===J.lightWrapIntensity&&P===J.lightWrapTightness&&te===J.lightWrapEdgeBand&&ue===ze.width&&me===ze.height||(v({backgroundThreshold:J.backgroundThreshold,foregroundThreshold:J.foregroundThreshold,lightWrapIntensity:J.lightWrapIntensity,lightWrapTightness:J.lightWrapTightness,lightWrapEdgeBand:J.lightWrapEdgeBand,width:ze.width,height:ze.height}),N=J.backgroundThreshold,U=J.foregroundThreshold,V=J.lightWrapIntensity,P=J.lightWrapTightness,te=J.lightWrapEdgeBand,ue=ze.width,me=ze.height),pe=-pe,A({time:He*1e-6%1024,parity:pe});let Ve=re.beginRenderPass(S);Ve.setPipeline(l),Ve.setBindGroup(0,k),Ve.setBindGroup(1,E),Ve.draw(6),Ve.end()},release:()=>{d.destroy(),p.destroy(),N=-1,U=-1,V=-1,P=-1,te=-1,ue=-1,me=-1,z=null,C=null,B=null,I=null,E=null}}};var gh=(t,e,r=new OffscreenCanvas(pn,mn))=>{let n=Math.trunc(r.width/2),s=Math.trunc(r.height/2),o=Math.trunc(r.width/4),a=Math.trunc(r.height/4),i="rgba8unorm",u={edgeBlurRenderer:()=>(F(c.device),mh(c.device,A,r.width,r.height,c.maskFormat,c.supportF16)),videoFrameRenderer:()=>(F(c.device),Do(c.device,A,i,r.width,r.height,"linear")),maskRenderer:()=>(F(c.device),Do(c.device,A,c.maskFormat,r.width,r.height,"nearest")),maskDownsampler2:()=>(F(c.device),Rr(c.device,A,n,s,c.maskFormat,"nearest")),maskDownsampler4:()=>(F(c.device),Rr(c.device,A,o,a,c.maskFormat,"nearest")),maskUpsampler:()=>(F(c.device),Rr(c.device,A,r.width,r.height,c.maskFormat,"nearest")),frameDownsampler2:()=>(F(c.device),Rr(c.device,A,n,s,i,"linear")),frameDownsampler4:()=>(F(c.device),Rr(c.device,A,o,a,i,"linear")),backgroundImageRenderer:()=>(F(c.device),Do(c.device,A,i,r.width,r.height,"linear")),blendRenderer:()=>(F(c.device),ih(r,c.device,c.presentationFormat,A)),blurRenderer:()=>(F(c.device),lu(c.device,r.width,r.height,i,A)),jointBilateralFilterRenderer2:()=>(F(c.device),du(r,c.device,A,n,s,c.maskFormat)),jointBilateralFilterRenderer4:()=>(F(c.device),du(r,c.device,A,o,a,c.maskFormat)),maskSmoothingRenderer2:()=>(F(c.device),fu(c.device,A,c.maskFormat,n,s,c.supportF16)),maskSmoothingRenderer4:()=>(F(c.device),fu(c.device,A,c.maskFormat,o,a,c.supportF16)),prevMaskRenderer:()=>(F(c.device),lh(c.device,A)),strongMaskBlurRenderer:()=>(F(c.device),lu(c.device,r.width,r.height,c.maskFormat,A)),replaceRenderer:()=>(F(c.device),ph(r,c.device,c.presentationFormat,A)),release:w=>()=>{for(let S of Object.keys(w))S!=="release"&&w[S]?.release()}},l=gn(u),c={canvas:r,presentationFormat:"rgba8unorm",supportR16FloatTextureStorage:!1,maskFormat:"rgba16float",supportF16:!1,backend:"webgpu",deviceLost:!1,get videoFrameRenderer(){return l.videoFrameRenderer},get edgeBlurRenderer(){return l.edgeBlurRenderer},get maskRenderer(){return l.maskRenderer},get maskDownsampler2(){return l.maskDownsampler2},get maskDownsampler4(){return l.maskDownsampler4},get maskUpsampler(){return l.maskUpsampler},get frameDownsampler2(){return l.frameDownsampler2},get frameDownsampler4(){return l.frameDownsampler4},get blendRenderer(){return l.blendRenderer},get blurRenderer(){return l.blurRenderer},get backgroundImageRenderer(){return l.backgroundImageRenderer},get maskSmoothingRenderer2(){return l.maskSmoothingRenderer2},get maskSmoothingRenderer4(){return l.maskSmoothingRenderer4},get prevMaskRenderer(){return l.prevMaskRenderer},get jointBilateralFilterRenderer2(){return l.jointBilateralFilterRenderer2},get jointBilateralFilterRenderer4(){return l.jointBilateralFilterRenderer4},get strongMaskBlurRenderer(){return l.strongMaskBlurRenderer},get replaceRenderer(){return l.replaceRenderer}},f=oo(c),d=async()=>{if(!navigator.gpu)throw Error("WebGPU not supported.");c.presentationFormat=navigator.gpu.getPreferredCanvasFormat(),c.device=await sh(t),c.supportR16FloatTextureStorage=iu(t)&&oh(c.device,"r16float"),c.supportR16FloatTextureStorage&&(c.maskFormat="r16float"),c.supportF16=uu(t),c.device.lost.then(w=>{w.reason!=="destroyed"&&(c.deviceLost=!0,e.contextLost(w.message),e.contextRestored(w.message))})},p=(w,S,k)=>{k&&f(k),F(c.device);let E=c.device.createCommandEncoder({label:"Renderer Encoder"}),I=E.beginComputePass({label:"frame upload pass"}),C=c.videoFrameRenderer.render(S,I),B=c.maskRenderer.render(w,I);I.end();let z,N;switch(k.downSampleFactor){case 4:{let U=E.beginComputePass({label:"downsample pass"}),V=c.maskDownsampler4.render(U,B),P=c.frameDownsampler4.render(U,C);U.end();let te=c.jointBilateralFilterRenderer4.render(E,V,P,k);z=c.maskSmoothingRenderer4.render(E,te,c.prevMask4??te,k);let ue=E.beginComputePass({label:"upsample pass"}),me=c.maskUpsampler.render(ue,z);ue.end(),N=c.strongMaskBlurRenderer.render(E,me,qn);break}default:{let U=E.beginComputePass({label:"downsample pass"}),V=c.maskDownsampler2.render(U,B),P=c.frameDownsampler2.render(U,C);U.end();let te=c.jointBilateralFilterRenderer2.render(E,V,P,k);z=c.maskSmoothingRenderer2.render(E,te,c.prevMask2??te,k);let ue=E.beginComputePass({label:"upsample pass"}),me=c.maskUpsampler.render(ue,z);ue.end(),N=c.edgeBlurRenderer.render(E,me,k);break}}if(k.effects==="blur"){let U=c.blurRenderer.render(E,C,k.backgroundBlurAmount);c.blendRenderer.render(E,{foreground:C,background:U,mask:N},k)}else if(k.effects==="overlay"&&k.backgroundImage){let U=E.beginComputePass({label:"background image upload pass"}),V=c.backgroundImageRenderer.render(k.backgroundImage,U);U.end();let P=c.blurRenderer.render(E,V,k.backgroundBlurAmount);c.replaceRenderer.render(E,{foreground:C,background:V,mask:N,blurBackground:P,timestamp:S.timestamp},k)}switch(k.downSampleFactor){case 4:c.prevMask4=c.prevMaskRenderer.render(E,z);break;default:c.prevMask2=c.prevMaskRenderer.render(E,z);break}c.device.queue.submit([E.finish()])},v=()=>{l.release(),c.deviceLost=!1,c.prevMask2=void 0,c.prevMask4=void 0,c.presentationFormat="rgba8unorm",c.supportR16FloatTextureStorage=!1,c.maskFormat="rgba16float",l=gn(u)},A=()=>c.deviceLost;return{init:d,render:p,release:v,isContextLost:A}};var K={projection:(t,e,r=-1)=>[2/t,0,0,0,2/e*r,0,-1,1*-r,1],translation:(t,e)=>[1,0,0,0,1,0,t,e,1],rotation:t=>{let e=Math.cos(t),r=Math.sin(t);return[e,-r,0,r,e,0,0,0,1]},scaling:(t,e)=>[t,0,0,0,e,0,0,0,1],multiply:(t,e)=>{let r=t[0],n=t[0*3+1],s=t[0*3+2],o=t[1*3+0],a=t[1*3+1],i=t[1*3+2],u=t[2*3+0],l=t[2*3+1],c=t[2*3+2],f=e[0*3+0],d=e[0*3+1],p=e[0*3+2],v=e[1*3+0],A=e[1*3+1],w=e[1*3+2],S=e[2*3+0],k=e[2*3+1],E=e[2*3+2];return[f*r+d*o+p*u,f*n+d*a+p*l,f*s+d*i+p*c,v*r+A*o+w*u,v*n+A*a+w*l,v*s+A*i+w*c,S*r+k*o+E*u,S*n+k*a+E*l,S*s+k*i+E*c]},translate:(t,e,r)=>K.multiply(t,K.translation(e,r)),rotate:(t,e)=>K.multiply(t,K.rotation(e)),scale:(t,e,r)=>K.multiply(t,K.scaling(e,r))};var Mo={VertexShader:WebGLRenderingContext.VERTEX_SHADER,FragmentShader:WebGLRenderingContext.FRAGMENT_SHADER},pu={[Mo.VertexShader]:"VertexShader",[Mo.FragmentShader]:"FragmentShader"},sp=t=>typeof t=="string"?t.startsWith("#version 300 es"):!1,xh=t=>{if(!sp(t))throw new Error("Expecting GLSL ES 3.00 shader source")},op=/ERROR:\s*\d+:(\d+)/gi;function vh(t,e="",r=0){let n=[...e.matchAll(op)],s=new Map(n.map((o,a)=>{if(!o[1]||o.index===void 0)return[0,e];let i=Number.parseInt(o[1],10),u=n[a+1],l=u?u.index:e.length,c=e.substring(o.index,l);return[i-1,c]}));return t.split(`
46
46
  `).map((o,a)=>{let i=s.get(a);return`${a+1+r}: ${o}${i?`
47
47
 
48
48
  ^^^ ${i}`:""}`}).join(`
49
- `)}var xh=(t,e,r)=>{let n=t.createShader(e);if(!n)throw new Error(`Unable to create ${mu[e]}`);if(t.shaderSource(n,r),t.compileShader(n),!t.getShaderParameter(n,t.COMPILE_STATUS)){let o=t.getShaderInfoLog(n);t.deleteShader(n);let a=`Error compiling ${mu[e]}: ${o??""}
50
- ${o?bh(r,o):"no error message available"}`;throw new Error(a)}return n},sp=(t,e,r,n)=>{let s=t.createProgram(),o=!1;if(!s)throw new Error("Unable to create WebGL program");for(let i of e)t.attachShader(s,i);if(r?.forEach((i,u)=>{let l=n?.[u]??u;t.bindAttribLocation(s,l,i)}),t.linkProgram(s),!t.getProgramParameter(s,t.LINK_STATUS)){let i=t.getProgramInfoLog(s);throw t.deleteProgram(s),new Error(`Error in program linking: ${i??""}
51
- ${e.map(u=>{let l=bh(t.getShaderSource(u)??""),c=t.getShaderParameter(u,t.SHADER_TYPE);return`${mu[c]}:
49
+ `)}var yh=(t,e,r)=>{let n=t.createShader(e);if(!n)throw new Error(`Unable to create ${pu[e]}`);if(t.shaderSource(n,r),t.compileShader(n),!t.getShaderParameter(n,t.COMPILE_STATUS)){let o=t.getShaderInfoLog(n);t.deleteShader(n);let a=`Error compiling ${pu[e]}: ${o??""}
50
+ ${o?vh(r,o):"no error message available"}`;throw new Error(a)}return n},ap=(t,e,r,n)=>{let s=t.createProgram(),o=!1;if(!s)throw new Error("Unable to create WebGL program");for(let i of e)t.attachShader(s,i);if(r?.forEach((i,u)=>{let l=n?.[u]??u;t.bindAttribLocation(s,l,i)}),t.linkProgram(s),!t.getProgramParameter(s,t.LINK_STATUS)){let i=t.getProgramInfoLog(s);throw t.deleteProgram(s),new Error(`Error in program linking: ${i??""}
51
+ ${e.map(u=>{let l=vh(t.getShaderSource(u)??""),c=t.getShaderParameter(u,t.SHADER_TYPE);return`${pu[c]}:
52
52
  ${l}`}).join(`
53
- `)}`)}return[s,()=>{if(!o){o=!0;for(let i of e)t.detachShader(s,i),t.deleteShader(i);t.deleteProgram(s)}}]},op=(t,[e,r],n,s)=>sp(t,[xh(t,Po.VertexShader,e),xh(t,Po.FragmentShader,r)],n,s),vh=(t,e)=>{let r=t.createTexture();return t.bindTexture(t.TEXTURE_2D,r),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,e?t.LINEAR:t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,e?t.LINEAR:t.NEAREST),r},Gt=(t,e,r,n=!1,s=!1)=>{let o=vh(t,n);return s?(t.texImage2D(t.TEXTURE_2D,0,t.RGBA16F,e,r,0,t.RGBA,t.HALF_FLOAT,null),t.bindFramebuffer(t.FRAMEBUFFER,null),o):(t.texImage2D(t.TEXTURE_2D,0,t.RGBA,e,r,0,t.RGBA,t.UNSIGNED_BYTE,null),t.bindTexture(t.TEXTURE_2D,null),o)},ve=(t,e,r,n=!1,s=!1,o=!1)=>{let a=vh(t,n);return s?(t.texImage2D(t.TEXTURE_2D,0,t.R16F,e,r,0,t.RED,t.HALF_FLOAT,null),t.bindFramebuffer(t.FRAMEBUFFER,null),a):o?(t.texImage2D(t.TEXTURE_2D,0,t.RGBA16F,e,r,0,t.RGBA,t.HALF_FLOAT,null),t.bindFramebuffer(t.FRAMEBUFFER,null),a):(t.texImage2D(t.TEXTURE_2D,0,t.R8,e,r,0,t.RED,t.UNSIGNED_BYTE,null),t.bindTexture(t.TEXTURE_2D,null),a)},ae=(t,e)=>{let r=t.createFramebuffer();return t.bindFramebuffer(t.FRAMEBUFFER,r),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,e,0),t.bindFramebuffer(t.FRAMEBUFFER,null),r},yh=(t,e,r,n=2,s=2)=>{let o=t.createTexture();t.bindTexture(t.TEXTURE_2D,o),t.texImage2D(t.TEXTURE_2D,0,e,n,s,0,r,t.HALF_FLOAT,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST);let a=ae(t,o);t.bindFramebuffer(t.FRAMEBUFFER,a);let i=t.checkFramebufferStatus(t.FRAMEBUFFER)===t.FRAMEBUFFER_COMPLETE;return t.bindFramebuffer(t.FRAMEBUFFER,null),t.deleteFramebuffer(a),t.bindTexture(t.TEXTURE_2D,null),t.deleteTexture(o),i},_h=(t,e,r)=>Object.keys(r).reduce((n,s)=>{let a=r[s];return a&&(n[s]=a.startsWith("u_")?t.getUniformLocation(e,a):t.getAttribLocation(e,a)),n},{}),he=(t,{attribs:e,uniforms:r,vertexSrc:n,fragmentSrc:s})=>{let o=t.getContext("webgl2",{premultipliedAlpha:!1,powerPreference:"high-performance"});I(o,O.ContextCreationError),o.enable(o.BLEND),o.blendFunc(o.SRC_ALPHA,o.ONE_MINUS_SRC_ALPHA),gh(n),gh(s);let[a,i]=op(o,[n,s]),u=!!o.getExtension("EXT_color_buffer_float"),l=u&&yh(o,o.R16F,o.RED),c=u&&yh(o,o.RGBA16F,o.RGBA);return{gl:o,program:a,attribLocations:_h(o,a,e),uniformLocations:_h(o,a,r),release:i,floatSingleChannelSupported:l,floatFullChannelSupported:c}},wh=t=>({texture:t.getAsWebGLTexture(),width:t.width,height:t.height});var de=`#version 300 es
54
- in vec2 a_position;in vec2 a_texCoord;uniform mat3 u_matrix;out vec2 v_texCoord;void main(){gl_Position=vec4((u_matrix*vec3(a_position,1)).xy,0,1);v_texCoord=a_texCoord;}`;var Th=`#version 300 es
55
- precision mediump float;uniform sampler2D u_mask;uniform ivec2 u_size;uniform float u_threshold;in vec2 v_texCoord;out vec4 outColor;void main(){ivec2 coord=ivec2(clamp(floor(v_texCoord*vec2(u_size)),vec2(0.0),vec2(u_size)-vec2(1.0)));float curr=texelFetch(u_mask,coord,0).r;float curr_binary=step(u_threshold,curr);outColor=vec4(curr_binary,curr_binary,curr_binary,1.0);}`;var pu=(t,e,r)=>{let{gl:n,program:s,attribLocations:o,uniformLocations:a,floatFullChannelSupported:i,floatSingleChannelSupported:u,release:l}=he(t,{attribs:{position:"a_position",texCoord:"a_texCoord"},uniforms:{matrix:"u_matrix",mask:"u_mask",size:"u_size",threshold:"u_threshold"},vertexSrc:de,fragmentSrc:Th}),c=n.createVertexArray();n.bindVertexArray(c);let f=n.createBuffer();n.enableVertexAttribArray(o.position),n.bindBuffer(n.ARRAY_BUFFER,f),n.vertexAttribPointer(o.position,2,n.FLOAT,!1,0,0),n.bufferData(n.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),n.STATIC_DRAW);let m=n.createBuffer();n.bindBuffer(n.ARRAY_BUFFER,m),n.bufferData(n.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),n.STATIC_DRAW),n.enableVertexAttribArray(o.texCoord),n.vertexAttribPointer(o.texCoord,2,n.FLOAT,!1,0,0);let p=ve(n,e,r,!1,u,i),w=ae(n,p);return{render:(A,v)=>{I(!n.isContextLost(),O.ContextLost),n.clearColor(0,0,0,0),n.clear(n.COLOR_BUFFER_BIT),n.useProgram(s),n.bindVertexArray(c),n.bindFramebuffer(n.FRAMEBUFFER,w),n.viewport(0,0,e,r),n.activeTexture(n.TEXTURE0),n.uniform1i(a.mask,0),n.bindTexture(n.TEXTURE_2D,A.texture),n.uniform2i(a.size,A.width,A.height),n.uniform1f(a.threshold,v);let C=K.projection(1,1,1);return n.uniformMatrix3fv(a.matrix,!1,C),n.drawArrays(n.TRIANGLES,0,6),n.bindBuffer(n.ARRAY_BUFFER,null),n.bindFramebuffer(n.FRAMEBUFFER,null),n.bindTexture(n.TEXTURE_2D,null),n.bindVertexArray(null),{texture:p,width:e,height:r}},release:()=>{n.deleteBuffer(f),n.deleteBuffer(m),n.deleteTexture(p),n.deleteFramebuffer(w),n.deleteVertexArray(c),l()}}};var kh=`#version 300 es
56
- precision mediump float;uniform sampler2D u_mask;uniform sampler2D u_frame_foreground;uniform sampler2D u_frame_background;uniform vec2 u_confidence_thresholds;in vec2 v_texCoord;out vec4 outColor;void main(){vec4 background=texture(u_frame_background,v_texCoord);vec4 foreground=texture(u_frame_foreground,v_texCoord);float person_mask=texture(u_mask,v_texCoord).r;person_mask=smoothstep(u_confidence_thresholds.x,u_confidence_thresholds.y,person_mask);outColor=mix(background,foreground,person_mask);}`;var Eh=t=>{let{gl:e,program:r,attribLocations:n,floatFullChannelSupported:s,uniformLocations:o,release:a}=he(t,{attribs:{position:"a_position",texCoord:"a_texCoord"},uniforms:{matrix:"u_matrix",mask:"u_mask",frameBackground:"u_frame_background",frameForeground:"u_frame_foreground",confidenceThresholds:"u_confidence_thresholds"},vertexSrc:de,fragmentSrc:kh});e.enable(e.BLEND);let i=e.createVertexArray();e.bindVertexArray(i);let u=e.createBuffer();e.enableVertexAttribArray(n.position),e.bindBuffer(e.ARRAY_BUFFER,u),e.vertexAttribPointer(n.position,2,e.FLOAT,!1,0,0),e.bufferData(e.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),e.STATIC_DRAW);let l=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,l),e.bufferData(e.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),e.STATIC_DRAW),e.enableVertexAttribArray(n.texCoord),e.vertexAttribPointer(n.texCoord,2,e.FLOAT,!1,0,0);let c=Gt(e,t.width,t.height,!0,s),f=ae(e,c);return{render:({mask:m,foreground:p,background:w},A)=>{I(!e.isContextLost(),O.ContextLost),e.useProgram(r),e.bindFramebuffer(e.FRAMEBUFFER,f),e.viewport(0,0,t.width,t.height),e.bindVertexArray(i),e.uniform2f(o.confidenceThresholds,A.backgroundThreshold,A.foregroundThreshold),e.activeTexture(e.TEXTURE0),e.uniform1i(o.frameForeground,0),e.bindTexture(e.TEXTURE_2D,p.texture),e.activeTexture(e.TEXTURE1),e.uniform1i(o.frameBackground,1),e.bindTexture(e.TEXTURE_2D,w.texture),e.activeTexture(e.TEXTURE2),e.uniform1i(o.mask,2),e.bindTexture(e.TEXTURE_2D,m.texture);let v=K.projection(1,1,1);return e.uniformMatrix3fv(o.matrix,!1,v),e.drawArrays(e.TRIANGLES,0,6),e.bindBuffer(e.ARRAY_BUFFER,null),e.bindFramebuffer(e.FRAMEBUFFER,null),e.bindTexture(e.TEXTURE_2D,null),e.bindVertexArray(null),{texture:c,width:t.width,height:t.height}},release:()=>{e.deleteBuffer(u),e.deleteBuffer(l),e.deleteTexture(c),e.deleteFramebuffer(f),e.deleteVertexArray(i),a()}}};var Ah=`#version 300 es
57
- precision mediump float;uniform sampler2D u_frame;uniform int u_downsampling;in vec2 v_texCoord;out vec4 outColor;vec4 Downsample(sampler2D image,vec2 uv,vec2 halfpixel){vec4 sum=texture(image,uv)*4.0;sum+=texture(image,uv-halfpixel.xy);sum+=texture(image,uv+halfpixel.xy);sum+=texture(image,uv+vec2(halfpixel.x,-halfpixel.y));sum+=texture(image,uv-vec2(halfpixel.x,-halfpixel.y));return sum/8.0;}vec4 Upsample(sampler2D image,vec2 uv,vec2 halfpixel){vec4 sum=texture(image,uv+vec2(-halfpixel.x*2.0,0.0));sum+=texture(image,uv+vec2(-halfpixel.x,halfpixel.y))*2.0;sum+=texture(image,uv+vec2(0.0,halfpixel.y*2.0));sum+=texture(image,uv+vec2(halfpixel.x,halfpixel.y))*2.0;sum+=texture(image,uv+vec2(halfpixel.x*2.0,0.0));sum+=texture(image,uv+vec2(halfpixel.x,-halfpixel.y))*2.0;sum+=texture(image,uv+vec2(0.0,-halfpixel.y*2.0));sum+=texture(image,uv+vec2(-halfpixel.x,-halfpixel.y))*2.0;return sum/12.0;}void main(){vec2 halfpixel=0.5/vec2(textureSize(u_frame,0));if(u_downsampling==1){outColor=Downsample(u_frame,v_texCoord,halfpixel);return;}outColor=Upsample(u_frame,v_texCoord,halfpixel);}`;var ap=Et(1,9),Oo=(t,e,r=!1)=>{let{gl:n,program:s,attribLocations:o,uniformLocations:a,floatSingleChannelSupported:i,floatFullChannelSupported:u,release:l}=he(t,{attribs:{position:"a_position",texCoord:"a_texCoord"},uniforms:{matrix:"u_matrix",downsampling:"u_downsampling",frame:"u_frame"},vertexSrc:de,fragmentSrc:Ah}),c=n.createVertexArray();n.bindVertexArray(c);let f=n.createBuffer();n.enableVertexAttribArray(o.position),n.bindBuffer(n.ARRAY_BUFFER,f),n.vertexAttribPointer(o.position,2,n.FLOAT,!1,0,0),n.bufferData(n.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),n.STATIC_DRAW);let m=n.createBuffer();n.bindBuffer(n.ARRAY_BUFFER,m),n.bufferData(n.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),n.STATIC_DRAW),n.enableVertexAttribArray(o.texCoord),n.vertexAttribPointer(o.texCoord,2,n.FLOAT,!1,0,0);let p=(C,k,T)=>{n.bindFramebuffer(n.FRAMEBUFFER,C),n.viewport(0,0,k,T)},w=C=>{let k=Math.trunc(t.width/2**C),T=Math.trunc(t.height/2**C),S=r?ve(n,k,T,!0,i,u):Gt(n,k,T,!0,u),F=ae(n,S);return{texture:S,frameBuffer:F,width:k,height:T}},A=(C,k=0)=>{let T=Math.max(ap(k+C)-k,0);return Array.from({length:T}).map((S,F)=>w(k+F))},v=A(e+1);return{render:(C,k)=>{if(I(!n.isContextLost(),O.ContextLost),!k)return{texture:C.texture,width:C.width,height:C.height};n.useProgram(s),n.bindVertexArray(c),n.activeTexture(n.TEXTURE0),n.uniform1i(a.frame,0),n.bindTexture(n.TEXTURE_2D,C.texture),n.uniform1i(a.downsampling,1);let T=k+1;if(T>v.length)for(let S of A(T-v.length,v.length))v.push(S);for(;T<v.length;){let S=v.pop();n.deleteTexture(S?.texture??null),n.deleteFramebuffer(S?.frameBuffer??null)}for(let S=1;S<T;S++){let{frameBuffer:F=null,texture:B=null,width:z=t.width,height:N=t.height}=v[S]??{};p(F,z,N);let U=K.projection(1,1,1);n.uniformMatrix3fv(a.matrix,!1,U),n.drawArrays(n.TRIANGLES,0,6);let V=n.checkFramebufferStatus(n.FRAMEBUFFER),P=n.getError();if(I(P!==n.CONTEXT_LOST_WEBGL,O.ContextLost),I(!n.isContextLost(),O.ContextLost),V!==n.FRAMEBUFFER_COMPLETE||P!==n.NO_ERROR)throw new Error(O.SamplingError,{cause:`downsampling FrameBuffer Status: ${V}`});n.bindTexture(n.TEXTURE_2D,B)}n.uniform1i(a.downsampling,0);for(let S=k-1;S>=0;S--){let{frameBuffer:F=null,texture:B=null,width:z=t.width,height:N=t.height}=v[S]??{};p(F,z,N);let U=K.projection(1,1,1);n.uniformMatrix3fv(a.matrix,!1,U),n.drawArrays(n.TRIANGLES,0,6);let V=n.checkFramebufferStatus(n.FRAMEBUFFER),P=n.getError();if(I(P!==n.CONTEXT_LOST_WEBGL,O.ContextLost),I(!n.isContextLost(),O.ContextLost),V!==n.FRAMEBUFFER_COMPLETE||P!==n.NO_ERROR)throw new Error(O.SamplingError,{cause:`Upsampling FrameBuffer Status: ${V}`});n.bindTexture(n.TEXTURE_2D,B)}return n.bindBuffer(n.ARRAY_BUFFER,null),n.bindFramebuffer(n.FRAMEBUFFER,null),n.bindTexture(n.TEXTURE_2D,null),n.bindVertexArray(null),{texture:v[0]?.texture??C.texture,width:v[0]?.width??C.width,height:v[0]?.height??C.height}},release:()=>{for(let{frameBuffer:C,texture:k}of v)n.deleteTexture(k),n.deleteFramebuffer(C);n.deleteBuffer(f),n.deleteBuffer(m),n.deleteVertexArray(c),l()}}};var En=`#version 300 es
58
- precision mediump float;in vec2 v_texCoord;uniform sampler2D u_texture;out vec4 outColor;void main(){outColor=texture(u_texture,v_texCoord);}`;var Do=t=>{let{gl:e,program:r,attribLocations:n,uniformLocations:s,release:o}=he(t,{attribs:{position:"a_position",texCoord:"a_texCoord"},uniforms:{matrix:"u_matrix",texture:"u_texture"},vertexSrc:de,fragmentSrc:En}),a=e.createVertexArray();e.bindVertexArray(a);let i=e.createBuffer();e.enableVertexAttribArray(n.position),e.bindBuffer(e.ARRAY_BUFFER,i),e.vertexAttribPointer(n.position,2,e.FLOAT,!1,0,0),e.bufferData(e.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),e.STATIC_DRAW);let u=e.createBuffer();return e.bindBuffer(e.ARRAY_BUFFER,u),e.bufferData(e.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),e.STATIC_DRAW),e.enableVertexAttribArray(n.texCoord),e.vertexAttribPointer(n.texCoord,2,e.FLOAT,!1,0,0),{render:l=>{I(!e.isContextLost(),O.ContextLost),e.bindFramebuffer(e.FRAMEBUFFER,null),e.viewport(0,0,t.width,t.height),e.clearColor(0,0,0,1),e.clear(e.COLOR_BUFFER_BIT),e.useProgram(r),e.bindVertexArray(a),e.uniform1i(s.texture,0);let c=K.projection(1,1);e.uniformMatrix3fv(s.matrix,!1,c),e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_2D,l.texture),e.drawArrays(e.TRIANGLES,0,6),e.bindBuffer(e.ARRAY_BUFFER,null),e.bindFramebuffer(e.FRAMEBUFFER,null),e.bindTexture(e.TEXTURE_2D,null),e.bindVertexArray(null)},release:()=>{e.deleteBuffer(i),e.deleteBuffer(u),e.deleteVertexArray(a),o()}}};var Ct=(t,e,r=!1,n=t.width,s=t.height,o=!0)=>{let{gl:a,program:i,attribLocations:u,uniformLocations:l,floatFullChannelSupported:c,floatSingleChannelSupported:f,release:m}=he(t,{attribs:{position:"a_position",texCoord:"a_texCoord"},uniforms:{matrix:"u_matrix",texture:"u_texture"},vertexSrc:de,fragmentSrc:En}),p=a.createVertexArray();a.bindVertexArray(p);let w=a.createBuffer();a.enableVertexAttribArray(u.position),a.bindBuffer(a.ARRAY_BUFFER,w),a.vertexAttribPointer(u.position,2,a.FLOAT,!1,0,0),a.bufferData(a.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),a.STATIC_DRAW);let A=a.createBuffer();a.bindBuffer(a.ARRAY_BUFFER,A),a.bufferData(a.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),a.STATIC_DRAW),a.enableVertexAttribArray(u.texCoord),a.vertexAttribPointer(u.texCoord,2,a.FLOAT,!1,0,0);let v=e?ve(a,n,s,r,o&&f,o&&c):Gt(a,n,s,r,o&&c),C=ae(a,v);return{render:k=>{I(!a.isContextLost(),O.ContextLost),a.bindFramebuffer(a.FRAMEBUFFER,C),a.viewport(0,0,n,s),a.clearColor(0,0,0,1),a.clear(a.COLOR_BUFFER_BIT),a.useProgram(i),a.bindVertexArray(p),a.activeTexture(a.TEXTURE0),a.uniform1i(l.texture,0),a.bindTexture(a.TEXTURE_2D,k.texture);let T=K.projection(1,1,1);return a.uniformMatrix3fv(l.matrix,!1,T),a.drawArrays(a.TRIANGLES,0,6),a.bindBuffer(a.ARRAY_BUFFER,null),a.bindFramebuffer(a.FRAMEBUFFER,null),a.bindTexture(a.TEXTURE_2D,null),a.bindVertexArray(null),{texture:v,width:n,height:s}},release:()=>{a.deleteBuffer(w),a.deleteBuffer(A),a.deleteTexture(v),a.deleteVertexArray(p),m()}}};function Rh(t,e,r){let n=t.getContext("webgl2",{premultipliedAlpha:!1,powerPreference:"high-performance"}),s=Ct(t,!0,!1,e,r,!1);I(n,O.ContextCreationError);let o=new Int32Array(e*r),a=new Uint8Array(e*r),i=new Uint8Array(e*r),u=new Uint8Array(e*r),l=new Uint8Array(e*r),c=0,f=n.createTexture();n.bindTexture(n.TEXTURE_2D,f),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_S,n.CLAMP_TO_EDGE),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_T,n.CLAMP_TO_EDGE),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MIN_FILTER,n.NEAREST),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MAG_FILTER,n.NEAREST);let m=n.createFramebuffer(),p={switchThreshold:.3,decay:.95,area:.2,height:.4,center:.2,iou:.2};return{render:(w,A)=>{let v=s.render(w);n.bindFramebuffer(n.FRAMEBUFFER,m),n.framebufferTexture2D(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,v.texture,0),n.readPixels(0,0,e,r,n.RED,n.UNSIGNED_BYTE,a),n.bindFramebuffer(n.FRAMEBUFFER,null);let C=Math.max(0,Math.min(255,Math.floor(255*A.foregroundThreshold)));for(let B=0;B<i.length;B++)i[B]=a[B]>=C?255:0;let k=-1/0,T=0,S=zf(i,o,e,r);for(let[B,z]of S.entries()){if(B===0)continue;for(let U=0;U<o.length;U++)l[U]=o[U]===B?255:0;let N=Hf(z,$f(u,l),{...p,centerX:A.personCenter[0]*e,centerY:A.personCenter[1]*r},e,r);N>k&&(k=N,T=B)}if(k>c*(1+p.switchThreshold)||c===0){for(let B=0;B<o.length;B++)u[B]=o[B]===T?255:0;c=k}else c*=p.decay;return n.bindTexture(n.TEXTURE_2D,f),n.texImage2D(n.TEXTURE_2D,0,n.R8,e,r,0,n.RED,n.UNSIGNED_BYTE,u),n.bindTexture(n.TEXTURE_2D,null),{texture:f,width:e,height:r}},release:()=>{n.deleteTexture(f),n.deleteFramebuffer(m),s.release()}}}var Ih=`#version 300 es
59
- precision mediump float;uniform sampler2D u_mask;uniform sampler2D u_ref_mask;uniform vec2 u_texel_size;uniform vec2 u_direction;uniform int u_radius_px;const int MAX_RADIUS_PX=64;in vec2 v_texCoord;out vec4 outColor;void main(){float mx=0.0;for(int i=-MAX_RADIUS_PX;i<=MAX_RADIUS_PX;++i){if(abs(i)>u_radius_px)continue;vec2 off=u_direction*float(i)*u_texel_size;mx=max(mx,texture(u_mask,v_texCoord+off).r);}mx=min(mx,texture(u_ref_mask,v_texCoord).r);outColor=vec4(mx,mx,mx,1.0);}`;var Sh=`#version 300 es
60
- precision mediump float;uniform sampler2D u_tex_a;uniform sampler2D u_tex_b;uniform ivec2 u_size;in vec2 v_texCoord;out vec4 outColor;void main(){ivec2 iuv=ivec2(clamp(floor(v_texCoord*vec2(u_size)),vec2(0.0),vec2(u_size)-vec2(1.0)));float a=texelFetch(u_tex_a,iuv,0).r;float b=texelFetch(u_tex_b,iuv,0).r;float diff=abs(a-b);outColor=vec4(diff,diff,diff,1.0);}`;var Ch=(t,e,r)=>{let{gl:n,program:s,attribLocations:o,uniformLocations:a,floatSingleChannelSupported:i,floatFullChannelSupported:u,release:l}=he(t,{attribs:{position:"a_position",texCoord:"a_texCoord"},uniforms:{matrix:"u_matrix",texA:"u_tex_a",texB:"u_tex_b",size:"u_size"},vertexSrc:de,fragmentSrc:Sh}),c=n.createVertexArray();n.bindVertexArray(c);let f=n.createBuffer();n.enableVertexAttribArray(o.position),n.bindBuffer(n.ARRAY_BUFFER,f),n.vertexAttribPointer(o.position,2,n.FLOAT,!1,0,0),n.bufferData(n.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),n.STATIC_DRAW);let m=n.createBuffer();n.bindBuffer(n.ARRAY_BUFFER,m),n.bufferData(n.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),n.STATIC_DRAW),n.enableVertexAttribArray(o.texCoord),n.vertexAttribPointer(o.texCoord,2,n.FLOAT,!1,0,0);let p=ve(n,e,r,!0,i,u),w=ae(n,p);return{render:(A,v)=>{I(!n.isContextLost(),O.ContextLost),I(A.width===v.width&&A.height===v.height),n.useProgram(s),n.bindVertexArray(c),n.uniform2i(a.size,A.width,A.height),n.activeTexture(n.TEXTURE0),n.uniform1i(a.texA,0),n.bindTexture(n.TEXTURE_2D,A.texture),n.activeTexture(n.TEXTURE1),n.uniform1i(a.texB,1),n.bindTexture(n.TEXTURE_2D,v.texture);let C=K.projection(1,1,1);return n.uniformMatrix3fv(a.matrix,!1,C),n.bindFramebuffer(n.FRAMEBUFFER,w),n.viewport(0,0,e,r),n.clearColor(0,0,0,0),n.clear(n.COLOR_BUFFER_BIT),n.drawArrays(n.TRIANGLES,0,6),n.bindBuffer(n.ARRAY_BUFFER,null),n.bindFramebuffer(n.FRAMEBUFFER,null),n.bindTexture(n.TEXTURE_2D,null),n.bindVertexArray(null),{texture:p,frameBuffer:w,width:e,height:r}},release:()=>{n.deleteBuffer(f),n.deleteBuffer(m),n.deleteTexture(p),n.deleteFramebuffer(w),n.deleteVertexArray(c),l()}}};var ip=64,up=64,cp=Et(0,up),gu=(t,e,r)=>{let{gl:n,program:s,attribLocations:o,uniformLocations:a,floatSingleChannelSupported:i,floatFullChannelSupported:u,release:l}=he(t,{attribs:{position:"a_position",texCoord:"a_texCoord"},uniforms:{matrix:"u_matrix",mask:"u_mask",maskRef:"u_ref_mask",texelSize:"u_texel_size",radiusPx:"u_radius_px",direction:"u_direction"},vertexSrc:de,fragmentSrc:Ih}),c=n.createVertexArray();n.bindVertexArray(c);let f=n.createBuffer();n.enableVertexAttribArray(o.position),n.bindBuffer(n.ARRAY_BUFFER,f),n.vertexAttribPointer(o.position,2,n.FLOAT,!1,0,0),n.bufferData(n.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),n.STATIC_DRAW);let m=n.createBuffer();n.bindBuffer(n.ARRAY_BUFFER,m),n.bufferData(n.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),n.STATIC_DRAW),n.enableVertexAttribArray(o.texCoord),n.vertexAttribPointer(o.texCoord,2,n.FLOAT,!1,0,0);let p=t.width/e,w=32,A=18,v=Math.max(Math.floor(e/4),w),C=Math.max(Math.floor(r/4),A),k=v===w?1e-8:1e-4,T=v*C,S=Ch(t,v,C),F=i||u,B=F?n.RGBA:n.RED,z=F?n.FLOAT:n.UNSIGNED_BYTE,N=F?new Float32Array(T*4):new Uint8Array(T),U=ve(n,e,r,!1,i,u),V=ve(n,e,r,!1,i,u),P=ae(n,U),te=ae(n,V);return{render:({mask:ue,maskRef:me},pe)=>{I(!n.isContextLost(),O.ContextLost);let re=P,tt=ue.texture,We=()=>{n.useProgram(s),n.bindVertexArray(c),n.uniform1i(a.radiusPx,cp(Math.floor(pe.morphDilateRadiusPx/p))),n.uniform2f(a.texelSize,1/ue.width,1/ue.height),n.activeTexture(n.TEXTURE1),n.uniform1i(a.maskRef,1),n.bindTexture(n.TEXTURE_2D,me.texture);let $e=K.projection(1,1,1);n.uniformMatrix3fv(a.matrix,!1,$e);for(let J=0;J<2;J++)n.activeTexture(n.TEXTURE0),n.uniform1i(a.mask,0),n.bindTexture(n.TEXTURE_2D,tt),n.uniform2f(a.direction,1-J,0+J),n.bindFramebuffer(n.FRAMEBUFFER,re),n.viewport(0,0,e,r),n.drawArrays(n.TRIANGLES,0,6),[tt,re]=re===P?[U,te]:[V,P]};for(let $e=0;$e<pe.morphPass;$e++)We();let Vt=!1,Ge=0;for(;!Vt;){We();let $e=S.render({texture:U,width:e,height:r},{texture:V,width:e,height:r});n.bindFramebuffer(n.FRAMEBUFFER,$e.frameBuffer),n.readPixels(0,0,v,C,B,z,N);let J=0,Ve=0;if(F){for(let Fe=0,as=0;Fe<T;++Fe,as+=4)J+=N[as];Ve=J/T}else{for(let Fe=0;Fe<T;++Fe)J+=N[Fe];Ve=J/T/255}n.bindFramebuffer(n.FRAMEBUFFER,null),(Ve<k||Ge>=ip)&&(Vt=!0),Ge++}return n.bindBuffer(n.ARRAY_BUFFER,null),n.bindFramebuffer(n.FRAMEBUFFER,null),n.bindTexture(n.TEXTURE_2D,null),n.bindVertexArray(null),{texture:tt,width:e,height:r}},release:()=>{n.deleteBuffer(f),n.deleteBuffer(m),n.deleteTexture(U),n.deleteTexture(V),n.deleteFramebuffer(P),n.deleteFramebuffer(te),n.deleteVertexArray(c),S.release(),l()}}};var Fh=`#version 300 es
53
+ `)}`)}return[s,()=>{if(!o){o=!0;for(let i of e)t.detachShader(s,i),t.deleteShader(i);t.deleteProgram(s)}}]},ip=(t,[e,r],n,s)=>ap(t,[yh(t,Mo.VertexShader,e),yh(t,Mo.FragmentShader,r)],n,s),wh=(t,e)=>{let r=t.createTexture();return t.bindTexture(t.TEXTURE_2D,r),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,e?t.LINEAR:t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,e?t.LINEAR:t.NEAREST),r},Vt=(t,e,r,n=!1,s=!1)=>{let o=wh(t,n);return s?(t.texImage2D(t.TEXTURE_2D,0,t.RGBA16F,e,r,0,t.RGBA,t.HALF_FLOAT,null),t.bindFramebuffer(t.FRAMEBUFFER,null),o):(t.texImage2D(t.TEXTURE_2D,0,t.RGBA,e,r,0,t.RGBA,t.UNSIGNED_BYTE,null),t.bindTexture(t.TEXTURE_2D,null),o)},ve=(t,e,r,n=!1,s=!1,o=!1)=>{let a=wh(t,n);return s?(t.texImage2D(t.TEXTURE_2D,0,t.R16F,e,r,0,t.RED,t.HALF_FLOAT,null),t.bindFramebuffer(t.FRAMEBUFFER,null),a):o?(t.texImage2D(t.TEXTURE_2D,0,t.RGBA16F,e,r,0,t.RGBA,t.HALF_FLOAT,null),t.bindFramebuffer(t.FRAMEBUFFER,null),a):(t.texImage2D(t.TEXTURE_2D,0,t.R8,e,r,0,t.RED,t.UNSIGNED_BYTE,null),t.bindTexture(t.TEXTURE_2D,null),a)},ae=(t,e)=>{let r=t.createFramebuffer();return t.bindFramebuffer(t.FRAMEBUFFER,r),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,e,0),t.bindFramebuffer(t.FRAMEBUFFER,null),r},_h=(t,e,r,n=2,s=2)=>{let o=t.createTexture();t.bindTexture(t.TEXTURE_2D,o),t.texImage2D(t.TEXTURE_2D,0,e,n,s,0,r,t.HALF_FLOAT,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST);let a=ae(t,o);t.bindFramebuffer(t.FRAMEBUFFER,a);let i=t.checkFramebufferStatus(t.FRAMEBUFFER)===t.FRAMEBUFFER_COMPLETE;return t.bindFramebuffer(t.FRAMEBUFFER,null),t.deleteFramebuffer(a),t.bindTexture(t.TEXTURE_2D,null),t.deleteTexture(o),i},bh=(t,e,r)=>Object.keys(r).reduce((n,s)=>{let a=r[s];return a&&(n[s]=a.startsWith("u_")?t.getUniformLocation(e,a):t.getAttribLocation(e,a)),n},{}),he=(t,{attribs:e,uniforms:r,vertexSrc:n,fragmentSrc:s})=>{let o=t.getContext("webgl2",{premultipliedAlpha:!1,powerPreference:"high-performance"});F(o,O.ContextCreationError),o.enable(o.BLEND),o.blendFunc(o.SRC_ALPHA,o.ONE_MINUS_SRC_ALPHA),xh(n),xh(s);let[a,i]=ip(o,[n,s]),u=!!o.getExtension("EXT_color_buffer_float"),l=u&&_h(o,o.R16F,o.RED),c=u&&_h(o,o.RGBA16F,o.RGBA);return{gl:o,program:a,attribLocations:bh(o,a,e),uniformLocations:bh(o,a,r),release:i,floatSingleChannelSupported:l,floatFullChannelSupported:c}},Th=t=>({texture:t.getAsWebGLTexture(),width:t.width,height:t.height});var de=`#version 300 es
54
+ in vec2 a_position;in vec2 a_texCoord;uniform mat3 u_matrix;out vec2 v_texCoord;void main(){gl_Position=vec4((u_matrix*vec3(a_position,1)).xy,0,1);v_texCoord=a_texCoord;}`;var kh=`#version 300 es
55
+ precision mediump float;uniform sampler2D u_mask;uniform ivec2 u_size;uniform float u_threshold;in vec2 v_texCoord;out vec4 outColor;void main(){ivec2 coord=ivec2(clamp(floor(v_texCoord*vec2(u_size)),vec2(0.0),vec2(u_size)-vec2(1.0)));float curr=texelFetch(u_mask,coord,0).r;float curr_binary=step(u_threshold,curr);outColor=vec4(curr_binary,curr_binary,curr_binary,1.0);}`;var gu=(t,e,r)=>{let{gl:n,program:s,attribLocations:o,uniformLocations:a,floatFullChannelSupported:i,floatSingleChannelSupported:u,release:l}=he(t,{attribs:{position:"a_position",texCoord:"a_texCoord"},uniforms:{matrix:"u_matrix",mask:"u_mask",size:"u_size",threshold:"u_threshold"},vertexSrc:de,fragmentSrc:kh}),c=n.createVertexArray();n.bindVertexArray(c);let f=n.createBuffer();n.enableVertexAttribArray(o.position),n.bindBuffer(n.ARRAY_BUFFER,f),n.vertexAttribPointer(o.position,2,n.FLOAT,!1,0,0),n.bufferData(n.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),n.STATIC_DRAW);let d=n.createBuffer();n.bindBuffer(n.ARRAY_BUFFER,d),n.bufferData(n.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),n.STATIC_DRAW),n.enableVertexAttribArray(o.texCoord),n.vertexAttribPointer(o.texCoord,2,n.FLOAT,!1,0,0);let p=ve(n,e,r,!1,u,i),v=ae(n,p);return{render:(A,w)=>{F(!n.isContextLost(),O.ContextLost),n.clearColor(0,0,0,0),n.clear(n.COLOR_BUFFER_BIT),n.useProgram(s),n.bindVertexArray(c),n.bindFramebuffer(n.FRAMEBUFFER,v),n.viewport(0,0,e,r),n.activeTexture(n.TEXTURE0),n.uniform1i(a.mask,0),n.bindTexture(n.TEXTURE_2D,A.texture),n.uniform2i(a.size,A.width,A.height),n.uniform1f(a.threshold,w);let S=K.projection(1,1,1);return n.uniformMatrix3fv(a.matrix,!1,S),n.drawArrays(n.TRIANGLES,0,6),n.bindBuffer(n.ARRAY_BUFFER,null),n.bindFramebuffer(n.FRAMEBUFFER,null),n.bindTexture(n.TEXTURE_2D,null),n.bindVertexArray(null),{texture:p,width:e,height:r}},release:()=>{n.deleteBuffer(f),n.deleteBuffer(d),n.deleteTexture(p),n.deleteFramebuffer(v),n.deleteVertexArray(c),l()}}};var Eh=`#version 300 es
56
+ precision mediump float;uniform sampler2D u_mask;uniform sampler2D u_frame_foreground;uniform sampler2D u_frame_background;uniform vec2 u_confidence_thresholds;in vec2 v_texCoord;out vec4 outColor;void main(){vec4 background=texture(u_frame_background,v_texCoord);vec4 foreground=texture(u_frame_foreground,v_texCoord);float person_mask=texture(u_mask,v_texCoord).r;person_mask=smoothstep(u_confidence_thresholds.x,u_confidence_thresholds.y,person_mask);outColor=mix(background,foreground,person_mask);}`;var Ah=t=>{let{gl:e,program:r,attribLocations:n,floatFullChannelSupported:s,uniformLocations:o,release:a}=he(t,{attribs:{position:"a_position",texCoord:"a_texCoord"},uniforms:{matrix:"u_matrix",mask:"u_mask",frameBackground:"u_frame_background",frameForeground:"u_frame_foreground",confidenceThresholds:"u_confidence_thresholds"},vertexSrc:de,fragmentSrc:Eh});e.enable(e.BLEND);let i=e.createVertexArray();e.bindVertexArray(i);let u=e.createBuffer();e.enableVertexAttribArray(n.position),e.bindBuffer(e.ARRAY_BUFFER,u),e.vertexAttribPointer(n.position,2,e.FLOAT,!1,0,0),e.bufferData(e.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),e.STATIC_DRAW);let l=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,l),e.bufferData(e.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),e.STATIC_DRAW),e.enableVertexAttribArray(n.texCoord),e.vertexAttribPointer(n.texCoord,2,e.FLOAT,!1,0,0);let c=Vt(e,t.width,t.height,!0,s),f=ae(e,c);return{render:({mask:d,foreground:p,background:v},A)=>{F(!e.isContextLost(),O.ContextLost),e.useProgram(r),e.bindFramebuffer(e.FRAMEBUFFER,f),e.viewport(0,0,t.width,t.height),e.bindVertexArray(i),e.uniform2f(o.confidenceThresholds,A.backgroundThreshold,A.foregroundThreshold),e.activeTexture(e.TEXTURE0),e.uniform1i(o.frameForeground,0),e.bindTexture(e.TEXTURE_2D,p.texture),e.activeTexture(e.TEXTURE1),e.uniform1i(o.frameBackground,1),e.bindTexture(e.TEXTURE_2D,v.texture),e.activeTexture(e.TEXTURE2),e.uniform1i(o.mask,2),e.bindTexture(e.TEXTURE_2D,d.texture);let w=K.projection(1,1,1);return e.uniformMatrix3fv(o.matrix,!1,w),e.drawArrays(e.TRIANGLES,0,6),e.bindBuffer(e.ARRAY_BUFFER,null),e.bindFramebuffer(e.FRAMEBUFFER,null),e.bindTexture(e.TEXTURE_2D,null),e.bindVertexArray(null),{texture:c,width:t.width,height:t.height}},release:()=>{e.deleteBuffer(u),e.deleteBuffer(l),e.deleteTexture(c),e.deleteFramebuffer(f),e.deleteVertexArray(i),a()}}};var Rh=`#version 300 es
57
+ precision mediump float;uniform sampler2D u_frame;uniform int u_downsampling;in vec2 v_texCoord;out vec4 outColor;vec4 Downsample(sampler2D image,vec2 uv,vec2 halfpixel){vec4 sum=texture(image,uv)*4.0;sum+=texture(image,uv-halfpixel.xy);sum+=texture(image,uv+halfpixel.xy);sum+=texture(image,uv+vec2(halfpixel.x,-halfpixel.y));sum+=texture(image,uv-vec2(halfpixel.x,-halfpixel.y));return sum/8.0;}vec4 Upsample(sampler2D image,vec2 uv,vec2 halfpixel){vec4 sum=texture(image,uv+vec2(-halfpixel.x*2.0,0.0));sum+=texture(image,uv+vec2(-halfpixel.x,halfpixel.y))*2.0;sum+=texture(image,uv+vec2(0.0,halfpixel.y*2.0));sum+=texture(image,uv+vec2(halfpixel.x,halfpixel.y))*2.0;sum+=texture(image,uv+vec2(halfpixel.x*2.0,0.0));sum+=texture(image,uv+vec2(halfpixel.x,-halfpixel.y))*2.0;sum+=texture(image,uv+vec2(0.0,-halfpixel.y*2.0));sum+=texture(image,uv+vec2(-halfpixel.x,-halfpixel.y))*2.0;return sum/12.0;}void main(){vec2 halfpixel=0.5/vec2(textureSize(u_frame,0));if(u_downsampling==1){outColor=Downsample(u_frame,v_texCoord,halfpixel);return;}outColor=Upsample(u_frame,v_texCoord,halfpixel);}`;var up=At(1,9),No=(t,e,r=!1)=>{let{gl:n,program:s,attribLocations:o,uniformLocations:a,floatSingleChannelSupported:i,floatFullChannelSupported:u,release:l}=he(t,{attribs:{position:"a_position",texCoord:"a_texCoord"},uniforms:{matrix:"u_matrix",downsampling:"u_downsampling",frame:"u_frame"},vertexSrc:de,fragmentSrc:Rh}),c=n.createVertexArray();n.bindVertexArray(c);let f=n.createBuffer();n.enableVertexAttribArray(o.position),n.bindBuffer(n.ARRAY_BUFFER,f),n.vertexAttribPointer(o.position,2,n.FLOAT,!1,0,0),n.bufferData(n.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),n.STATIC_DRAW);let d=n.createBuffer();n.bindBuffer(n.ARRAY_BUFFER,d),n.bufferData(n.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),n.STATIC_DRAW),n.enableVertexAttribArray(o.texCoord),n.vertexAttribPointer(o.texCoord,2,n.FLOAT,!1,0,0);let p=(S,k,E)=>{n.bindFramebuffer(n.FRAMEBUFFER,S),n.viewport(0,0,k,E)},v=S=>{let k=Math.trunc(t.width/2**S),E=Math.trunc(t.height/2**S),I=r?ve(n,k,E,!0,i,u):Vt(n,k,E,!0,u),C=ae(n,I);return{texture:I,frameBuffer:C,width:k,height:E}},A=(S,k=0)=>{let E=Math.max(up(k+S)-k,0);return Array.from({length:E}).map((I,C)=>v(k+C))},w=A(e+1);return{render:(S,k)=>{if(F(!n.isContextLost(),O.ContextLost),!k)return{texture:S.texture,width:S.width,height:S.height};n.useProgram(s),n.bindVertexArray(c),n.activeTexture(n.TEXTURE0),n.uniform1i(a.frame,0),n.bindTexture(n.TEXTURE_2D,S.texture),n.uniform1i(a.downsampling,1);let E=k+1;if(E>w.length)for(let I of A(E-w.length,w.length))w.push(I);for(;E<w.length;){let I=w.pop();n.deleteTexture(I?.texture??null),n.deleteFramebuffer(I?.frameBuffer??null)}for(let I=1;I<E;I++){let{frameBuffer:C=null,texture:B=null,width:z=t.width,height:N=t.height}=w[I]??{};p(C,z,N);let U=K.projection(1,1,1);n.uniformMatrix3fv(a.matrix,!1,U),n.drawArrays(n.TRIANGLES,0,6);let V=n.checkFramebufferStatus(n.FRAMEBUFFER),P=n.getError();if(F(P!==n.CONTEXT_LOST_WEBGL,O.ContextLost),F(!n.isContextLost(),O.ContextLost),V!==n.FRAMEBUFFER_COMPLETE||P!==n.NO_ERROR)throw new Error(O.SamplingError,{cause:`downsampling FrameBuffer Status: ${V}`});n.bindTexture(n.TEXTURE_2D,B)}n.uniform1i(a.downsampling,0);for(let I=k-1;I>=0;I--){let{frameBuffer:C=null,texture:B=null,width:z=t.width,height:N=t.height}=w[I]??{};p(C,z,N);let U=K.projection(1,1,1);n.uniformMatrix3fv(a.matrix,!1,U),n.drawArrays(n.TRIANGLES,0,6);let V=n.checkFramebufferStatus(n.FRAMEBUFFER),P=n.getError();if(F(P!==n.CONTEXT_LOST_WEBGL,O.ContextLost),F(!n.isContextLost(),O.ContextLost),V!==n.FRAMEBUFFER_COMPLETE||P!==n.NO_ERROR)throw new Error(O.SamplingError,{cause:`Upsampling FrameBuffer Status: ${V}`});n.bindTexture(n.TEXTURE_2D,B)}return n.bindBuffer(n.ARRAY_BUFFER,null),n.bindFramebuffer(n.FRAMEBUFFER,null),n.bindTexture(n.TEXTURE_2D,null),n.bindVertexArray(null),{texture:w[0]?.texture??S.texture,width:w[0]?.width??S.width,height:w[0]?.height??S.height}},release:()=>{for(let{frameBuffer:S,texture:k}of w)n.deleteTexture(k),n.deleteFramebuffer(S);n.deleteBuffer(f),n.deleteBuffer(d),n.deleteVertexArray(c),l()}}};var En=`#version 300 es
58
+ precision mediump float;in vec2 v_texCoord;uniform sampler2D u_texture;out vec4 outColor;void main(){outColor=texture(u_texture,v_texCoord);}`;var Go=t=>{let{gl:e,program:r,attribLocations:n,uniformLocations:s,release:o}=he(t,{attribs:{position:"a_position",texCoord:"a_texCoord"},uniforms:{matrix:"u_matrix",texture:"u_texture"},vertexSrc:de,fragmentSrc:En}),a=e.createVertexArray();e.bindVertexArray(a);let i=e.createBuffer();e.enableVertexAttribArray(n.position),e.bindBuffer(e.ARRAY_BUFFER,i),e.vertexAttribPointer(n.position,2,e.FLOAT,!1,0,0),e.bufferData(e.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),e.STATIC_DRAW);let u=e.createBuffer();return e.bindBuffer(e.ARRAY_BUFFER,u),e.bufferData(e.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),e.STATIC_DRAW),e.enableVertexAttribArray(n.texCoord),e.vertexAttribPointer(n.texCoord,2,e.FLOAT,!1,0,0),{render:l=>{F(!e.isContextLost(),O.ContextLost),e.bindFramebuffer(e.FRAMEBUFFER,null),e.viewport(0,0,t.width,t.height),e.clearColor(0,0,0,1),e.clear(e.COLOR_BUFFER_BIT),e.useProgram(r),e.bindVertexArray(a),e.uniform1i(s.texture,0);let c=K.projection(1,1);e.uniformMatrix3fv(s.matrix,!1,c),e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_2D,l.texture),e.drawArrays(e.TRIANGLES,0,6),e.bindBuffer(e.ARRAY_BUFFER,null),e.bindFramebuffer(e.FRAMEBUFFER,null),e.bindTexture(e.TEXTURE_2D,null),e.bindVertexArray(null)},release:()=>{e.deleteBuffer(i),e.deleteBuffer(u),e.deleteVertexArray(a),o()}}};var Ct=(t,e,r=!1,n=t.width,s=t.height,o=!0)=>{let{gl:a,program:i,attribLocations:u,uniformLocations:l,floatFullChannelSupported:c,floatSingleChannelSupported:f,release:d}=he(t,{attribs:{position:"a_position",texCoord:"a_texCoord"},uniforms:{matrix:"u_matrix",texture:"u_texture"},vertexSrc:de,fragmentSrc:En}),p=a.createVertexArray();a.bindVertexArray(p);let v=a.createBuffer();a.enableVertexAttribArray(u.position),a.bindBuffer(a.ARRAY_BUFFER,v),a.vertexAttribPointer(u.position,2,a.FLOAT,!1,0,0),a.bufferData(a.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),a.STATIC_DRAW);let A=a.createBuffer();a.bindBuffer(a.ARRAY_BUFFER,A),a.bufferData(a.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),a.STATIC_DRAW),a.enableVertexAttribArray(u.texCoord),a.vertexAttribPointer(u.texCoord,2,a.FLOAT,!1,0,0);let w=e?ve(a,n,s,r,o&&f,o&&c):Vt(a,n,s,r,o&&c),S=ae(a,w);return{render:k=>{F(!a.isContextLost(),O.ContextLost),a.bindFramebuffer(a.FRAMEBUFFER,S),a.viewport(0,0,n,s),a.clearColor(0,0,0,1),a.clear(a.COLOR_BUFFER_BIT),a.useProgram(i),a.bindVertexArray(p),a.activeTexture(a.TEXTURE0),a.uniform1i(l.texture,0),a.bindTexture(a.TEXTURE_2D,k.texture);let E=K.projection(1,1,1);return a.uniformMatrix3fv(l.matrix,!1,E),a.drawArrays(a.TRIANGLES,0,6),a.bindBuffer(a.ARRAY_BUFFER,null),a.bindFramebuffer(a.FRAMEBUFFER,null),a.bindTexture(a.TEXTURE_2D,null),a.bindVertexArray(null),{texture:w,width:n,height:s}},release:()=>{a.deleteBuffer(v),a.deleteBuffer(A),a.deleteTexture(w),a.deleteVertexArray(p),d()}}};function Ih(t,e,r){let n=t.getContext("webgl2",{premultipliedAlpha:!1,powerPreference:"high-performance"}),s=Ct(t,!0,!1,e,r,!1);F(n,O.ContextCreationError);let o=new Int32Array(e*r),a=new Uint8Array(e*r),i=new Uint8Array(e*r),u=new Uint8Array(e*r),l=new Uint8Array(e*r),c=0,f=n.createTexture();n.bindTexture(n.TEXTURE_2D,f),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_S,n.CLAMP_TO_EDGE),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_T,n.CLAMP_TO_EDGE),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MIN_FILTER,n.NEAREST),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MAG_FILTER,n.NEAREST);let d=n.createFramebuffer(),p={switchThreshold:.3,decay:.95,area:.2,height:.4,center:.2,iou:.2};return{render:(v,A)=>{let w=s.render(v);n.bindFramebuffer(n.FRAMEBUFFER,d),n.framebufferTexture2D(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,w.texture,0),n.readPixels(0,0,e,r,n.RED,n.UNSIGNED_BYTE,a),n.bindFramebuffer(n.FRAMEBUFFER,null);let S=Math.max(0,Math.min(255,Math.floor(255*A.foregroundThreshold)));for(let B=0;B<i.length;B++)i[B]=a[B]>=S?255:0;let k=-1/0,E=0,I=Hf(i,o,e,r);for(let[B,z]of I.entries()){if(B===0)continue;for(let U=0;U<o.length;U++)l[U]=o[U]===B?255:0;let N=Xf(z,zf(u,l),{...p,centerX:A.personCenter[0]*e,centerY:A.personCenter[1]*r},e,r);N>k&&(k=N,E=B)}if(k>c*(1+p.switchThreshold)||c===0){for(let B=0;B<o.length;B++)u[B]=o[B]===E?255:0;c=k}else c*=p.decay;return n.bindTexture(n.TEXTURE_2D,f),n.texImage2D(n.TEXTURE_2D,0,n.R8,e,r,0,n.RED,n.UNSIGNED_BYTE,u),n.bindTexture(n.TEXTURE_2D,null),{texture:f,width:e,height:r}},release:()=>{n.deleteTexture(f),n.deleteFramebuffer(d),s.release()}}}var Sh=`#version 300 es
59
+ precision mediump float;uniform sampler2D u_mask;uniform sampler2D u_ref_mask;uniform vec2 u_texel_size;uniform vec2 u_direction;uniform int u_radius_px;const int MAX_RADIUS_PX=64;in vec2 v_texCoord;out vec4 outColor;void main(){float mx=0.0;for(int i=-MAX_RADIUS_PX;i<=MAX_RADIUS_PX;++i){if(abs(i)>u_radius_px)continue;vec2 off=u_direction*float(i)*u_texel_size;mx=max(mx,texture(u_mask,v_texCoord+off).r);}mx=min(mx,texture(u_ref_mask,v_texCoord).r);outColor=vec4(mx,mx,mx,1.0);}`;var Fh=`#version 300 es
60
+ precision mediump float;uniform sampler2D u_tex_a;uniform sampler2D u_tex_b;uniform ivec2 u_size;in vec2 v_texCoord;out vec4 outColor;void main(){ivec2 iuv=ivec2(clamp(floor(v_texCoord*vec2(u_size)),vec2(0.0),vec2(u_size)-vec2(1.0)));float a=texelFetch(u_tex_a,iuv,0).r;float b=texelFetch(u_tex_b,iuv,0).r;float diff=abs(a-b);outColor=vec4(diff,diff,diff,1.0);}`;var Ch=(t,e,r)=>{let{gl:n,program:s,attribLocations:o,uniformLocations:a,floatSingleChannelSupported:i,floatFullChannelSupported:u,release:l}=he(t,{attribs:{position:"a_position",texCoord:"a_texCoord"},uniforms:{matrix:"u_matrix",texA:"u_tex_a",texB:"u_tex_b",size:"u_size"},vertexSrc:de,fragmentSrc:Fh}),c=n.createVertexArray();n.bindVertexArray(c);let f=n.createBuffer();n.enableVertexAttribArray(o.position),n.bindBuffer(n.ARRAY_BUFFER,f),n.vertexAttribPointer(o.position,2,n.FLOAT,!1,0,0),n.bufferData(n.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),n.STATIC_DRAW);let d=n.createBuffer();n.bindBuffer(n.ARRAY_BUFFER,d),n.bufferData(n.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),n.STATIC_DRAW),n.enableVertexAttribArray(o.texCoord),n.vertexAttribPointer(o.texCoord,2,n.FLOAT,!1,0,0);let p=ve(n,e,r,!0,i,u),v=ae(n,p);return{render:(A,w)=>{F(!n.isContextLost(),O.ContextLost),F(A.width===w.width&&A.height===w.height),n.useProgram(s),n.bindVertexArray(c),n.uniform2i(a.size,A.width,A.height),n.activeTexture(n.TEXTURE0),n.uniform1i(a.texA,0),n.bindTexture(n.TEXTURE_2D,A.texture),n.activeTexture(n.TEXTURE1),n.uniform1i(a.texB,1),n.bindTexture(n.TEXTURE_2D,w.texture);let S=K.projection(1,1,1);return n.uniformMatrix3fv(a.matrix,!1,S),n.bindFramebuffer(n.FRAMEBUFFER,v),n.viewport(0,0,e,r),n.clearColor(0,0,0,0),n.clear(n.COLOR_BUFFER_BIT),n.drawArrays(n.TRIANGLES,0,6),n.bindBuffer(n.ARRAY_BUFFER,null),n.bindFramebuffer(n.FRAMEBUFFER,null),n.bindTexture(n.TEXTURE_2D,null),n.bindVertexArray(null),{texture:p,frameBuffer:v,width:e,height:r}},release:()=>{n.deleteBuffer(f),n.deleteBuffer(d),n.deleteTexture(p),n.deleteFramebuffer(v),n.deleteVertexArray(c),l()}}};var cp=64,lp=64,fp=At(0,lp),xu=(t,e,r)=>{let{gl:n,program:s,attribLocations:o,uniformLocations:a,floatSingleChannelSupported:i,floatFullChannelSupported:u,release:l}=he(t,{attribs:{position:"a_position",texCoord:"a_texCoord"},uniforms:{matrix:"u_matrix",mask:"u_mask",maskRef:"u_ref_mask",texelSize:"u_texel_size",radiusPx:"u_radius_px",direction:"u_direction"},vertexSrc:de,fragmentSrc:Sh}),c=n.createVertexArray();n.bindVertexArray(c);let f=n.createBuffer();n.enableVertexAttribArray(o.position),n.bindBuffer(n.ARRAY_BUFFER,f),n.vertexAttribPointer(o.position,2,n.FLOAT,!1,0,0),n.bufferData(n.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),n.STATIC_DRAW);let d=n.createBuffer();n.bindBuffer(n.ARRAY_BUFFER,d),n.bufferData(n.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),n.STATIC_DRAW),n.enableVertexAttribArray(o.texCoord),n.vertexAttribPointer(o.texCoord,2,n.FLOAT,!1,0,0);let p=t.width/e,v=32,A=18,w=Math.max(Math.floor(e/4),v),S=Math.max(Math.floor(r/4),A),k=w===v?1e-8:1e-4,E=w*S,I=Ch(t,w,S),C=i||u,B=C?n.RGBA:n.RED,z=C?n.FLOAT:n.UNSIGNED_BYTE,N=C?new Float32Array(E*4):new Uint8Array(E),U=ve(n,e,r,!1,i,u),V=ve(n,e,r,!1,i,u),P=ae(n,U),te=ae(n,V);return{render:({mask:ue,maskRef:me},pe)=>{F(!n.isContextLost(),O.ContextLost);let re=P,tt=ue.texture,ze=()=>{n.useProgram(s),n.bindVertexArray(c),n.uniform1i(a.radiusPx,fp(Math.floor(pe.morphDilateRadiusPx/p))),n.uniform2f(a.texelSize,1/ue.width,1/ue.height),n.activeTexture(n.TEXTURE1),n.uniform1i(a.maskRef,1),n.bindTexture(n.TEXTURE_2D,me.texture);let He=K.projection(1,1,1);n.uniformMatrix3fv(a.matrix,!1,He);for(let J=0;J<2;J++)n.activeTexture(n.TEXTURE0),n.uniform1i(a.mask,0),n.bindTexture(n.TEXTURE_2D,tt),n.uniform2f(a.direction,1-J,0+J),n.bindFramebuffer(n.FRAMEBUFFER,re),n.viewport(0,0,e,r),n.drawArrays(n.TRIANGLES,0,6),[tt,re]=re===P?[U,te]:[V,P]};for(let He=0;He<pe.morphPass;He++)ze();let Wt=!1,Ge=0;for(;!Wt;){ze();let He=I.render({texture:U,width:e,height:r},{texture:V,width:e,height:r});n.bindFramebuffer(n.FRAMEBUFFER,He.frameBuffer),n.readPixels(0,0,w,S,B,z,N);let J=0,Ve=0;if(C){for(let Ue=0,as=0;Ue<E;++Ue,as+=4)J+=N[as];Ve=J/E}else{for(let Ue=0;Ue<E;++Ue)J+=N[Ue];Ve=J/E/255}n.bindFramebuffer(n.FRAMEBUFFER,null),(Ve<k||Ge>=cp)&&(Wt=!0),Ge++}return n.bindBuffer(n.ARRAY_BUFFER,null),n.bindFramebuffer(n.FRAMEBUFFER,null),n.bindTexture(n.TEXTURE_2D,null),n.bindVertexArray(null),{texture:tt,width:e,height:r}},release:()=>{n.deleteBuffer(f),n.deleteBuffer(d),n.deleteTexture(U),n.deleteTexture(V),n.deleteFramebuffer(P),n.deleteFramebuffer(te),n.deleteVertexArray(c),I.release(),l()}}};var Bh=`#version 300 es
61
61
  #ifdef GL_FRAGMENT_PRECISION_HIGH
62
62
  precision highp float;
63
63
  #else
64
64
  precision mediump float;
65
65
  #endif
66
- in vec2 v_texCoord;uniform sampler2D u_frame_input;uniform sampler2D u_frame_guide;uniform vec2 u_texel_size;uniform float u_sigma_space;uniform float u_sigma_range_lo;uniform float u_sigma_range_hi;uniform float u_background_threshold;uniform float u_foreground_threshold;const float kSparsityFactor=0.66;const float FOREGROUND_BIAS=1.3;const float EDGE_THRESHOLD=0.08;const int MAX_RADIUS=32;out vec4 outColor;float gaussian_sqr(float dist2,float sigma2){float denom=max(sigma2,1.0e-6);float coeff=-0.5/denom;return exp(dist2*coeff);}vec2 clamp_uv(vec2 uv){vec2 eps=vec2(1.0e-6);return clamp(uv,eps,vec2(1.0)-eps);}void main(){vec2 center_uv=v_texCoord;vec3 center_val=texture(u_frame_guide,center_uv).rgb;float center_mask=texture(u_frame_input,center_uv).r;float sparsity=max(1.0,sqrt(u_sigma_space)*kSparsityFactor);mediump vec3 new_val=vec3(0.0);mediump float total_weight=0.0;float t=smoothstep(u_background_threshold,u_foreground_threshold,center_mask);float sigma_color=mix(u_sigma_range_lo,u_sigma_range_hi,t);float sigma_texel=max(u_texel_size.x,u_texel_size.y)*u_sigma_space;float sigma_texel2=sigma_texel*sigma_texel;float sigma_color2=sigma_color*sigma_color;int radiusI=int(floor(u_sigma_space+0.5));int stepI=max(1,int(floor(sparsity+0.5)));int offsetI=(stepI>1)?(stepI/2):0;for(int iy=-MAX_RADIUS;iy<=MAX_RADIUS;++iy){if(abs(iy)>radiusI)continue;int iyAligned=(iy+offsetI);if((iyAligned % stepI)!=0)continue;float fy=float(iy)*u_texel_size.y;float row_iy2=fy*fy;for(int jx=-MAX_RADIUS;jx<=MAX_RADIUS;++jx){if(abs(jx)>radiusI)continue;int jxAligned=(jx+offsetI);if((jxAligned % stepI)!=0)continue;float fx=float(jx)*u_texel_size.x;vec2 uv=clamp_uv(center_uv+vec2(fx,fy));vec3 guide_val=texture(u_frame_guide,uv).rgb;vec3 out_val=texture(u_frame_input,uv).rgb;float dist2_uv=fx*fx+row_iy2;float space_weight=gaussian_sqr(dist2_uv,sigma_texel2);float l_center=dot(center_val,vec3(0.299,0.587,0.114));float l_guide=dot(guide_val,vec3(0.299,0.587,0.114));float dL=abs(l_guide-l_center);if(dL>EDGE_THRESHOLD){continue;}float color_weight=gaussian_sqr(dL*dL,sigma_color2);float fg_w=mix(1.0,FOREGROUND_BIAS,center_mask);float w=space_weight*color_weight*fg_w;total_weight+=w;new_val+=w*out_val;}}new_val*=1.0/max(total_weight,1.0e-6);outColor=vec4(new_val,1.0);}`;var Mo=(t,e,r)=>{let{gl:n,program:s,attribLocations:o,uniformLocations:a,release:i}=he(t,{attribs:{position:"a_position",texCoord:"a_texCoord"},uniforms:{frameGuide:"u_frame_guide",frameInput:"u_frame_input",matrix:"u_matrix",texelSize:"u_texel_size",sigmaSpace:"u_sigma_space",sigmaRangeLo:"u_sigma_range_lo",sigmaRangeHi:"u_sigma_range_hi",foregroundThreshold:"u_foreground_threshold",backgroundThreshold:"u_background_threshold"},vertexSrc:de,fragmentSrc:Fh});n.enable(n.BLEND);let u=n.createVertexArray();n.bindVertexArray(u);let l=n.createBuffer();n.enableVertexAttribArray(o.position),n.bindBuffer(n.ARRAY_BUFFER,l),n.vertexAttribPointer(o.position,2,n.FLOAT,!1,0,0),n.bufferData(n.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),n.STATIC_DRAW);let c=n.createBuffer();n.bindBuffer(n.ARRAY_BUFFER,c),n.bufferData(n.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),n.STATIC_DRAW),n.enableVertexAttribArray(o.texCoord),n.vertexAttribPointer(o.texCoord,2,n.FLOAT,!1,0,0);let f=ve(n,e,r),m=ae(n,f),p=t.width/e;return{render:({input:w,guide:A},v)=>{I(!n.isContextLost(),O.ContextLost),I(v.foregroundThreshold>=v.backgroundThreshold,"foregroundThreshold must be >= backgroundThreshold"),n.bindFramebuffer(n.FRAMEBUFFER,m),n.viewport(0,0,e,r),n.useProgram(s),n.bindVertexArray(u),n.activeTexture(n.TEXTURE0),n.uniform1i(a.frameInput,0),n.bindTexture(n.TEXTURE_2D,w.texture),n.activeTexture(n.TEXTURE1),n.uniform1i(a.frameGuide,1),n.bindTexture(n.TEXTURE_2D,A.texture),n.uniform2f(a.texelSize,1/w.width,1/w.height),n.uniform1f(a.sigmaSpace,v.sigmaSpace/p),n.uniform1f(a.sigmaRangeLo,v.sigmaRangeLo),n.uniform1f(a.sigmaRangeHi,v.sigmaRangeHi),n.uniform1f(a.backgroundThreshold,v.backgroundThreshold),n.uniform1f(a.foregroundThreshold,v.foregroundThreshold);let C=K.projection(1,1,1);return n.uniformMatrix3fv(a.matrix,!1,C),n.drawArrays(n.TRIANGLES,0,6),n.bindBuffer(n.ARRAY_BUFFER,null),n.bindFramebuffer(n.FRAMEBUFFER,null),n.bindTexture(n.TEXTURE_2D,null),n.bindVertexArray(null),{texture:f,width:e,height:r}},release:()=>{n.deleteBuffer(l),n.deleteBuffer(c),n.deleteTexture(f),n.deleteFramebuffer(m),n.deleteVertexArray(u),i()}}};var Bh=`#version 300 es
67
- precision mediump float;uniform sampler2D u_mask;uniform vec2 u_texel_size;uniform vec2 u_direction;uniform int u_radius_px;const int MAX_RADIUS_PX=64;in vec2 v_texCoord;out vec4 outColor;void main(){float mn=1.0;for(int i=-MAX_RADIUS_PX;i<=MAX_RADIUS_PX;++i){if(abs(i)>u_radius_px)continue;vec2 off=u_direction*float(i)*u_texel_size;mn=min(mn,texture(u_mask,v_texCoord+off).r);}outColor=vec4(mn,mn,mn,1.0);}`;var lp=64,fp=Et(0,lp),xu=(t,e,r)=>{let{gl:n,program:s,attribLocations:o,uniformLocations:a,floatSingleChannelSupported:i,floatFullChannelSupported:u,release:l}=he(t,{attribs:{position:"a_position",texCoord:"a_texCoord"},uniforms:{matrix:"u_matrix",mask:"u_mask",texelSize:"u_texel_size",radiusPx:"u_radius_px",direction:"u_direction"},vertexSrc:de,fragmentSrc:Bh}),c=n.createVertexArray();n.bindVertexArray(c);let f=n.createBuffer();n.enableVertexAttribArray(o.position),n.bindBuffer(n.ARRAY_BUFFER,f),n.vertexAttribPointer(o.position,2,n.FLOAT,!1,0,0),n.bufferData(n.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),n.STATIC_DRAW);let m=n.createBuffer();n.bindBuffer(n.ARRAY_BUFFER,m),n.bufferData(n.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),n.STATIC_DRAW),n.enableVertexAttribArray(o.texCoord),n.vertexAttribPointer(o.texCoord,2,n.FLOAT,!1,0,0);let p=ve(n,e,r,!1,i,u),w=ae(n,p),A=ve(n,e,r,!1,i,u),v=ae(n,A),C=t.width/e;return{render:({mask:k},T)=>{I(!n.isContextLost(),O.ContextLost),n.clearColor(0,0,0,0),n.clear(n.COLOR_BUFFER_BIT),n.useProgram(s),n.bindVertexArray(c),n.uniform2f(a.texelSize,1/k.width,1/k.height),n.uniform1i(a.radiusPx,fp(Math.floor(T.morphErodeRadiusPx/C)));let S=K.projection(1,1,1);n.uniformMatrix3fv(a.matrix,!1,S);let F=w,B=k.texture;for(let z=0;z<T.morphPass;z++)for(let N=0;N<2;N++)n.activeTexture(n.TEXTURE0),n.uniform1i(a.mask,0),n.bindTexture(n.TEXTURE_2D,B),n.uniform2f(a.direction,1-N,0+N),n.bindFramebuffer(n.FRAMEBUFFER,F),n.viewport(0,0,k.width,k.height),n.drawArrays(n.TRIANGLES,0,6),[B,F]=F===w?[p,v]:[A,w];return n.bindBuffer(n.ARRAY_BUFFER,null),n.bindFramebuffer(n.FRAMEBUFFER,null),n.bindTexture(n.TEXTURE_2D,null),n.bindVertexArray(null),{texture:B,width:e,height:r}},release:()=>{n.deleteBuffer(f),n.deleteBuffer(m),n.deleteTexture(p),n.deleteTexture(A),n.deleteFramebuffer(w),n.deleteFramebuffer(v),n.deleteVertexArray(c),l()}}};var Uh=`#version 300 es
68
- precision mediump float;uniform sampler2D u_mask;uniform sampler2D u_frame_foreground;uniform sampler2D u_frame_background;uniform sampler2D u_blur_background;uniform vec2 u_confidence_thresholds;uniform float u_light_wrap;uniform float u_light_wrap_tightness;uniform float u_edge_band;uniform float u_parity;uniform float u_time;uniform vec2 u_frame_size;in vec2 v_texCoord;out vec4 outColor;const float NOISE_LUMA=2.0/255.0;float hash12(vec2 p){vec3 p3=fract(vec3(p.xyx)*0.1031);p3+=dot(p3,p3.yzx+33.33);return fract((p3.x+p3.y)*p3.z);}vec3 rgb2yuv(vec3 rgb){float Y=dot(rgb,vec3(0.299,0.587,0.114));float U=dot(rgb,vec3(-0.168736,-0.331264,0.5));float V=dot(rgb,vec3(0.5,-0.418688,-0.081312));return vec3(Y,U,V);}vec3 yuv2rgb(vec3 yuv){float Y=yuv.x,U=yuv.y,V=yuv.z;vec3 rgb;rgb.r=Y+1.402*V;rgb.g=Y-0.344136*U-0.714136*V;rgb.b=Y+1.772*U;return rgb;}void main(){vec3 background=texture(u_frame_background,v_texCoord).rgb;vec3 foreground=texture(u_frame_foreground,v_texCoord).rgb;vec3 blur_background=texture(u_blur_background,v_texCoord).rgb;float person_mask=texture(u_mask,v_texCoord).r;float bg=u_confidence_thresholds.x;float fg=u_confidence_thresholds.y;float maskFg=smoothstep(bg,fg,person_mask);float edgeBg=smoothstep(bg,bg+u_edge_band,person_mask);float edgeFg=1.0-smoothstep(fg-u_edge_band,fg,person_mask);edgeBg=pow(edgeBg,u_light_wrap_tightness);edgeFg=pow(edgeFg,u_light_wrap_tightness);float maskBg=1.0-maskFg;vec2 pixelCoord=floor(v_texCoord*u_frame_size);float noiseY=hash12(pixelCoord+vec2(u_time,0.0))-0.5;noiseY*=NOISE_LUMA*u_parity;float noiseWeight=clamp(maskBg+edgeBg*maskFg,0.0,1.0);vec3 yuv=rgb2yuv(background);yuv.x=clamp(yuv.x+noiseY*noiseWeight,0.0,1.0);background=yuv2rgb(yuv);vec3 bgSmooth=mix(background,blur_background,u_light_wrap*edgeBg);vec3 wrapColor=mix(foreground,blur_background,u_light_wrap);vec3 fgSmooth=mix(foreground,wrapColor,edgeFg);vec3 composite=mix(bgSmooth,fgSmooth,maskFg);outColor=vec4(composite,1.0);}`;var Lh=t=>{let{gl:e,program:r,attribLocations:n,floatFullChannelSupported:s,uniformLocations:o,release:a}=he(t,{attribs:{position:"a_position",texCoord:"a_texCoord"},uniforms:{matrix:"u_matrix",frameBackground:"u_frame_background",frameForeground:"u_frame_foreground",blurBackground:"u_blur_background",mask:"u_mask",confidenceThresholds:"u_confidence_thresholds",lightWrap:"u_light_wrap",lightWrapTightness:"u_light_wrap_tightness",lightWrapEdgeBand:"u_edge_band",time:"u_time",parity:"u_parity",frameSize:"u_frame_size"},vertexSrc:de,fragmentSrc:Uh});e.enable(e.BLEND);let i=e.createVertexArray();e.bindVertexArray(i);let u=e.createBuffer();e.enableVertexAttribArray(n.position),e.bindBuffer(e.ARRAY_BUFFER,u),e.vertexAttribPointer(n.position,2,e.FLOAT,!1,0,0),e.bufferData(e.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),e.STATIC_DRAW);let l=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,l),e.bufferData(e.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),e.STATIC_DRAW),e.enableVertexAttribArray(n.texCoord),e.vertexAttribPointer(n.texCoord,2,e.FLOAT,!1,0,0);let c=Gt(e,t.width,t.height,!0,s),f=ae(e,c),m=-1;return{render:({mask:p,foreground:w,background:A,blurredBackground:v,timestamp:C},k)=>{I(!e.isContextLost(),O.ContextLost),e.bindFramebuffer(e.FRAMEBUFFER,f),e.viewport(0,0,t.width,t.height),e.useProgram(r),e.bindVertexArray(i),e.activeTexture(e.TEXTURE0),e.uniform1i(o.frameForeground,0),e.bindTexture(e.TEXTURE_2D,w.texture),e.activeTexture(e.TEXTURE1),e.uniform1i(o.frameBackground,1),e.bindTexture(e.TEXTURE_2D,A.texture),e.activeTexture(e.TEXTURE2),e.uniform1i(o.mask,2),e.bindTexture(e.TEXTURE_2D,p.texture),e.activeTexture(e.TEXTURE3),e.uniform1i(o.blurBackground,3),e.bindTexture(e.TEXTURE_2D,v.texture),e.uniform2f(o.confidenceThresholds,k.backgroundThreshold,k.foregroundThreshold),e.uniform1f(o.lightWrap,k.lightWrapIntensity),e.uniform1f(o.lightWrapTightness,k.lightWrapTightness),e.uniform1f(o.lightWrapEdgeBand,k.lightWrapEdgeBand),m=-m,e.uniform1f(o.parity,m),e.uniform1f(o.time,C*1e-6%1024),e.uniform2f(o.frameSize,t.width,t.height);let T=K.projection(1,1,1);return e.uniformMatrix3fv(o.matrix,!1,T),e.drawArrays(e.TRIANGLES,0,6),e.bindBuffer(e.ARRAY_BUFFER,null),e.bindFramebuffer(e.FRAMEBUFFER,null),e.bindTexture(e.TEXTURE_2D,null),e.bindVertexArray(null),{texture:c,width:t.width,height:t.height}},release:()=>{e.deleteBuffer(u),e.deleteBuffer(l),e.deleteTexture(c),e.deleteFramebuffer(f),e.deleteVertexArray(i),a()}}};var Ph=`#version 300 es
66
+ in vec2 v_texCoord;uniform sampler2D u_frame_input;uniform sampler2D u_frame_guide;uniform vec2 u_texel_size;uniform float u_sigma_space;uniform float u_sigma_range_lo;uniform float u_sigma_range_hi;uniform float u_background_threshold;uniform float u_foreground_threshold;const float kSparsityFactor=0.66;const float FOREGROUND_BIAS=1.3;const float EDGE_THRESHOLD=0.08;const int MAX_RADIUS=32;out vec4 outColor;float gaussian_sqr(float dist2,float sigma2){float denom=max(sigma2,1.0e-6);float coeff=-0.5/denom;return exp(dist2*coeff);}vec2 clamp_uv(vec2 uv){vec2 eps=vec2(1.0e-6);return clamp(uv,eps,vec2(1.0)-eps);}void main(){vec2 center_uv=v_texCoord;vec3 center_val=texture(u_frame_guide,center_uv).rgb;float center_mask=texture(u_frame_input,center_uv).r;float sparsity=max(1.0,sqrt(u_sigma_space)*kSparsityFactor);mediump vec3 new_val=vec3(0.0);mediump float total_weight=0.0;float t=smoothstep(u_background_threshold,u_foreground_threshold,center_mask);float sigma_color=mix(u_sigma_range_lo,u_sigma_range_hi,t);float sigma_texel=max(u_texel_size.x,u_texel_size.y)*u_sigma_space;float sigma_texel2=sigma_texel*sigma_texel;float sigma_color2=sigma_color*sigma_color;int radiusI=int(floor(u_sigma_space+0.5));int stepI=max(1,int(floor(sparsity+0.5)));int offsetI=(stepI>1)?(stepI/2):0;for(int iy=-MAX_RADIUS;iy<=MAX_RADIUS;++iy){if(abs(iy)>radiusI)continue;int iyAligned=(iy+offsetI);if((iyAligned % stepI)!=0)continue;float fy=float(iy)*u_texel_size.y;float row_iy2=fy*fy;for(int jx=-MAX_RADIUS;jx<=MAX_RADIUS;++jx){if(abs(jx)>radiusI)continue;int jxAligned=(jx+offsetI);if((jxAligned % stepI)!=0)continue;float fx=float(jx)*u_texel_size.x;vec2 uv=clamp_uv(center_uv+vec2(fx,fy));vec3 guide_val=texture(u_frame_guide,uv).rgb;vec3 out_val=texture(u_frame_input,uv).rgb;float dist2_uv=fx*fx+row_iy2;float space_weight=gaussian_sqr(dist2_uv,sigma_texel2);float l_center=dot(center_val,vec3(0.299,0.587,0.114));float l_guide=dot(guide_val,vec3(0.299,0.587,0.114));float dL=abs(l_guide-l_center);if(dL>EDGE_THRESHOLD){continue;}float color_weight=gaussian_sqr(dL*dL,sigma_color2);float fg_w=mix(1.0,FOREGROUND_BIAS,center_mask);float w=space_weight*color_weight*fg_w;total_weight+=w;new_val+=w*out_val;}}new_val*=1.0/max(total_weight,1.0e-6);outColor=vec4(new_val,1.0);}`;var Vo=(t,e,r)=>{let{gl:n,program:s,attribLocations:o,uniformLocations:a,release:i}=he(t,{attribs:{position:"a_position",texCoord:"a_texCoord"},uniforms:{frameGuide:"u_frame_guide",frameInput:"u_frame_input",matrix:"u_matrix",texelSize:"u_texel_size",sigmaSpace:"u_sigma_space",sigmaRangeLo:"u_sigma_range_lo",sigmaRangeHi:"u_sigma_range_hi",foregroundThreshold:"u_foreground_threshold",backgroundThreshold:"u_background_threshold"},vertexSrc:de,fragmentSrc:Bh});n.enable(n.BLEND);let u=n.createVertexArray();n.bindVertexArray(u);let l=n.createBuffer();n.enableVertexAttribArray(o.position),n.bindBuffer(n.ARRAY_BUFFER,l),n.vertexAttribPointer(o.position,2,n.FLOAT,!1,0,0),n.bufferData(n.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),n.STATIC_DRAW);let c=n.createBuffer();n.bindBuffer(n.ARRAY_BUFFER,c),n.bufferData(n.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),n.STATIC_DRAW),n.enableVertexAttribArray(o.texCoord),n.vertexAttribPointer(o.texCoord,2,n.FLOAT,!1,0,0);let f=ve(n,e,r),d=ae(n,f),p=t.width/e;return{render:({input:v,guide:A},w)=>{F(!n.isContextLost(),O.ContextLost),F(w.foregroundThreshold>=w.backgroundThreshold,"foregroundThreshold must be >= backgroundThreshold"),n.bindFramebuffer(n.FRAMEBUFFER,d),n.viewport(0,0,e,r),n.useProgram(s),n.bindVertexArray(u),n.activeTexture(n.TEXTURE0),n.uniform1i(a.frameInput,0),n.bindTexture(n.TEXTURE_2D,v.texture),n.activeTexture(n.TEXTURE1),n.uniform1i(a.frameGuide,1),n.bindTexture(n.TEXTURE_2D,A.texture),n.uniform2f(a.texelSize,1/v.width,1/v.height),n.uniform1f(a.sigmaSpace,w.sigmaSpace/p),n.uniform1f(a.sigmaRangeLo,w.sigmaRangeLo),n.uniform1f(a.sigmaRangeHi,w.sigmaRangeHi),n.uniform1f(a.backgroundThreshold,w.backgroundThreshold),n.uniform1f(a.foregroundThreshold,w.foregroundThreshold);let S=K.projection(1,1,1);return n.uniformMatrix3fv(a.matrix,!1,S),n.drawArrays(n.TRIANGLES,0,6),n.bindBuffer(n.ARRAY_BUFFER,null),n.bindFramebuffer(n.FRAMEBUFFER,null),n.bindTexture(n.TEXTURE_2D,null),n.bindVertexArray(null),{texture:f,width:e,height:r}},release:()=>{n.deleteBuffer(l),n.deleteBuffer(c),n.deleteTexture(f),n.deleteFramebuffer(d),n.deleteVertexArray(u),i()}}};var Uh=`#version 300 es
67
+ precision mediump float;uniform sampler2D u_mask;uniform vec2 u_texel_size;uniform vec2 u_direction;uniform int u_radius_px;const int MAX_RADIUS_PX=64;in vec2 v_texCoord;out vec4 outColor;void main(){float mn=1.0;for(int i=-MAX_RADIUS_PX;i<=MAX_RADIUS_PX;++i){if(abs(i)>u_radius_px)continue;vec2 off=u_direction*float(i)*u_texel_size;mn=min(mn,texture(u_mask,v_texCoord+off).r);}outColor=vec4(mn,mn,mn,1.0);}`;var hp=64,dp=At(0,hp),yu=(t,e,r)=>{let{gl:n,program:s,attribLocations:o,uniformLocations:a,floatSingleChannelSupported:i,floatFullChannelSupported:u,release:l}=he(t,{attribs:{position:"a_position",texCoord:"a_texCoord"},uniforms:{matrix:"u_matrix",mask:"u_mask",texelSize:"u_texel_size",radiusPx:"u_radius_px",direction:"u_direction"},vertexSrc:de,fragmentSrc:Uh}),c=n.createVertexArray();n.bindVertexArray(c);let f=n.createBuffer();n.enableVertexAttribArray(o.position),n.bindBuffer(n.ARRAY_BUFFER,f),n.vertexAttribPointer(o.position,2,n.FLOAT,!1,0,0),n.bufferData(n.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),n.STATIC_DRAW);let d=n.createBuffer();n.bindBuffer(n.ARRAY_BUFFER,d),n.bufferData(n.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),n.STATIC_DRAW),n.enableVertexAttribArray(o.texCoord),n.vertexAttribPointer(o.texCoord,2,n.FLOAT,!1,0,0);let p=ve(n,e,r,!1,i,u),v=ae(n,p),A=ve(n,e,r,!1,i,u),w=ae(n,A),S=t.width/e;return{render:({mask:k},E)=>{F(!n.isContextLost(),O.ContextLost),n.clearColor(0,0,0,0),n.clear(n.COLOR_BUFFER_BIT),n.useProgram(s),n.bindVertexArray(c),n.uniform2f(a.texelSize,1/k.width,1/k.height),n.uniform1i(a.radiusPx,dp(Math.floor(E.morphErodeRadiusPx/S)));let I=K.projection(1,1,1);n.uniformMatrix3fv(a.matrix,!1,I);let C=v,B=k.texture;for(let z=0;z<E.morphPass;z++)for(let N=0;N<2;N++)n.activeTexture(n.TEXTURE0),n.uniform1i(a.mask,0),n.bindTexture(n.TEXTURE_2D,B),n.uniform2f(a.direction,1-N,0+N),n.bindFramebuffer(n.FRAMEBUFFER,C),n.viewport(0,0,k.width,k.height),n.drawArrays(n.TRIANGLES,0,6),[B,C]=C===v?[p,w]:[A,v];return n.bindBuffer(n.ARRAY_BUFFER,null),n.bindFramebuffer(n.FRAMEBUFFER,null),n.bindTexture(n.TEXTURE_2D,null),n.bindVertexArray(null),{texture:B,width:e,height:r}},release:()=>{n.deleteBuffer(f),n.deleteBuffer(d),n.deleteTexture(p),n.deleteTexture(A),n.deleteFramebuffer(v),n.deleteFramebuffer(w),n.deleteVertexArray(c),l()}}};var Lh=`#version 300 es
68
+ precision mediump float;uniform sampler2D u_mask;uniform sampler2D u_frame_foreground;uniform sampler2D u_frame_background;uniform sampler2D u_blur_background;uniform vec2 u_confidence_thresholds;uniform float u_light_wrap;uniform float u_light_wrap_tightness;uniform float u_edge_band;uniform float u_parity;uniform float u_time;uniform vec2 u_frame_size;in vec2 v_texCoord;out vec4 outColor;const float NOISE_LUMA=2.0/255.0;float hash12(vec2 p){vec3 p3=fract(vec3(p.xyx)*0.1031);p3+=dot(p3,p3.yzx+33.33);return fract((p3.x+p3.y)*p3.z);}vec3 rgb2yuv(vec3 rgb){float Y=dot(rgb,vec3(0.299,0.587,0.114));float U=dot(rgb,vec3(-0.168736,-0.331264,0.5));float V=dot(rgb,vec3(0.5,-0.418688,-0.081312));return vec3(Y,U,V);}vec3 yuv2rgb(vec3 yuv){float Y=yuv.x,U=yuv.y,V=yuv.z;vec3 rgb;rgb.r=Y+1.402*V;rgb.g=Y-0.344136*U-0.714136*V;rgb.b=Y+1.772*U;return rgb;}void main(){vec3 background=texture(u_frame_background,v_texCoord).rgb;vec3 foreground=texture(u_frame_foreground,v_texCoord).rgb;vec3 blur_background=texture(u_blur_background,v_texCoord).rgb;float person_mask=texture(u_mask,v_texCoord).r;float bg=u_confidence_thresholds.x;float fg=u_confidence_thresholds.y;float maskFg=smoothstep(bg,fg,person_mask);float edgeBg=smoothstep(bg,bg+u_edge_band,person_mask);float edgeFg=1.0-smoothstep(fg-u_edge_band,fg,person_mask);edgeBg=pow(edgeBg,u_light_wrap_tightness);edgeFg=pow(edgeFg,u_light_wrap_tightness);float maskBg=1.0-maskFg;vec2 pixelCoord=floor(v_texCoord*u_frame_size);float noiseY=hash12(pixelCoord+vec2(u_time,0.0))-0.5;noiseY*=NOISE_LUMA*u_parity;float noiseWeight=clamp(maskBg+edgeBg*maskFg,0.0,1.0);vec3 yuv=rgb2yuv(background);yuv.x=clamp(yuv.x+noiseY*noiseWeight,0.0,1.0);background=yuv2rgb(yuv);vec3 bgSmooth=mix(background,blur_background,u_light_wrap*edgeBg);vec3 wrapColor=mix(foreground,blur_background,u_light_wrap);vec3 fgSmooth=mix(foreground,wrapColor,edgeFg);vec3 composite=mix(bgSmooth,fgSmooth,maskFg);outColor=vec4(composite,1.0);}`;var Ph=t=>{let{gl:e,program:r,attribLocations:n,floatFullChannelSupported:s,uniformLocations:o,release:a}=he(t,{attribs:{position:"a_position",texCoord:"a_texCoord"},uniforms:{matrix:"u_matrix",frameBackground:"u_frame_background",frameForeground:"u_frame_foreground",blurBackground:"u_blur_background",mask:"u_mask",confidenceThresholds:"u_confidence_thresholds",lightWrap:"u_light_wrap",lightWrapTightness:"u_light_wrap_tightness",lightWrapEdgeBand:"u_edge_band",time:"u_time",parity:"u_parity",frameSize:"u_frame_size"},vertexSrc:de,fragmentSrc:Lh});e.enable(e.BLEND);let i=e.createVertexArray();e.bindVertexArray(i);let u=e.createBuffer();e.enableVertexAttribArray(n.position),e.bindBuffer(e.ARRAY_BUFFER,u),e.vertexAttribPointer(n.position,2,e.FLOAT,!1,0,0),e.bufferData(e.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),e.STATIC_DRAW);let l=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,l),e.bufferData(e.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),e.STATIC_DRAW),e.enableVertexAttribArray(n.texCoord),e.vertexAttribPointer(n.texCoord,2,e.FLOAT,!1,0,0);let c=Vt(e,t.width,t.height,!0,s),f=ae(e,c),d=-1;return{render:({mask:p,foreground:v,background:A,blurredBackground:w,timestamp:S},k)=>{F(!e.isContextLost(),O.ContextLost),e.bindFramebuffer(e.FRAMEBUFFER,f),e.viewport(0,0,t.width,t.height),e.useProgram(r),e.bindVertexArray(i),e.activeTexture(e.TEXTURE0),e.uniform1i(o.frameForeground,0),e.bindTexture(e.TEXTURE_2D,v.texture),e.activeTexture(e.TEXTURE1),e.uniform1i(o.frameBackground,1),e.bindTexture(e.TEXTURE_2D,A.texture),e.activeTexture(e.TEXTURE2),e.uniform1i(o.mask,2),e.bindTexture(e.TEXTURE_2D,p.texture),e.activeTexture(e.TEXTURE3),e.uniform1i(o.blurBackground,3),e.bindTexture(e.TEXTURE_2D,w.texture),e.uniform2f(o.confidenceThresholds,k.backgroundThreshold,k.foregroundThreshold),e.uniform1f(o.lightWrap,k.lightWrapIntensity),e.uniform1f(o.lightWrapTightness,k.lightWrapTightness),e.uniform1f(o.lightWrapEdgeBand,k.lightWrapEdgeBand),d=-d,e.uniform1f(o.parity,d),e.uniform1f(o.time,S*1e-6%1024),e.uniform2f(o.frameSize,t.width,t.height);let E=K.projection(1,1,1);return e.uniformMatrix3fv(o.matrix,!1,E),e.drawArrays(e.TRIANGLES,0,6),e.bindBuffer(e.ARRAY_BUFFER,null),e.bindFramebuffer(e.FRAMEBUFFER,null),e.bindTexture(e.TEXTURE_2D,null),e.bindVertexArray(null),{texture:c,width:t.width,height:t.height}},release:()=>{e.deleteBuffer(u),e.deleteBuffer(l),e.deleteTexture(c),e.deleteFramebuffer(f),e.deleteVertexArray(i),a()}}};var Oh=`#version 300 es
69
69
  #ifdef GL_FRAGMENT_PRECISION_HIGH
70
70
  precision highp float;
71
71
  #else
72
72
  precision mediump float;
73
73
  #endif
74
- uniform sampler2D u_mask;uniform sampler2D u_mask_prev;uniform float u_mask_combine_ratio;in vec2 v_texCoord;out vec4 outColor;float maskUncertainty(float p){const float c1=5.68842;const float c2=-0.748699;const float c3=-57.8051;const float c4=291.309;const float c5=-624.717;float t=p-0.5;float x=t*t;float uncertainty=1.0-min(1.0,x*(c1+x*(c2+x*(c3+x*(c4+x*c5)))));return uncertainty;}void main(){float current_mask=texture(u_mask,v_texCoord).r;float prev_mask=texture(u_mask_prev,v_texCoord).r;float uncertainty=maskUncertainty(current_mask);float alpha=uncertainty*u_mask_combine_ratio;float stabilized=current_mask+(prev_mask-current_mask)*alpha;outColor=vec4(stabilized,stabilized,stabilized,1.0);}`;var yu=(t,e,r)=>{let{gl:n,program:s,attribLocations:o,uniformLocations:a,floatFullChannelSupported:i,floatSingleChannelSupported:u,release:l}=he(t,{attribs:{position:"a_position",texCoord:"a_texCoord"},uniforms:{matrix:"u_matrix",mask:"u_mask",prevMask:"u_mask_prev",frame:"u_frame",prevFrame:"u_frame_prev",maskCombineRatio:"u_mask_combine_ratio"},vertexSrc:de,fragmentSrc:Ph}),c=n.createVertexArray();n.bindVertexArray(c);let f=n.createBuffer();n.enableVertexAttribArray(o.position),n.bindBuffer(n.ARRAY_BUFFER,f),n.vertexAttribPointer(o.position,2,n.FLOAT,!1,0,0),n.bufferData(n.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),n.STATIC_DRAW);let m=n.createBuffer();n.bindBuffer(n.ARRAY_BUFFER,m),n.bufferData(n.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),n.STATIC_DRAW),n.enableVertexAttribArray(o.texCoord),n.vertexAttribPointer(o.texCoord,2,n.FLOAT,!1,0,0);let p=ve(n,e,r,!1,u,i),w=ae(n,p);return{render:({mask:A,prevMask:v},C)=>{I(!n.isContextLost(),O.ContextLost),n.bindFramebuffer(n.FRAMEBUFFER,w),n.viewport(0,0,A.width,A.height),n.clearColor(0,0,0,0),n.clear(n.COLOR_BUFFER_BIT),n.useProgram(s),n.bindVertexArray(c),n.activeTexture(n.TEXTURE0),n.uniform1i(a.mask,0),n.bindTexture(n.TEXTURE_2D,A.texture),n.activeTexture(n.TEXTURE1),n.uniform1i(a.prevMask,1),n.bindTexture(n.TEXTURE_2D,v.texture);let k=K.projection(1,1,1);return n.uniformMatrix3fv(a.matrix,!1,k),n.uniform1f(a.maskCombineRatio,C.maskCombineRatio),n.drawArrays(n.TRIANGLES,0,6),n.bindBuffer(n.ARRAY_BUFFER,null),n.bindFramebuffer(n.FRAMEBUFFER,null),n.bindTexture(n.TEXTURE_2D,null),n.bindVertexArray(null),{texture:p,width:e,height:r}},release:()=>{n.deleteBuffer(f),n.deleteBuffer(m),n.deleteTexture(p),n.deleteFramebuffer(w),n.deleteVertexArray(c),l()}}};var Oh=`#version 300 es
75
- precision mediump float;uniform sampler2D u_mask;uniform vec2 u_texel_size;uniform vec2 u_direction;uniform int u_radius_px;const int MAX_RADIUS_PX=16;in vec2 v_texCoord;out vec4 outColor;void main(){int R=clamp(u_radius_px,0,MAX_RADIUS_PX);if(R==0){float m=texture(u_mask,v_texCoord).r;outColor=vec4(m,m,m,1.0);return;}float sumW=0.0;float acc=0.0;for(int i=-MAX_RADIUS_PX;i<=MAX_RADIUS_PX;++i){if(abs(i)>R)continue;float w=float(R+1-abs(i));vec2 off=u_direction*float(i)*u_texel_size;float s=texture(u_mask,v_texCoord+off).r;acc+=w*s;sumW+=w;}float m=acc/max(sumW,1.0e-6);outColor=vec4(m,m,m,1.0);}`;var hp=16,dp=Et(0,hp),Dh=(t,e,r)=>{let{gl:n,program:s,attribLocations:o,uniformLocations:a,floatSingleChannelSupported:i,floatFullChannelSupported:u,release:l}=he(t,{attribs:{position:"a_position",texCoord:"a_texCoord"},uniforms:{matrix:"u_matrix",mask:"u_mask",texelSize:"u_texel_size",direction:"u_direction",radiusPx:"u_radius_px"},vertexSrc:de,fragmentSrc:Oh}),c=n.createVertexArray();n.bindVertexArray(c);let f=n.createBuffer();n.enableVertexAttribArray(o.position),n.bindBuffer(n.ARRAY_BUFFER,f),n.vertexAttribPointer(o.position,2,n.FLOAT,!1,0,0),n.bufferData(n.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),n.STATIC_DRAW);let m=n.createBuffer();n.bindBuffer(n.ARRAY_BUFFER,m),n.bufferData(n.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),n.STATIC_DRAW),n.enableVertexAttribArray(o.texCoord),n.vertexAttribPointer(o.texCoord,2,n.FLOAT,!1,0,0);let p=ve(n,e,r,!1,i,u),w=ae(n,p),A=ve(n,e,r,!1,i,u),v=ae(n,A),C=t.width/e;return{render:(k,T)=>{I(!n.isContextLost(),O.ContextLost),n.clearColor(0,0,0,0),n.clear(n.COLOR_BUFFER_BIT),n.useProgram(s),n.bindVertexArray(c),n.uniform2f(a.texelSize,1/k.width,1/k.height),n.uniform1i(a.radiusPx,dp(Math.floor(T/C)));let S=K.projection(1,1,1);n.uniformMatrix3fv(a.matrix,!1,S);let F=w,B=k.texture;for(let z=0;z<2;z++)n.activeTexture(n.TEXTURE0),n.uniform1i(a.mask,0),n.bindTexture(n.TEXTURE_2D,B),n.uniform2f(a.direction,1-z,0+z),n.bindFramebuffer(n.FRAMEBUFFER,F),n.viewport(0,0,k.width,k.height),n.drawArrays(n.TRIANGLES,0,6),[B,F]=F===w?[p,v]:[A,w];return n.bindBuffer(n.ARRAY_BUFFER,null),n.bindFramebuffer(n.FRAMEBUFFER,null),n.bindTexture(n.TEXTURE_2D,null),n.bindVertexArray(null),{texture:B,width:e,height:r}},release:()=>{n.deleteBuffer(f),n.deleteBuffer(m),n.deleteTexture(p),n.deleteTexture(A),n.deleteFramebuffer(w),n.deleteFramebuffer(v),n.deleteVertexArray(c),l()}}};var No=(t,e)=>{let{gl:r,program:n,attribLocations:s,uniformLocations:o,floatFullChannelSupported:a,floatSingleChannelSupported:i,release:u}=he(t,{attribs:{position:"a_position",texCoord:"a_texCoord"},uniforms:{matrix:"u_matrix",texture:"u_texture"},vertexSrc:de,fragmentSrc:En}),l=r.createVertexArray();r.bindVertexArray(l);let c=r.createBuffer();r.enableVertexAttribArray(s.position),r.bindBuffer(r.ARRAY_BUFFER,c),r.vertexAttribPointer(s.position,2,r.FLOAT,!1,0,0),r.bufferData(r.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),r.STATIC_DRAW);let f=r.createBuffer();r.bindBuffer(r.ARRAY_BUFFER,f),r.bufferData(r.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),r.STATIC_DRAW),r.enableVertexAttribArray(s.texCoord),r.vertexAttribPointer(s.texCoord,2,r.FLOAT,!1,0,0);let m=Gt(r,t.width,t.height,!0,a),p=e?ve(r,t.width,t.height,!1,i,a):Gt(r,t.width,t.height,!0,a),w=ae(r,p);return{render:A=>{I(!r.isContextLost(),O.ContextLost),r.bindFramebuffer(r.FRAMEBUFFER,w),r.viewport(0,0,t.width,t.height),r.clearColor(0,0,0,1),r.clear(r.COLOR_BUFFER_BIT),r.useProgram(n),r.bindVertexArray(l),r.uniform1i(o.texture,0);let v=K.projection(1,1,1);return r.uniformMatrix3fv(o.matrix,!1,v),r.activeTexture(r.TEXTURE0),r.bindTexture(r.TEXTURE_2D,m),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,r.RGBA,r.UNSIGNED_BYTE,A),r.drawArrays(r.TRIANGLES,0,6),r.bindBuffer(r.ARRAY_BUFFER,null),r.bindFramebuffer(r.FRAMEBUFFER,null),r.bindTexture(r.TEXTURE_2D,null),r.bindVertexArray(null),{texture:p,width:t.width,height:t.height}},release:()=>{r.deleteBuffer(c),r.deleteBuffer(f),r.deleteTexture(m),r.deleteTexture(p),r.deleteVertexArray(l),u()}}};var Mh=(t,e=new OffscreenCanvas(hn,fn))=>{let r=Math.trunc(e.width/2),n=Math.trunc(e.height/2),s=Math.trunc(e.width/4),o=Math.trunc(e.height/4),a=32,i=18,u={backgroundImageRenderer:()=>No(e,!1),blendRenderer:()=>Eh(e),blurRenderer:()=>Oo(e,3),canvasRenderer:()=>Do(e),frameDownsampler2:()=>Ct(e,!1,!0,r,n),frameDownsampler4:()=>Ct(e,!1,!0,s,o),geodesicReconstructionRenderer2:()=>gu(e,r,n),geodesicReconstructionRenderer4:()=>gu(e,s,o),jointBilateralFilterRenderer2:()=>Mo(e,r,n),jointBilateralFilterRenderer4:()=>Mo(e,s,o),jointBilateralFilterRenderer:()=>Mo(e,e.width,e.height),lightWrapBlurRenderer:()=>Oo(e,3),maskBlurRenderer:()=>Dh(e,e.width,e.height),strongMaskBlurRenderer:()=>Oo(e,qn),maskDownsampler2:()=>Ct(e,!0,!1,r,n),maskDownsampler4:()=>Ct(e,!0,!1,s,o),maskRenderer:()=>No(e,!0),maskUpsampler2:()=>Ct(e,!0,!1,r,n),maskUpsampler4:()=>Ct(e,!0,!1,s,o),maskUpsampler:()=>Ct(e,!0,!1,e.width,e.height),morphErodeRenderer:()=>xu(e,r,n),morphErodeRenderer4:()=>xu(e,s,o),prevMaskRenderer2:()=>Ct(e,!0,!1,r,n),prevMaskRenderer4:()=>Ct(e,!0,!1,s,o),replaceRenderer:()=>Lh(e),selectCenterComponent:()=>Rh(e,a,i),smoothingMaskRenderer4:()=>yu(e,s,o),smoothingMaskRenderer2:()=>yu(e,r,n),binaryMaskRenderer2:()=>pu(e,r,n),binaryMaskRenderer4:()=>pu(e,s,o),videoFrameRenderer:()=>No(e,!1),release:v=>()=>{for(let C in v)C!=="release"&&v[C]?.release()}},l=dn(u),c={canvas:e,gl:null,canvasContextEventsCleanup:()=>{},get videoFrameRenderer(){return l.videoFrameRenderer},get jointBilateralFilterRenderer(){return l.jointBilateralFilterRenderer},get jointBilateralFilterRenderer2(){return l.jointBilateralFilterRenderer2},get jointBilateralFilterRenderer4(){return l.jointBilateralFilterRenderer4},get maskRenderer(){return l.maskRenderer},get canvasRenderer(){return l.canvasRenderer},get backgroundImageRenderer(){return l.backgroundImageRenderer},get blendRenderer(){return l.blendRenderer},get replaceRenderer(){return l.replaceRenderer},get blurRenderer(){return l.blurRenderer},get lightWrapBlurRenderer(){return l.lightWrapBlurRenderer},get prevMaskRenderer2(){return l.prevMaskRenderer2},get prevMaskRenderer4(){return l.prevMaskRenderer4},get selectCenterComponent(){return l.selectCenterComponent},get smoothingMaskRenderer2(){return l.smoothingMaskRenderer2},get smoothingMaskRenderer4(){return l.smoothingMaskRenderer4},get binaryMaskRenderer2(){return l.binaryMaskRenderer2},get binaryMaskRenderer4(){return l.binaryMaskRenderer4},get morphErodeRenderer(){return l.morphErodeRenderer},get morphErodeRenderer4(){return l.morphErodeRenderer4},get maskBlurRenderer(){return l.maskBlurRenderer},get strongMaskBlurRenderer(){return l.strongMaskBlurRenderer},get maskDownsampler2(){return l.maskDownsampler2},get maskDownsampler4(){return l.maskDownsampler4},get maskUpsampler(){return l.maskUpsampler},get maskUpsampler2(){return l.maskUpsampler2},get maskUpsampler4(){return l.maskUpsampler4},get frameDownsampler2(){return l.frameDownsampler2},get frameDownsampler4(){return l.frameDownsampler4},get geodesicReconstructionRenderer2(){return l.geodesicReconstructionRenderer2},get geodesicReconstructionRenderer4(){return l.geodesicReconstructionRenderer4}},f=()=>{c.canvasContextEventsCleanup=Wf(e,{contextLost:t.contextLost,contextRestored:t.contextRestored,contextCreationError:t.contextCreationError},p),c.gl=e.getContext("webgl2",{premultipliedAlpha:!1,powerPreference:"high-performance"}),I(c.gl,O.ContextCreationError)},m=(v,C,k)=>{I(!c.gl?.isContextLost(),O.ContextLost);let T=c.videoFrameRenderer.render(C),S=c.maskRenderer.render(v),F,B;switch(k.downSampleFactor){case 4:{let N=c.maskDownsampler4.render(S),U=c.frameDownsampler4.render(T),V=c.jointBilateralFilterRenderer4.render({input:N,guide:U},k);if(F=c.smoothingMaskRenderer4.render({mask:V,prevMask:c.prevMask4??V},k),k.excludeBystanders){let te=c.binaryMaskRenderer4.render(F,k.foregroundThreshold),ue=c.morphErodeRenderer4.render({mask:te},k),me=c.selectCenterComponent.render(ue,k),pe=c.maskUpsampler4.render(me);F=c.geodesicReconstructionRenderer4.render({mask:pe,maskRef:F},k)}let P=c.maskUpsampler.render(F);B=c.strongMaskBlurRenderer.render(P,qn);break}default:{let N=c.maskDownsampler2.render(S),U=c.frameDownsampler2.render(T),V=c.jointBilateralFilterRenderer2.render({input:N,guide:U},k);if(F=c.smoothingMaskRenderer2.render({mask:V,prevMask:c.prevMask2??V},k),k.excludeBystanders){let te=c.binaryMaskRenderer2.render(F,k.foregroundThreshold),ue=c.morphErodeRenderer.render({mask:te},k),me=c.selectCenterComponent.render(ue,k),pe=c.maskUpsampler2.render(me);F=c.geodesicReconstructionRenderer2.render({mask:pe,maskRef:F},k)}let P=c.maskUpsampler.render(F);B=c.maskBlurRenderer.render(P,k.edgeBlurAmount);break}}let z=T;if(k.effects==="blur"&&k.backgroundBlurAmount){let N=c.blurRenderer.render(T,k.backgroundBlurAmount);z=c.blendRenderer.render({mask:B,foreground:T,background:N},k)}else if(k?.effects==="overlay"&&k.backgroundImage){let N=c.backgroundImageRenderer.render(k.backgroundImage);z=c.replaceRenderer.render({mask:B,foreground:T,background:N,blurredBackground:c.lightWrapBlurRenderer.render(N,k.lightWrapBlurAmount),timestamp:C.timestamp},k)}switch(c.canvasRenderer.render(z),k.downSampleFactor){case 4:c.prevMask4=c.prevMaskRenderer4.render(F);break;default:c.prevMask2=c.prevMaskRenderer2.render(F);break}},p=()=>{c.canvasContextEventsCleanup(),l.release(),l=dn(u),c.prevMask2=void 0,c.prevMask4=void 0};return{init:f,render:m,release:()=>{p()},isContextLost:()=>!!c.gl?.isContextLost()}};var os=(t,e)=>new OffscreenCanvas(t,e);var Nh=t=>typeof t=="string"?Object.values(Gf).includes(t):!1;var E={width:hn,height:fn,status:Se.New,stats:[],delegate:"GPU",modelAssetPath:"",muted:!1,renderOptions:{edgeBlurAmount:4,backgroundBlurAmount:3,backgroundThreshold:.35,foregroundThreshold:.85,maskCombineRatio:.8,effects:Nf.None,sigmaRangeHi:Ii[1],sigmaRangeLo:Ii[0],sigmaSpace:Mf,backgroundImageUrl:"",backgroundImage:null,backend:"webgl",personCenter:Df,excludeBystanders:!1,morphPass:4,morphErodeRadiusPx:5,morphDilateRadiusPx:6,lightWrapIntensity:.8,lightWrapTightness:1,downSampleFactor:2,lightWrapBlurAmount:1,lightWrapEdgeBand:.25}},wu=oo(E.renderOptions),Tu=()=>{E.trackEventsSubscription?.(),E.originalTrack?.stop()},et=(t,e)=>postMessage(t,e??[]),Rp=t=>{if(E.status!==Se.Error){E.status=Se.Error;try{E.segmenter?.close()}catch(e){et({type:"event",data:{type:O.ContextLost,message:`Failed to close segmenter ${e}`}})}E.segmenter=void 0}et({type:"event",data:{type:O.ContextLost,message:t}})},Ip=t=>{et({type:"event",data:{type:O.ContextRestored,message:t}})},Sp=t=>{E.status!==Se.Error&&(E.status=Se.Error),et({type:"event",data:{type:O.ContextCreationError,message:t}})},Cp=async()=>{E.renderer?.release(),E.renderer=void 0;let t=[{contextLost:Rp,contextRestored:Ip,contextCreationError:Sp},E.processCanvas],e=()=>Mh(...t);if(navigator.gpu&&E.renderOptions?.backend==="webgpu"){let n=await navigator.gpu.requestAdapter({powerPreference:"high-performance"});n?E.renderer=ph(n,...t):(E.renderer=e(),E.renderOptions.backend="webgl")}else E.renderer=e(),E.renderOptions.backend="webgl";await E.renderer?.init()},Fp=async()=>{I(E.visionInstance),E.segmenter?.close(),E.segmenter=await ze.createFromOptions(E.visionInstance,{outputCategoryMask:!1,outputConfidenceMasks:!0,runningMode:"VIDEO",canvas:E.segmenterCanvas,baseOptions:{modelAssetPath:E.modelAssetPath,delegate:E.delegate}})},Vh=async t=>{E.segmenterTextureToCanvas?.release(),E.segmenterCanvas=t,E.segmenterTextureToCanvas=Do(E.segmenterCanvas),await Fp()},Wh=async t=>{E.processCanvas=t,await Cp()},_u=()=>{E.muted=!0,E.originalTrack&&(E.originalTrack.enabled=!1)},bu=()=>{E.muted=!1,E.originalTrack&&(E.originalTrack.enabled=!0)},Bp=t=>(t.addEventListener("mute",_u),t.addEventListener("unmute",bu),t.addEventListener("ended",vu),()=>{t.removeEventListener("mute",_u),t.removeEventListener("unmute",bu),t.removeEventListener("ended",vu)}),$h=t=>{let e={},{backgroundImage:r,...n}=E.renderOptions,s=Pf(t,n);for(let[o,a]of Object.entries(s.changed))e[o]=a.new;return e},Up=async(t={})=>{try{E.status=Se.Opening,t.processingWidth&&(E.width=t.processingWidth),t.processingHeight&&(E.height=t.processingHeight),t.renderOptions&&wu(t.renderOptions);let{basePath:e,imageSegmenterOptions:r={}}=t;if(E.modelAssetPath=r.modelAsset?.path??E.modelAssetPath,E.delegate=r.delegate??E.delegate,E.visionInstance=await lr.forVisionTasks(e),E.backgroundImages?.clear(),E.backgroundImages=Vf(t.backgroundImage&&[[t.backgroundImage.key,t.backgroundImage.image]]),t.renderOptions?.backgroundImageUrl&&t.backgroundImage?.key!==t.renderOptions.backgroundImageUrl){let s=await ku(t.renderOptions.backgroundImageUrl);s&&(E.renderOptions.backgroundImage=s)}await Wh(os(E.width,E.height)),await Vh(os(E.width,E.height)),E.status=Se.Opened;let n={};t.renderOptions&&(n=$h(t.renderOptions)),et({type:"opened",data:n})}catch(e){E.status=Se.Error;let r=so(e);et({type:"event",data:{type:no(r),message:r}})}},Lp=Math.trunc(30*.8),Gh=t=>{E.stats.push(t),E.stats.length>=Lp&&(Dp(),E.stats.length=0)},Pp={async transform(t,e){let r=performance.now();if(E.renderOptions.effects==="none"||E.muted){Gh({start:r,end:r}),e.enqueue(t);return}I(E.segmenter);let n=E.segmenter.segmentForVideo(t,r),s=performance.now(),o=n.confidenceMasks?.[0];if(o){I(E.renderer),I(E.processCanvas),I(E.segmenterCanvas),I(E.segmenterTextureToCanvas),E.segmenterTextureToCanvas.render(wh(o)),E.renderer.render(E.segmenterCanvas,t,E.renderOptions);let a=new VideoFrame(E.processCanvas,{timestamp:t.timestamp});e.enqueue(a),t.close()}else e.enqueue(t);n.close(),Gh({start:r,segmentation:s,end:performance.now()})}},zh=(t,e,r)=>t.pipeThrough(new TransformStream(Pp),{signal:r}).pipeTo(e),Op=async(t,e)=>{try{let r=new VideoTrackGenerator;et({type:"processed",data:r.track},[r.track]);let{readable:n}=new MediaStreamTrackProcessor({track:t});await zh(n,r.writable,e)}catch(r){if(Tu(),e&&!(e.aborted&&(e.reason==="close"||!("reason"in AbortSignal.prototype))))throw r}},ku=t=>(E.imageFetcherAbortController?.abort("close"),E.imageFetcherAbortController=new AbortController,E.backgroundImages?.tryFetchingImage(t,E.imageFetcherAbortController.signal)),Dp=()=>{E.stats.length&&(et({type:"stats",data:E.stats}),E.stats.length=0)},Mp=async(t,e,r,n)=>{try{if(I(E.segmenter),I(t||e&&r),n&&wu(n),I(!E.renderer?.isContextLost(),O.ContextLost),E.renderOptions?.effects==="overlay"&&E.renderOptions.backgroundImageUrl){let s=E.backgroundImages?.getImage(E.renderOptions.backgroundImageUrl);if(s)E.renderOptions.backgroundImage=s;else{let o=await ku(E.renderOptions.backgroundImageUrl);o&&(E.renderOptions.backgroundImage=o)}}E.status=Se.Processing,E.processingAbortController=new AbortController,E.stats.length=0,t?(Tu(),E.originalTrack=t,E.muted=!t.enabled,E.trackEventsSubscription=Bp(t),await Op(t,E.processingAbortController.signal)):(I(e&&r),et({type:"processed"}),await zh(e,r,E.processingAbortController.signal))}catch(s){let o=so(s);if(o==="close")return;E.status=Se.Error,et({type:"event",data:{type:no(o),message:o,track:t}},t?[t]:[])}},Np=async({backgroundImage:t,renderOptions:e,imageSegmenterOptions:r,processingHeight:n,processingWidth:s,restart:o})=>{if(E.status!==Se.Updating)try{if(E.status=Se.Updating,t&&E.backgroundImages?.setImage(t.key,t.image),e?.backgroundImageUrl){let l=await ku(e.backgroundImageUrl);l&&(E.renderOptions.backgroundImage=l)}let a=o;if(n&&n!==E.height&&(E.height=n,a=!0),s&&s!==E.width&&(E.width=s,a=!0),e?.backend&&!Nh(e.backend)){E.status=Se.Error,et({type:"event",data:{type:"Error",message:"Render backend is not webgl or webgpu"}});return}e?.effects&&e.effects!==E.renderOptions.effects&&(E.stats.length=0);let i=e?.backend&&e?.backend!==E.renderOptions.backend;e&&wu(e),r&&(E.modelAssetPath=r.modelAsset?.path??E.modelAssetPath,E.delegate=r.delegate??E.delegate),(a||i)&&await Wh(os(E.width,E.height)),a&&await Vh(os(E.width,E.height)),E.status=Se.Updated;let u={};e&&(u=$h(e)),et({type:"updated",data:u}),a&&et({type:"event",data:{type:O.ProcessorRestarted}})}catch(a){E.status=Se.Error;let i=so(a);et({type:"event",data:{type:no(i),message:i}})}},Gp=()=>{E.status=Se.Idle,Tu(),E.processingAbortController?.abort("close"),E.imageFetcherAbortController?.abort("close")},vu=()=>{E.status=Se.Closing,Gp(),E.stats.length=0,E.status=Se.Closed};self.addEventListener("message",t=>{switch(t.data.type){case"open":{Up(t.data.data);break}case"update":{Np(t.data.data);break}case"process":{let{track:e,readable:r,writable:n,renderOptions:s}=t.data.data;Mp(e,r,n,s);break}case"close":{vu();break}case"mute":{t.data.data?_u():bu();break}case"destroy":{E.status=Se.Destroying,E.renderer?.release(),E.segmenterTextureToCanvas?.release(),E.segmenter?.close(),E.backgroundImages?.clear(),E.originalTrack=void 0,E.renderer=void 0,E.segmenter=void 0,E.backgroundImages=void 0,E.trackEventsSubscription=void 0,E.status=Se.Destroyed;break}}});self.addEventListener("error",t=>{t.preventDefault(),et({type:"event",data:{type:O.Error,message:`Uncaught Error event: ${t.error}`}})});
74
+ uniform sampler2D u_mask;uniform sampler2D u_mask_prev;uniform float u_mask_combine_ratio;in vec2 v_texCoord;out vec4 outColor;float maskUncertainty(float p){const float c1=5.68842;const float c2=-0.748699;const float c3=-57.8051;const float c4=291.309;const float c5=-624.717;float t=p-0.5;float x=t*t;float uncertainty=1.0-min(1.0,x*(c1+x*(c2+x*(c3+x*(c4+x*c5)))));return uncertainty;}void main(){float current_mask=texture(u_mask,v_texCoord).r;float prev_mask=texture(u_mask_prev,v_texCoord).r;float uncertainty=maskUncertainty(current_mask);float alpha=uncertainty*u_mask_combine_ratio;float stabilized=current_mask+(prev_mask-current_mask)*alpha;outColor=vec4(stabilized,stabilized,stabilized,1.0);}`;var _u=(t,e,r)=>{let{gl:n,program:s,attribLocations:o,uniformLocations:a,floatFullChannelSupported:i,floatSingleChannelSupported:u,release:l}=he(t,{attribs:{position:"a_position",texCoord:"a_texCoord"},uniforms:{matrix:"u_matrix",mask:"u_mask",prevMask:"u_mask_prev",frame:"u_frame",prevFrame:"u_frame_prev",maskCombineRatio:"u_mask_combine_ratio"},vertexSrc:de,fragmentSrc:Oh}),c=n.createVertexArray();n.bindVertexArray(c);let f=n.createBuffer();n.enableVertexAttribArray(o.position),n.bindBuffer(n.ARRAY_BUFFER,f),n.vertexAttribPointer(o.position,2,n.FLOAT,!1,0,0),n.bufferData(n.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),n.STATIC_DRAW);let d=n.createBuffer();n.bindBuffer(n.ARRAY_BUFFER,d),n.bufferData(n.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),n.STATIC_DRAW),n.enableVertexAttribArray(o.texCoord),n.vertexAttribPointer(o.texCoord,2,n.FLOAT,!1,0,0);let p=ve(n,e,r,!1,u,i),v=ae(n,p);return{render:({mask:A,prevMask:w},S)=>{F(!n.isContextLost(),O.ContextLost),n.bindFramebuffer(n.FRAMEBUFFER,v),n.viewport(0,0,A.width,A.height),n.clearColor(0,0,0,0),n.clear(n.COLOR_BUFFER_BIT),n.useProgram(s),n.bindVertexArray(c),n.activeTexture(n.TEXTURE0),n.uniform1i(a.mask,0),n.bindTexture(n.TEXTURE_2D,A.texture),n.activeTexture(n.TEXTURE1),n.uniform1i(a.prevMask,1),n.bindTexture(n.TEXTURE_2D,w.texture);let k=K.projection(1,1,1);return n.uniformMatrix3fv(a.matrix,!1,k),n.uniform1f(a.maskCombineRatio,S.maskCombineRatio),n.drawArrays(n.TRIANGLES,0,6),n.bindBuffer(n.ARRAY_BUFFER,null),n.bindFramebuffer(n.FRAMEBUFFER,null),n.bindTexture(n.TEXTURE_2D,null),n.bindVertexArray(null),{texture:p,width:e,height:r}},release:()=>{n.deleteBuffer(f),n.deleteBuffer(d),n.deleteTexture(p),n.deleteFramebuffer(v),n.deleteVertexArray(c),l()}}};var Dh=`#version 300 es
75
+ precision mediump float;uniform sampler2D u_mask;uniform vec2 u_texel_size;uniform vec2 u_direction;uniform int u_radius_px;const int MAX_RADIUS_PX=16;in vec2 v_texCoord;out vec4 outColor;void main(){int R=clamp(u_radius_px,0,MAX_RADIUS_PX);if(R==0){float m=texture(u_mask,v_texCoord).r;outColor=vec4(m,m,m,1.0);return;}float sumW=0.0;float acc=0.0;for(int i=-MAX_RADIUS_PX;i<=MAX_RADIUS_PX;++i){if(abs(i)>R)continue;float w=float(R+1-abs(i));vec2 off=u_direction*float(i)*u_texel_size;float s=texture(u_mask,v_texCoord+off).r;acc+=w*s;sumW+=w;}float m=acc/max(sumW,1.0e-6);outColor=vec4(m,m,m,1.0);}`;var mp=16,pp=At(0,mp),Mh=(t,e,r)=>{let{gl:n,program:s,attribLocations:o,uniformLocations:a,floatSingleChannelSupported:i,floatFullChannelSupported:u,release:l}=he(t,{attribs:{position:"a_position",texCoord:"a_texCoord"},uniforms:{matrix:"u_matrix",mask:"u_mask",texelSize:"u_texel_size",direction:"u_direction",radiusPx:"u_radius_px"},vertexSrc:de,fragmentSrc:Dh}),c=n.createVertexArray();n.bindVertexArray(c);let f=n.createBuffer();n.enableVertexAttribArray(o.position),n.bindBuffer(n.ARRAY_BUFFER,f),n.vertexAttribPointer(o.position,2,n.FLOAT,!1,0,0),n.bufferData(n.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),n.STATIC_DRAW);let d=n.createBuffer();n.bindBuffer(n.ARRAY_BUFFER,d),n.bufferData(n.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),n.STATIC_DRAW),n.enableVertexAttribArray(o.texCoord),n.vertexAttribPointer(o.texCoord,2,n.FLOAT,!1,0,0);let p=ve(n,e,r,!1,i,u),v=ae(n,p),A=ve(n,e,r,!1,i,u),w=ae(n,A),S=t.width/e;return{render:(k,E)=>{F(!n.isContextLost(),O.ContextLost),n.clearColor(0,0,0,0),n.clear(n.COLOR_BUFFER_BIT),n.useProgram(s),n.bindVertexArray(c),n.uniform2f(a.texelSize,1/k.width,1/k.height),n.uniform1i(a.radiusPx,pp(Math.floor(E/S)));let I=K.projection(1,1,1);n.uniformMatrix3fv(a.matrix,!1,I);let C=v,B=k.texture;for(let z=0;z<2;z++)n.activeTexture(n.TEXTURE0),n.uniform1i(a.mask,0),n.bindTexture(n.TEXTURE_2D,B),n.uniform2f(a.direction,1-z,0+z),n.bindFramebuffer(n.FRAMEBUFFER,C),n.viewport(0,0,k.width,k.height),n.drawArrays(n.TRIANGLES,0,6),[B,C]=C===v?[p,w]:[A,v];return n.bindBuffer(n.ARRAY_BUFFER,null),n.bindFramebuffer(n.FRAMEBUFFER,null),n.bindTexture(n.TEXTURE_2D,null),n.bindVertexArray(null),{texture:B,width:e,height:r}},release:()=>{n.deleteBuffer(f),n.deleteBuffer(d),n.deleteTexture(p),n.deleteTexture(A),n.deleteFramebuffer(v),n.deleteFramebuffer(w),n.deleteVertexArray(c),l()}}};var Wo=(t,e)=>{let{gl:r,program:n,attribLocations:s,uniformLocations:o,floatFullChannelSupported:a,floatSingleChannelSupported:i,release:u}=he(t,{attribs:{position:"a_position",texCoord:"a_texCoord"},uniforms:{matrix:"u_matrix",texture:"u_texture"},vertexSrc:de,fragmentSrc:En}),l=r.createVertexArray();r.bindVertexArray(l);let c=r.createBuffer();r.enableVertexAttribArray(s.position),r.bindBuffer(r.ARRAY_BUFFER,c),r.vertexAttribPointer(s.position,2,r.FLOAT,!1,0,0),r.bufferData(r.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),r.STATIC_DRAW);let f=r.createBuffer();r.bindBuffer(r.ARRAY_BUFFER,f),r.bufferData(r.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),r.STATIC_DRAW),r.enableVertexAttribArray(s.texCoord),r.vertexAttribPointer(s.texCoord,2,r.FLOAT,!1,0,0);let d=Vt(r,t.width,t.height,!0,a),p=e?ve(r,t.width,t.height,!1,i,a):Vt(r,t.width,t.height,!0,a),v=ae(r,p);return{render:A=>{F(!r.isContextLost(),O.ContextLost),r.bindFramebuffer(r.FRAMEBUFFER,v),r.viewport(0,0,t.width,t.height),r.clearColor(0,0,0,1),r.clear(r.COLOR_BUFFER_BIT),r.useProgram(n),r.bindVertexArray(l),r.uniform1i(o.texture,0);let w=K.projection(1,1,1);return r.uniformMatrix3fv(o.matrix,!1,w),r.activeTexture(r.TEXTURE0),r.bindTexture(r.TEXTURE_2D,d),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,r.RGBA,r.UNSIGNED_BYTE,A),r.drawArrays(r.TRIANGLES,0,6),r.bindBuffer(r.ARRAY_BUFFER,null),r.bindFramebuffer(r.FRAMEBUFFER,null),r.bindTexture(r.TEXTURE_2D,null),r.bindVertexArray(null),{texture:p,width:t.width,height:t.height}},release:()=>{r.deleteBuffer(c),r.deleteBuffer(f),r.deleteTexture(d),r.deleteTexture(p),r.deleteVertexArray(l),u()}}};var Nh=(t,e=new OffscreenCanvas(pn,mn))=>{let r=Math.trunc(e.width/2),n=Math.trunc(e.height/2),s=Math.trunc(e.width/4),o=Math.trunc(e.height/4),a=32,i=18,u={backgroundImageRenderer:()=>Wo(e,!1),blendRenderer:()=>Ah(e),blurRenderer:()=>No(e,3),canvasRenderer:()=>Go(e),frameDownsampler2:()=>Ct(e,!1,!0,r,n),frameDownsampler4:()=>Ct(e,!1,!0,s,o),geodesicReconstructionRenderer2:()=>xu(e,r,n),geodesicReconstructionRenderer4:()=>xu(e,s,o),jointBilateralFilterRenderer2:()=>Vo(e,r,n),jointBilateralFilterRenderer4:()=>Vo(e,s,o),jointBilateralFilterRenderer:()=>Vo(e,e.width,e.height),lightWrapBlurRenderer:()=>No(e,3),maskBlurRenderer:()=>Mh(e,e.width,e.height),strongMaskBlurRenderer:()=>No(e,qn),maskDownsampler2:()=>Ct(e,!0,!1,r,n),maskDownsampler4:()=>Ct(e,!0,!1,s,o),maskRenderer:()=>Wo(e,!0),maskUpsampler2:()=>Ct(e,!0,!1,r,n),maskUpsampler4:()=>Ct(e,!0,!1,s,o),maskUpsampler:()=>Ct(e,!0,!1,e.width,e.height),morphErodeRenderer:()=>yu(e,r,n),morphErodeRenderer4:()=>yu(e,s,o),prevMaskRenderer2:()=>Ct(e,!0,!1,r,n),prevMaskRenderer4:()=>Ct(e,!0,!1,s,o),replaceRenderer:()=>Ph(e),selectCenterComponent:()=>Ih(e,a,i),smoothingMaskRenderer4:()=>_u(e,s,o),smoothingMaskRenderer2:()=>_u(e,r,n),binaryMaskRenderer2:()=>gu(e,r,n),binaryMaskRenderer4:()=>gu(e,s,o),videoFrameRenderer:()=>Wo(e,!1),release:w=>()=>{for(let S in w)S!=="release"&&w[S]?.release()}},l=gn(u),c={canvas:e,gl:null,canvasContextEventsCleanup:()=>{},get videoFrameRenderer(){return l.videoFrameRenderer},get jointBilateralFilterRenderer(){return l.jointBilateralFilterRenderer},get jointBilateralFilterRenderer2(){return l.jointBilateralFilterRenderer2},get jointBilateralFilterRenderer4(){return l.jointBilateralFilterRenderer4},get maskRenderer(){return l.maskRenderer},get canvasRenderer(){return l.canvasRenderer},get backgroundImageRenderer(){return l.backgroundImageRenderer},get blendRenderer(){return l.blendRenderer},get replaceRenderer(){return l.replaceRenderer},get blurRenderer(){return l.blurRenderer},get lightWrapBlurRenderer(){return l.lightWrapBlurRenderer},get prevMaskRenderer2(){return l.prevMaskRenderer2},get prevMaskRenderer4(){return l.prevMaskRenderer4},get selectCenterComponent(){return l.selectCenterComponent},get smoothingMaskRenderer2(){return l.smoothingMaskRenderer2},get smoothingMaskRenderer4(){return l.smoothingMaskRenderer4},get binaryMaskRenderer2(){return l.binaryMaskRenderer2},get binaryMaskRenderer4(){return l.binaryMaskRenderer4},get morphErodeRenderer(){return l.morphErodeRenderer},get morphErodeRenderer4(){return l.morphErodeRenderer4},get maskBlurRenderer(){return l.maskBlurRenderer},get strongMaskBlurRenderer(){return l.strongMaskBlurRenderer},get maskDownsampler2(){return l.maskDownsampler2},get maskDownsampler4(){return l.maskDownsampler4},get maskUpsampler(){return l.maskUpsampler},get maskUpsampler2(){return l.maskUpsampler2},get maskUpsampler4(){return l.maskUpsampler4},get frameDownsampler2(){return l.frameDownsampler2},get frameDownsampler4(){return l.frameDownsampler4},get geodesicReconstructionRenderer2(){return l.geodesicReconstructionRenderer2},get geodesicReconstructionRenderer4(){return l.geodesicReconstructionRenderer4}},f=()=>{c.canvasContextEventsCleanup=$f(e,{contextLost:t.contextLost,contextRestored:t.contextRestored,contextCreationError:t.contextCreationError},p),c.gl=e.getContext("webgl2",{premultipliedAlpha:!1,powerPreference:"high-performance"}),F(c.gl,O.ContextCreationError)},d=(w,S,k)=>{F(!c.gl?.isContextLost(),O.ContextLost);let E=c.videoFrameRenderer.render(S),I=c.maskRenderer.render(w),C,B;switch(k.downSampleFactor){case 4:{let N=c.maskDownsampler4.render(I),U=c.frameDownsampler4.render(E),V=c.jointBilateralFilterRenderer4.render({input:N,guide:U},k);if(C=c.smoothingMaskRenderer4.render({mask:V,prevMask:c.prevMask4??V},k),k.excludeBystanders){let te=c.binaryMaskRenderer4.render(C,k.foregroundThreshold),ue=c.morphErodeRenderer4.render({mask:te},k),me=c.selectCenterComponent.render(ue,k),pe=c.maskUpsampler4.render(me);C=c.geodesicReconstructionRenderer4.render({mask:pe,maskRef:C},k)}let P=c.maskUpsampler.render(C);B=c.strongMaskBlurRenderer.render(P,qn);break}default:{let N=c.maskDownsampler2.render(I),U=c.frameDownsampler2.render(E),V=c.jointBilateralFilterRenderer2.render({input:N,guide:U},k);if(C=c.smoothingMaskRenderer2.render({mask:V,prevMask:c.prevMask2??V},k),k.excludeBystanders){let te=c.binaryMaskRenderer2.render(C,k.foregroundThreshold),ue=c.morphErodeRenderer.render({mask:te},k),me=c.selectCenterComponent.render(ue,k),pe=c.maskUpsampler2.render(me);C=c.geodesicReconstructionRenderer2.render({mask:pe,maskRef:C},k)}let P=c.maskUpsampler.render(C);B=c.maskBlurRenderer.render(P,k.edgeBlurAmount);break}}let z=E;if(k.effects==="blur"&&k.backgroundBlurAmount){let N=c.blurRenderer.render(E,k.backgroundBlurAmount);z=c.blendRenderer.render({mask:B,foreground:E,background:N},k)}else if(k?.effects==="overlay"&&k.backgroundImage){let N=c.backgroundImageRenderer.render(k.backgroundImage);z=c.replaceRenderer.render({mask:B,foreground:E,background:N,blurredBackground:c.lightWrapBlurRenderer.render(N,k.lightWrapBlurAmount),timestamp:S.timestamp},k)}switch(c.canvasRenderer.render(z),k.downSampleFactor){case 4:c.prevMask4=c.prevMaskRenderer4.render(C);break;default:c.prevMask2=c.prevMaskRenderer2.render(C);break}},p=()=>{c.canvasContextEventsCleanup(),l.release(),l=gn(u),c.prevMask2=void 0,c.prevMask4=void 0};return{init:f,render:d,release:()=>{p()},isContextLost:()=>!!c.gl?.isContextLost()}};var os=(t,e)=>new OffscreenCanvas(t,e);var Gh=t=>typeof t=="string"?Object.values(Vf).includes(t):!1;var T={width:pn,height:mn,status:Ee.New,stats:[],delegate:"GPU",modelAssetPath:"",muted:!1,renderOptions:{edgeBlurAmount:4,backgroundBlurAmount:3,backgroundThreshold:.35,foregroundThreshold:.85,maskCombineRatio:.8,effects:Gf.None,sigmaRangeHi:Ci[1],sigmaRangeLo:Ci[0],sigmaSpace:Nf,backgroundImageUrl:"",backgroundImage:null,backend:"webgl",personCenter:Mf,excludeBystanders:!1,morphPass:4,morphErodeRadiusPx:5,morphDilateRadiusPx:6,lightWrapIntensity:.8,lightWrapTightness:1,downSampleFactor:2,lightWrapBlurAmount:1,lightWrapEdgeBand:.25}},Tu=oo(T.renderOptions),ku=()=>{T.trackEventsSubscription?.(),T.originalTrack?.stop()},$e=(t,e)=>postMessage(t,e??[]),Sp=t=>{if(T.status!==Ee.Error){T.status=Ee.Error;try{T.segmenter?.close()}catch(e){$e({type:"event",data:{type:O.ContextLost,message:`Failed to close segmenter ${e}`}})}T.segmenter=void 0}$e({type:"event",data:{type:O.ContextLost,message:t}})},Fp=t=>{$e({type:"event",data:{type:O.ContextRestored,message:t}})},Cp=t=>{T.status!==Ee.Error&&(T.status=Ee.Error),$e({type:"event",data:{type:O.ContextCreationError,message:t}})},Bp=async()=>{T.renderer?.release(),T.renderer=void 0;let t=[{contextLost:Sp,contextRestored:Fp,contextCreationError:Cp},T.processCanvas],e=()=>Nh(...t);if(navigator.gpu&&T.renderOptions?.backend==="webgpu"){let n=await navigator.gpu.requestAdapter({powerPreference:"high-performance"});n?T.renderer=gh(n,...t):(T.renderer=e(),T.renderOptions.backend="webgl")}else T.renderer=e(),T.renderOptions.backend="webgl";await T.renderer?.init()},Up=async()=>{F(T.visionInstance),T.segmenter?.close(),T.segmenter=await Xe.createFromOptions(T.visionInstance,{outputCategoryMask:!1,outputConfidenceMasks:!0,runningMode:"VIDEO",canvas:T.segmenterCanvas,baseOptions:{modelAssetPath:T.modelAssetPath,delegate:T.delegate}})},Wh=async t=>{T.segmenterTextureToCanvas?.release(),T.segmenterCanvas=t,T.segmenterTextureToCanvas=Go(T.segmenterCanvas),await Up()},$h=async t=>{T.processCanvas=t,await Bp()},bu=()=>{T.muted=!0,T.originalTrack&&(T.originalTrack.enabled=!1)},vu=()=>{T.muted=!1,T.originalTrack&&(T.originalTrack.enabled=!0)},Lp=t=>(t.addEventListener("mute",bu),t.addEventListener("unmute",vu),t.addEventListener("ended",wu),()=>{t.removeEventListener("mute",bu),t.removeEventListener("unmute",vu),t.removeEventListener("ended",wu)}),zh=t=>{let e={},{backgroundImage:r,...n}=T.renderOptions,s=Of(t,n);for(let[o,a]of Object.entries(s.changed))e[o]=a.new;return e},Pp=async(t={})=>{try{T.status=Ee.Opening,t.processingWidth&&(T.width=t.processingWidth),t.processingHeight&&(T.height=t.processingHeight),t.renderOptions&&Tu(t.renderOptions);let{basePath:e,imageSegmenterOptions:r={}}=t;if(T.modelAssetPath=r.modelAsset?.path??T.modelAssetPath,T.delegate=r.delegate??T.delegate,T.visionInstance=await fr.forVisionTasks(e),T.backgroundImages?.clear(),T.backgroundImages=Wf(t.backgroundImage&&[[t.backgroundImage.key,t.backgroundImage.image]]),t.renderOptions?.backgroundImageUrl&&t.backgroundImage?.key!==t.renderOptions.backgroundImageUrl){let s=await Eu(t.renderOptions.backgroundImageUrl);s&&(T.renderOptions.backgroundImage=s)}await $h(os(T.width,T.height)),await Wh(os(T.width,T.height)),T.status=Ee.Opened;let n={};t.renderOptions&&(n=zh(t.renderOptions)),$e({type:"opened",data:n})}catch(e){T.status=Ee.Error;let r=so(e);$e({type:"event",data:{type:no(r),message:r}})}},Op=Math.trunc(30*.8),Vh=t=>{T.stats.push(t),T.stats.length>=Op&&(Np(),T.stats.length=0)},Dp={async transform(t,e){let r=performance.now();if(T.renderOptions.effects==="none"||T.muted){Vh({start:r,end:r}),e.enqueue(t);return}F(T.segmenter);let n;try{n=T.segmenter.segmentForVideo(t,r);let s=performance.now(),o=t.timestamp,a=n.confidenceMasks?.[0];if(a){F(T.renderer),F(T.processCanvas),F(T.segmenterCanvas),F(T.segmenterTextureToCanvas),T.segmenterTextureToCanvas.render(Th(a)),a.close(),T.renderer.render(T.segmenterCanvas,t,T.renderOptions),t.close();let i=new VideoFrame(T.processCanvas,{timestamp:o});e.enqueue(i)}else e.enqueue(t);Vh({start:r,segmentation:s,end:performance.now()})}catch(s){e.enqueue(t),s instanceof Error&&(T.status=Ee.Error,$e({type:"event",data:{type:"Error",error:s}}))}finally{n?.close()}}},Hh=async(t,e,r)=>t.pipeThrough(new TransformStream(Dp),{signal:r}).pipeTo(e),Mp=async(t,e)=>{let r=new VideoTrackGenerator;$e({type:"processed",data:r.track},[r.track]);let{readable:n}=new MediaStreamTrackProcessor({track:t});try{await Hh(n,r.writable,e)}catch(s){if(ku(),e&&!(e.aborted&&(e.reason==="close"||!("reason"in AbortSignal.prototype))))throw s}},Eu=t=>(T.imageFetcherAbortController?.abort("close"),T.imageFetcherAbortController=new AbortController,T.backgroundImages?.tryFetchingImage(t,T.imageFetcherAbortController.signal)),Np=()=>{T.stats.length&&($e({type:"stats",data:T.stats}),T.stats.length=0)},Gp=async(t,e,r,n)=>{try{if(F(T.segmenter),F(t||e&&r),n&&Tu(n),F(!T.renderer?.isContextLost(),O.ContextLost),T.renderOptions?.effects==="overlay"&&T.renderOptions.backgroundImageUrl){let s=T.backgroundImages?.getImage(T.renderOptions.backgroundImageUrl);if(s)T.renderOptions.backgroundImage=s;else{let o=await Eu(T.renderOptions.backgroundImageUrl);o&&(T.renderOptions.backgroundImage=o)}}T.status=Ee.Processing,T.processingAbortController=new AbortController,T.stats.length=0,t?(ku(),T.originalTrack=t,T.muted=!t.enabled,T.trackEventsSubscription=Lp(t),await Mp(t,T.processingAbortController.signal)):(F(e&&r),$e({type:"processed"}),await Hh(e,r,T.processingAbortController.signal))}catch(s){let o=so(s);if(o==="close")return;if(s instanceof Error)return T.status=Ee.Error,$e({type:"event",data:{type:no(o),error:s,message:o,track:t}},t?[t]:[]);throw s}},Vp=async({backgroundImage:t,renderOptions:e,imageSegmenterOptions:r,processingHeight:n,processingWidth:s,restart:o})=>{if(T.status!==Ee.Updating)try{if(T.status=Ee.Updating,t&&T.backgroundImages?.setImage(t.key,t.image),e?.backgroundImageUrl){let l=await Eu(e.backgroundImageUrl);l&&(T.renderOptions.backgroundImage=l)}let a=o;if(n&&n!==T.height&&(T.height=n,a=!0),s&&s!==T.width&&(T.width=s,a=!0),e?.backend&&!Gh(e.backend)){T.status=Ee.Error,$e({type:"event",data:{type:"Error",message:"Render backend is not webgl or webgpu"}});return}e?.effects&&e.effects!==T.renderOptions.effects&&(T.stats.length=0);let i=e?.backend&&e?.backend!==T.renderOptions.backend;e&&Tu(e),r&&(T.modelAssetPath=r.modelAsset?.path??T.modelAssetPath,T.delegate=r.delegate??T.delegate),(a||i)&&await $h(os(T.width,T.height)),a&&await Wh(os(T.width,T.height)),T.status=Ee.Updated;let u={};e&&(u=zh(e)),$e({type:"updated",data:u}),a&&$e({type:"event",data:{type:O.ProcessorRestarted}})}catch(a){T.status=Ee.Error;let i=so(a);$e({type:"event",data:{type:no(i),message:i}})}},Wp=()=>{T.status=Ee.Idle,T.processingAbortController?.abort("close"),T.imageFetcherAbortController?.abort("close"),ku(),T.processingAbortController=void 0,T.imageFetcherAbortController=void 0},wu=()=>{T.status=Ee.Closing,Wp(),T.stats.length=0,T.status=Ee.Closed,$e({type:"closed"})};self.addEventListener("message",t=>{switch(t.data.type){case"open":{Pp(t.data.data);break}case"update":{Vp(t.data.data);break}case"process":{let{track:e,readable:r,writable:n,renderOptions:s}=t.data.data;Gp(e,r,n,s);break}case"close":{wu();break}case"mute":{t.data.data?bu():vu();break}case"destroy":{T.status=Ee.Destroying,T.renderer?.release(),T.segmenterTextureToCanvas?.release(),T.segmenter?.close(),T.backgroundImages?.clear(),T.originalTrack=void 0,T.renderer=void 0,T.segmenter=void 0,T.backgroundImages=void 0,T.trackEventsSubscription=void 0,T.status=Ee.Destroyed;break}}});self.addEventListener("error",t=>{t.preventDefault(),$e({type:"event",data:{type:O.Error,message:`Uncaught Error event: ${t.error}`}})});