wtfgif 1.2.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.
- package/BENCHMARKS.md +185 -0
- package/CHANGELOG.md +54 -0
- package/CONTRIBUTING.md +27 -0
- package/LICENSE +21 -0
- package/README.md +166 -0
- package/dist/compiled.d.ts +77 -0
- package/dist/constants/gif.d.ts +17 -0
- package/dist/decoder/pool.d.ts +2 -0
- package/dist/decoder/reader.d.ts +80 -0
- package/dist/encoder/writer.d.ts +59 -0
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +47 -0
- package/dist/index.mjs +2 -0
- package/dist/index.mjs.map +1 -0
- package/dist/native/oneOff.d.ts +1 -0
- package/dist/native/runtime.d.ts +27 -0
- package/dist/types.d.ts +171 -0
- package/dist/utils/netscape.d.ts +16 -0
- package/dist/utils/palette.d.ts +4 -0
- package/dist/utils/subblocks.d.ts +4 -0
- package/dist/wasm/coreBackend.d.ts +2 -0
- package/dist/wasm/runtime.d.ts +24 -0
- package/dist/wasm-core/package.json +3 -0
- package/dist/wasm-core/wtfgif_core.d.ts +81 -0
- package/dist/wasm-core/wtfgif_core.js +1326 -0
- package/dist/wasm-core/wtfgif_core_bg.wasm +0 -0
- package/dist/wasm-core/wtfgif_core_bg.wasm.d.ts +51 -0
- package/dist/wasm-web/package.json +3 -0
- package/dist/wasm-web/wtfgif_core.d.ts +157 -0
- package/dist/wasm-web/wtfgif_core.js +1392 -0
- package/dist/wasm-web/wtfgif_core_bg.wasm +0 -0
- package/dist/wasm-web/wtfgif_core_bg.wasm.d.ts +51 -0
- package/package.json +125 -0
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';var _documentCurrentScript=typeof document!=='undefined'?document.currentScript:null;var ce=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var D,X=null,he=new Uint8Array([71,73,70,56,57,97,2,0,2,0,128,0,0,0,0,0,255,255,255,44,0,0,0,0,2,0,2,0,0,2,3,68,24,20,0,59]),pt=64,bt=()=>{let e=(typeof process>"u"?void 0:process)?.getBuiltinModule?.("node:module")?.createRequire;return e?e((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.cjs', document.baseURI).href))):typeof ce=="function"?ce:null},me=t=>{try{return bt()?.(t)??null}catch{return null}},ae=t=>!t||typeof t.WtfGifCore!="function"?null:t,ie=t=>{t.prepare_reencode_hot_path?.();let e=t.reencode_hot_path_primer?[t.reencode_hot_path_primer(16,2),t.reencode_hot_path_primer(32,8),...t.remux_hot_path_primer?[t.remux_hot_path_primer()]:[]]:[];if(t.reencode_gif_pixel_perfect)for(let r of e)for(let n=0;n<32;n++)t.reencode_gif_pixel_perfect(r),t.remux_gif_pixel_perfect?.(r);for(let r=0;r<pt;r++)t.reencode_gif_pixel_perfect?.(he),t.remux_gif_pixel_perfect?.(he),t.decode_all_rgba?.(he);},yt=()=>{if(D!==void 0)return D;let t=me("../../crates/wtfgif-core/pkg/wtfgif_core.js")??me("../crates/wtfgif-core/pkg/wtfgif_core.js")??me("wtfgif/wasm-core");return D=ae(t),D};function H(t){D=t;}function O(){return yt()}var Ce=async t=>{if(typeof WebAssembly>"u")return null;let r=await import(new URL("./wasm-web/wtfgif_core.js",(typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.cjs', document.baseURI).href))).href);return typeof r.default=="function"&&await r.default(t),ae(r)},Ee=t=>X||(X=(async()=>{let e=ae(t);if(e){let n=t;typeof n.default=="function"&&await n.default(),H(e),ie(e);return}if(D===null&&(D=void 0),t!==void 0){let n=await Ce(t);if(n){H(n),ie(n);return}}if(O())return;let r=await Ce(t);r&&(H(r),ie(r));})().finally(()=>{X=null;}),X);async function Be(t,e){typeof t.default=="function"&&await t.default(e===void 0?void 0:{module_or_path:e});let r=ae(t);if(!r)throw new Error("The supplied module is not a wtfgif WebAssembly module");H(r),ie(r);}function gt(){return {supported:typeof WebAssembly<"u",simd:false,threads:typeof SharedArrayBuffer<"u"&&(typeof crossOriginIsolated>"u"||crossOriginIsolated)}}function Re(){return {...gt(),initialized:O()!==null,workerPoolAvailable:false}}function ke(){D=null,X=null;}var W=null,Oe=null,V=t=>{throw new Error(`Fast Rust backend unavailable. Initialize WebAssembly or install the native addon before ${t}.`)};function pe(t){if(W)return W.decodeFramesRgba(t);let e=O();if(!e)return V("decoding");let r=new e.WtfGifCore(t);try{let n=r.decode_all_rgba?.();return n?{width:r.width(),height:r.height(),frameCount:r.frame_count(),pixels:new Uint8Array(n.buffer,n.byteOffset,n.byteLength)}:V("decoding")}finally{r.free();}}function oe(t){if(W)return W.reencodeGifFast(t);let e=O();if(!e)return V("reencoding");if(e.reencode_gif_pixel_perfect)return e.reencode_gif_pixel_perfect(t);let r=new e.WtfGifCore(t);try{return r.reencode_gif_pixel_perfect?.()??V("reencoding")}finally{r.free();}}var Me=t=>{let e=O();return e?.remux_gif_pixel_perfect?e.remux_gif_pixel_perfect(t):V("losslessly remuxing")};exports.remuxGifPixelPerfect=Me;function Le(t){Oe=t?.remux_gif_pixel_perfect??null,exports.remuxGifPixelPerfect=Oe??Me;}function Te(t){W=t;}function be(){return W}function Ne(){return {name:"wtfgif-rust-native",available:W!==null}}function De(){return W?{name:"wtfgif-rust-native",available:true}:O()?{name:"wtfgif-rust-wasm",available:true}:{name:null,available:false}}var se=new Uint8Array([78,69,84,83,67,65,80,69,50,46,48]);function We(t,e,r){t[e++]=33,t[e++]=255,t[e++]=11;for(let n=0;n<se.length;n++)t[e++]=se[n];return t[e++]=3,t[e++]=1,t[e++]=r&255,t[e++]=r>>8&255,t[e++]=0,e}function ze(t,e){if(t[e]!==11)return null;for(let n=0;n<se.length;n++)if(t[e+1+n]!==se[n])return null;return t[e+12]!==3||t[e+13]!==1||t[e+16]!==0?null:{loopCount:(t[e+14]|t[e+15]<<8)>>>0,nextPos:e+17}}var Q=new Uint32Array(256),Z=new Uint32Array(256),ee=new Uint32Array(256),ye=new Uint32Array(256);for(let t=0;t<256;t++)Q[t]=t,Z[t]=t<<8,ee[t]=t<<16,ye[t]=t<<24;function le(t){return 31-Math.clz32(t)}function j(t){let e=t.length>>>0;if(e===0||e>256)throw new Error("Invalid palette size (must be 1..256).");let r=1;for(;r<e;)r<<=1;if(r<2&&(r=2),r>256)throw new Error("Invalid palette size (must be 1..256).");return r}function te(t,e,r,n,a=null){let i=new Uint32Array(256),d=Math.min(r,256);if(n==="rgba")for(let o=0;o<d;o++){let l=t[e+o*3]|0,s=t[e+o*3+1]|0,f=t[e+o*3+2]|0;a!==null&&o===a?i[o]=ee[f]|Z[s]|Q[l]:i[o]=ye[255]|ee[f]|Z[s]|Q[l];}else for(let o=0;o<d;o++){let l=t[e+o*3]|0,s=t[e+o*3+1]|0,f=t[e+o*3+2]|0;a!==null&&o===a?i[o]=ee[l]|Z[s]|Q[f]:i[o]=ye[255]|ee[l]|Z[s]|Q[f];}return i}var xt=8192,Fe=128;function He(t){let e=t.width|0,r=t.height|0;if(e<=0||r<=0||e>65535||r>65535)throw new Error("Width/Height invalid.");let n=j(t.palette),a=e*r,i=wt(t.frames,a,t.frameCount),d=Ke(t.delay,i),o=t.loop===void 0||t.loop===null?null:fe(t.loop,"Loop count invalid."),l=t.backend??"auto",s=l==="javascript"?null:O(),f=t.compression==="fast",u=l==="javascript"||l==="wasm"?null:be();if((l==="rust"||l==="wasm")&&!u&&!s)throw new Error("Fast Rust backend unavailable. Initialize WebAssembly or install the native addon before encoding.");if(f&&u){let c=ge(t.frames,a,i,n,false);return u.encodeIndexedFast(c,e,r,i,z(t.palette),de(d,i),o===null?-1:o,t.delta===true)}if(typeof d=="number"){let c=f?t.delta?s?.encode_indexed_literal_delta_gif:s?.encode_indexed_literal_gif:t.delta?s?.encode_indexed_delta_gif:s?.encode_indexed_gif;if(c){let h=ge(t.frames,a,i,n,false);return c(h,e,r,i,z(t.palette),d,o===null?-1:o)}}else {let c=f?t.delta?s?.encode_indexed_literal_delta_gif_with_delays:s?.encode_indexed_literal_gif_with_delays:t.delta?s?.encode_indexed_delta_gif_with_delays:s?.encode_indexed_gif_with_delays;if(c){let h=ge(t.frames,a,i,n,false);return c(h,e,r,i,z(t.palette),d,o===null?-1:o)}}if(l==="native")throw new Error("Rust/Wasm GIF encoder unavailable.");return Ye(t.frames,e,r,a,i,t.palette,d,o,t.delta===true)}function je(t){let e=t.width|0,r=t.height|0;if(e<=0||r<=0||e>65535||r>65535)throw new Error("Width/Height invalid.");t.palette!==void 0&&j(t.palette);let n=e*r,a=n*4,i=Ft(t.frames,a,t.frameCount),d=Ke(t.delay,i),o=Et(t.alphaThreshold),l=t.loop===void 0||t.loop===null?null:fe(t.loop,"Loop count invalid."),s=At(t.frames,a,i),f=t.backend??"auto",u=f==="javascript"?null:O(),c=t.compression==="fast",h=f==="javascript"||f==="wasm"?null:be();if((f==="rust"||f==="wasm")&&!h&&!u)throw new Error("Fast Rust backend unavailable. Initialize WebAssembly or install the native addon before encoding.");if(c&&o===Fe&&h)return h.encodeRgbaFast(s,e,r,i,z(t.palette??[]),de(d,i),l===null?-1:l,t.delta===true);if(typeof d=="number"&&o===Fe){if(c){let g=t.delta?u?.encode_rgba_literal_delta_gif:u?.encode_rgba_literal_gif;if(g)return g(s,e,r,i,z(t.palette??[]),d,l===null?-1:l)}else if(u?.encode_rgba_gif)return u.encode_rgba_gif(s,e,r,i,z(t.palette??[]),d,l===null?-1:l,t.delta===true)}if(c){let g=t.delta?u?.encode_rgba_literal_delta_gif_with_options:u?.encode_rgba_literal_gif_with_options;if(g)return g(s,e,r,i,z(t.palette??[]),de(d,i),l===null?-1:l,o)}let m=u?.encode_rgba_gif_with_options;if(m)return m(s,e,r,i,z(t.palette??[]),de(d,i),l===null?-1:l,t.delta===true,o);if(f==="native")throw new Error("Rust/Wasm GIF encoder unavailable.");let{indexed:p,palette:y,transparentIndex:b}=_t(s,t.palette,o);return Ye(p,e,r,n,i,y,d,l,t.delta===true,b)}var re=class{constructor(e,r,n,a){this.buf=e;this.width=r;this.height=n;this.p=0;this.ended=false;this.background=0;this.globalColorCount=0;this.previousIndexedFrame=null;let i=a??{};if(this.loopCount=i.loop===void 0?null:i.loop,this.globalPalette=i.palette===void 0?null:i.palette,r<=0||n<=0||r>65535||n>65535)throw new Error("Width/Height invalid.");this.buf[this.p++]=71,this.buf[this.p++]=73,this.buf[this.p++]=70,this.buf[this.p++]=56,this.buf[this.p++]=57,this.buf[this.p++]=97;let d=0;if(this.globalPalette!==null){let l=j(this.globalPalette);if(this.globalColorCount=l,d=le(l)-1&7,i.background!==void 0&&(this.background=i.background|0,this.background<0||this.background>=l))throw new Error("Background index out of range.")}this.buf[this.p++]=r&255,this.buf[this.p++]=r>>8&255,this.buf[this.p++]=n&255,this.buf[this.p++]=n>>8&255;let o=this.globalPalette!==null?128:0;if(this.buf[this.p++]=o|d,this.buf[this.p++]=this.background&255,this.buf[this.p++]=0,this.globalPalette!==null)for(let l=0;l<this.globalColorCount;l++){let s=(this.globalPalette[l]??0)>>>0;this.buf[this.p++]=s>>16&255,this.buf[this.p++]=s>>8&255,this.buf[this.p++]=s&255;}if(this.loopCount!==null){let l=this.loopCount|0;if(l<0||l>65535)throw new Error("Loop count invalid.");this.p=We(this.buf,this.p,l);}}addFrame(e,r,n,a,i,d){if(e|=0,r|=0,n|=0,a|=0,e<0||r<0||e>65535||r>65535)throw new Error("x/y invalid.");if(n<=0||a<=0||n>65535||a>65535)throw new Error("Width/Height invalid.");if(i.length<n*a)throw new Error("Not enough pixels for the frame size.");return this.writeFrame(e,r,n,a,i,we(i,0,n,a,n),d)}addFrameDelta(e,r){if(e.length<this.width*this.height)throw new Error("Not enough pixels for the frame size.");if(r?.palette!==void 0&&r.palette!==null)return this.addFrame(0,0,this.width,this.height,e,r);let n=this.previousIndexedFrame;if(!n)return this.addFrame(0,0,this.width,this.height,e,r);let a=Rt(n,e,this.width,this.height);if(!a){let d=we(e,0,1,1,this.width);return this.writeFrame(0,0,1,1,d,d,r)}if(a.width===this.width&&a.height===this.height)return this.addFrame(0,0,this.width,this.height,e,r);let i=we(e,a.y*this.width+a.x,a.width,a.height,this.width);return this.writeFrame(a.x,a.y,a.width,a.height,i,i,r)}writeFrame(e,r,n,a,i,d,o){if(this.ended&&(this.p--,this.ended=false),Ve(i)<n*a)throw new Error("Not enough pixels for the frame size.");let l=o??{},s=true,f=l.palette;if(f==null&&(s=false,f=this.globalPalette),f==null)throw new Error("Must supply either a local or global palette.");let u=j(f),c=le(u)-1&7,h=Math.max(2,le(u)),m=(l.delay??0)|0,p=(l.disposal??0)|0;if(p<0||p>3)throw new Error("Disposal out of range.");let y=false,b=0;if(l.transparent!==void 0&&l.transparent!==null&&(y=true,b=l.transparent|0,b<0||b>=u))throw new Error("Transparent color index out of range.");if((p!==0||y||m!==0)&&(this.buf[this.p++]=33,this.buf[this.p++]=249,this.buf[this.p++]=4,this.buf[this.p++]=p<<2|(y?1:0),this.buf[this.p++]=m&255,this.buf[this.p++]=m>>8&255,this.buf[this.p++]=b&255,this.buf[this.p++]=0),this.buf[this.p++]=44,this.buf[this.p++]=e&255,this.buf[this.p++]=e>>8&255,this.buf[this.p++]=r&255,this.buf[this.p++]=r>>8&255,this.buf[this.p++]=n&255,this.buf[this.p++]=n>>8&255,this.buf[this.p++]=a&255,this.buf[this.p++]=a>>8&255,this.buf[this.p++]=s?128|c:0,s)for(let g=0;g<u;g++){let w=(f[g]??0)>>>0;this.buf[this.p++]=w>>16&255,this.buf[this.p++]=w>>8&255,this.buf[this.p++]=w&255;}return this.p=M(this.buf,this.p,h,i,u),this.updatePreviousIndexedFrame(e,r,n,a,d,y?b:null,p),this.p}end(){return this.ended||(this.buf[this.p++]=59,this.ended=true),this.p}getOutputBuffer(){return this.buf}setOutputBuffer(e){this.buf=e;}getOutputBufferPosition(){return this.p}setOutputBufferPosition(e){this.p=e|0;}updatePreviousIndexedFrame(e,r,n,a,i,d,o){this.previousIndexedFrame||(this.previousIndexedFrame=new Uint8Array(this.width*this.height));let l=this.previousIndexedFrame;if(d===null&&i.data instanceof Uint8Array){if(e===0&&r===0&&n===this.width&&a===this.height&&i.offset===0&&i.stride===this.width)l.set(i.data.subarray(0,this.width*this.height));else for(let s=0;s<a;s++){let f=i.offset+s*i.stride,u=(r+s)*this.width+e;l.set(i.data.subarray(f,f+n),u);}(o===2||o===3)&&(this.previousIndexedFrame=null);return}for(let s=0;s<a;s++){let f=i.offset+s*i.stride,u=(r+s)*this.width+e;for(let c=0;c<n;c++){let h=i.data[f++]|0;(d===null||h!==d)&&(l[u]=h),u++;}}(o===2||o===3)&&(this.previousIndexedFrame=null);}};function Ye(t,e,r,n,a,i,d,o,l,s=null){let u=13+j(i)*3+20+a*(n*2+32)+1,c=new Uint8Array(u),h=new re(c,e,r,{palette:i,loop:o});for(let m=0;m<a;m++){let p=Pt(t,n,m),y={delay:Ct(d,m),...s===null?{}:{transparent:s}};l?h.addFrameDelta(p,y):h.addFrame(0,0,e,r,p,y);}return c.slice(0,h.end())}function wt(t,e,r){if(t instanceof Uint8Array){if(r!==void 0){let n=r|0;if(n<=0||t.length!==e*n)throw new Error("Indexed frame stream length does not match dimensions.");return n}if(t.length===0||t.length%e!==0)throw new Error("Indexed frame stream length does not match dimensions.");return t.length/e}if(r!==void 0&&r!==t.length)throw new Error("Frame count does not match frames length.");if(t.length===0)throw new Error("Frame count must be greater than zero.");for(let n of t)if(n.length<e)throw new Error("Not enough pixels for the frame size.");return t.length}function Ft(t,e,r){if(Je(t)){if(r!==void 0){let n=r|0;if(n<=0||t.length!==e*n)throw new Error("RGBA frame stream length does not match dimensions.");return n}if(t.length===0||t.length%e!==0)throw new Error("RGBA frame stream length does not match dimensions.");return t.length/e}if(r!==void 0&&r!==t.length)throw new Error("Frame count does not match frames length.");if(t.length===0)throw new Error("Frame count must be greater than zero.");for(let n of t)if(n.length<e)throw new Error("Not enough pixels for the frame size.");return t.length}function ge(t,e,r,n,a=true){if(t instanceof Uint8Array)return a&&qe(t,n),t;let i=new Uint8Array(e*r);for(let d=0;d<r;d++){let o=t[d],l=d*e;if(o instanceof Uint8Array){a&&qe(o.subarray(0,e),n),i.set(o.subarray(0,e),l);continue}for(let s=0;s<e;s++){let f=o[s]|0;if(f>>>0>=n)throw new Error("Pixel index out of range.");i[l+s]=f;}}return i}function At(t,e,r){if(Je(t))return Se(t);let n=new Uint8Array(e*r);for(let a=0;a<r;a++){let i=Se(t[a]);n.set(i.subarray(0,e),a*e);}return n}function Je(t){return t instanceof Uint8Array||t instanceof Uint8ClampedArray}function Se(t){return t instanceof Uint8Array?t:new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}function qe(t,e){for(let r=0;r<t.length;r++)if(t[r]>=e)throw new Error("Pixel index out of range.")}function Pt(t,e,r){if(t instanceof Uint8Array){let n=r*e;return t.subarray(n,n+e)}return t[r]}function _t(t,e,r){let n=Gt(t,r);return e!==void 0?vt(t,e,n,r):It(t,n,r)??Ut(t,n,r)}function It(t,e,r){let n=[],a=new Map,i=new Uint8Array(t.length>>2);if(!e){let l=0;for(let s=0;s<t.length;s+=4){let f=Y(t[s],t[s+1],t[s+2]),u=a.get(f);if(u===void 0){if(n.length===256)return null;u=n.length,a.set(f,u),n.push(f);}i[l++]=u;}return {indexed:i,palette:n,transparentIndex:null}}for(let l=0;l<t.length;l+=4){if(t[l+3]<r)continue;let s=Y(t[l],t[l+1],t[l+2]),f=a.get(s);if(f===void 0){if(n.length===(e?255:256))return null;f=n.length,a.set(s,f),n.push(s);}}if(e&&n.length===256)return null;let d=e?n.length:null;d!==null&&n.push(0);let o=0;for(let l=0;l<t.length;l+=4){if(t[l+3]<r){i[o++]=d;continue}let s=Y(t[l],t[l+1],t[l+2]);i[o++]=a.get(s);}return {indexed:i,palette:n,transparentIndex:d}}function vt(t,e,r,n){let a=new Map;for(let f=0;f<e.length;f++){let u=(e[f]??0)&16777215;a.has(u)||a.set(u,f);}if(!r){let f=new Uint8Array(t.length>>2),u=0;for(let c=0;c<t.length;c+=4){let h=t[c],m=t[c+1],p=t[c+2],y=Y(h,m,p);f[u++]=a.get(y)??xe(h,m,p,e);}return {indexed:f,palette:e,transparentIndex:null}}let i=new Set;for(let f=0;f<t.length;f+=4){if(t[f+3]<n)continue;let u=t[f],c=t[f+1],h=t[f+2],m=Y(u,c,h);i.add(a.get(m)??xe(u,c,h,e));}let d=e,o=null;if(r)if(e.length<256)d=e.slice(),o=d.length,d.push(0);else {for(let f=0;f<e.length;f++)if(!i.has(f)){o=f;break}if(o===null)throw new Error("RGBA frames contain transparent pixels, but the palette has no unused transparent slot.")}let l=new Uint8Array(t.length>>2),s=0;for(let f=0;f<t.length;f+=4){if(t[f+3]<n){l[s++]=o;continue}let u=t[f],c=t[f+1],h=t[f+2],m=Y(u,c,h);l[s++]=a.get(m)??xe(u,c,h,e);}return {indexed:l,palette:d,transparentIndex:o}}function Ut(t,e,r){let n=new Uint8Array(t.length>>2),a=0;if(e){for(let o=0;o<t.length;o+=4)n[a++]=t[o+3]<r?255:Math.min($e(t[o],t[o+1],t[o+2]),254);let d=Xe();return d[255]=0,{indexed:n,palette:d,transparentIndex:255}}for(let i=0;i<t.length;i+=4)n[a++]=$e(t[i],t[i+1],t[i+2]);return {indexed:n,palette:Xe(),transparentIndex:null}}function Gt(t,e){for(let r=3;r<t.length;r+=4)if(t[r]<e)return true;return false}function Y(t,e,r){return (t&255)<<16|(e&255)<<8|r&255}function $e(t,e,r){return t&224|e>>3&28|r>>6}function Xe(){let t=new Array(256);for(let e=0;e<256;e++){let r=((e>>5&7)*255+3)/7|0,n=((e>>2&7)*255+3)/7|0,a=((e&3)*255+1)/3|0;t[e]=r<<16|n<<8|a;}return t}function xe(t,e,r,n){let a=0,i=Number.MAX_SAFE_INTEGER;for(let d=0;d<n.length;d++){let o=(n[d]??0)>>>0,l=t-(o>>16&255),s=e-(o>>8&255),f=r-(o&255),u=l*l+s*s+f*f;if(u<i&&(i=u,a=d,u===0))break}return a}function z(t){let e=new Uint32Array(t.length);for(let r=0;r<t.length;r++)e[r]=(t[r]??0)>>>0;return e}function fe(t,e){let r=t|0;if(r<0||r>65535)throw new Error(e);return r}function Ke(t,e){if(t===void 0)return 0;if(typeof t=="number")return fe(t,"Delay invalid.");if(t.length!==e)throw new Error("Delay count does not match frame count.");let r=new Uint16Array(e);for(let n=0;n<e;n++)r[n]=fe(t[n]??0,"Delay invalid.");return r}function de(t,e){if(t instanceof Uint16Array)return t;let r=new Uint16Array(e);return r.fill(t),r}function Ct(t,e){return t instanceof Uint16Array?t[e]:t}function Et(t){return Bt(t??Fe,"Alpha threshold invalid.")}function Bt(t,e){let r=t|0;if(r<0||r>255)throw new Error(e);return r}function Rt(t,e,r,n){let a=0,i=n-1;for(;a<n;){let l=a*r,s=false;for(let f=0;f<r;f++)if(t[l+f]!==e[l+f]){s=true;break}if(s)break;a++;}if(a===n)return null;for(;i>a;){let l=i*r,s=false;for(let f=0;f<r;f++)if(t[l+f]!==e[l+f]){s=true;break}if(s)break;i--;}let d=r-1,o=0;for(let l=a;l<=i;l++){let s=l*r;for(let f=0;f<r;f++)t[s+f]!==e[s+f]&&(f<d&&(d=f),f>o&&(o=f));}return {x:d,y:a,width:o-d+1,height:i-a+1}}function we(t,e,r,n,a){if(e|=0,r|=0,n|=0,a|=0,e<0||r<=0||n<=0||a<r)throw new Error("Not enough pixels for the frame size.");if(e+(n-1)*a+r>t.length)throw new Error("Not enough pixels for the frame size.");return {data:t,offset:e,width:r,height:n,stride:a,length:r*n}}function kt(t){return !(t instanceof Uint8Array)&&!Array.isArray(t)}function Ve(t){return t.length|0}function M(t,e,r,n,a){let i=Ot(r,n,a);if(i){for(let A=0;A<i.length;A++)t[e+A]=i[A];return e+i.length}let d=e;t[d++]=r&255;let o=d++,l=0,s=1<<r,f=s+1,u=f+1,c=r+1,h=(1<<c)-1,m=0,p=0,y=16384,b=M._keys??(M._keys=new Int32Array(y)),g=M._vals??(M._vals=new Int16Array(y)),w=M._gen??(M._gen=new Int32Array(y)),x=(M._epoch??0)+1|0;M._epoch=x,x<=0&&(w.fill(0),x=1,M._epoch=x);let C=x;function B(){C=C+1|0,C<=0&&(w.fill(0),C=1);}function R(A){for(m|=(A&65535)<<p,p+=c;p>=8;)t[d++]=m&255,m>>>=8,p-=8,++l===255&&(t[o]=255,o=d++,l=0);}B(),R(s);let G=Ve(n);if(G<=0)throw new Error("Not enough pixels for the frame size.");let I=null,L=0,P=0,k=0,_=0,v;if(kt(n)?(I=n.data,L=n.offset+1,k=n.width,P=n.width-1,_=n.stride-n.width,v=I[n.offset]|0):v=n[0]|0,v>>>0>=a)throw new Error("Pixel index out of range.");for(let A=1;A<G;A++){let F;if(I!==null?(P===0&&(L+=_,P=k),F=I[L++]|0,P--):F=n[A]|0,F>>>0>=a)throw new Error("Pixel index out of range.");let U=v<<8|F,E=U&y-1,q=-1;for(;w[E]===C;){if(b[E]===U){q=g[E]|0;break}E=E+1&y-1;}if(q>=0&&q<u){v=q;continue}R(v),u===4096?(R(s),u=f+1,c=r+1|0,h=(1<<c)-1,B()):r===1?(w[E]=C,b[E]=U|0,g[E]=u|0,u++,u>h&&c<12&&(c++,h=(1<<c)-1)):(u>=h+1&&c<12&&(c++,h=(1<<c)-1),w[E]=C,b[E]=U|0,g[E]=u|0,u++),v=F;}return R(v),R(f),p>0&&(t[d++]=m&255,++l===255&&(t[o]=255,o=d++,l=0),m=0,p=0),t[o]=l&255,l>0&&(t[d++]=0),d}(a=>{})(M||(M={}));function Ot(t,e,r){if(!(e instanceof Uint8Array)||e.length<xt)return null;let n=O()?.encode_indexed_lzw;return n?n(e,t,r):null}function Qe(t,e){let r=t[e]|0,n=e+1|0,a=0;for(;;){let o=t[n++]|0;if(o===0)break;a+=o,n+=o;}let i=new Uint8Array(a);n=e+1|0;let d=0;for(;;){let o=t[n++]|0;if(o===0)break;i.set(t.subarray(n,n+o),d),d+=o,n+=o;}return {bytes:i,mcs:r}}function Ze(){return {decTable:new Int32Array(4096),stack:new Uint8Array(4096),firstByte:new Int16Array(4096)}}var T=class T{static createPooled(e){return new T(e,false)}static createUnpooled(e){return new T(e,false)}static setDecodeBackend(e){T.decodeBackend=e;}static getDecodeBackendStatus(){let e=T.decodeBackend;if(!e)return {name:"javascript",available:false};try{return {name:e.name,available:e.isAvailable()}}catch{return {name:e.name,available:false}}}constructor(e,r=false){let n=e instanceof Uint8Array?e:Uint8Array.from(e);this.buf=n,this.width_=0,this.height_=0,this.globalPaletteOffset=null,this.globalPaletteSize=null,this.frames=[],this.loop_count=null,this.pooledTables=null,this.decTable=new Int32Array(0),this.stack=new Uint8Array(0),this.firstByte=new Int16Array(0),this.activePreparedFrames=new Set;let a=0,i=()=>{let b=n[a++];if(b===void 0)throw new Error("Unexpected end of GIF data.");return b},d=()=>(i()|i()<<8)>>>0;if(n[a++]!==71||n[a++]!==73||n[a++]!==70||n[a++]!==56||(n[a++]+1&253)!==56||n[a++]!==97)throw new Error("Invalid GIF 87a/89a header.");let o=(n[a++]|n[a++]<<8)>>>0,l=(n[a++]|n[a++]<<8)>>>0;this.width_=o,this.height_=l;let s=n[a++],f=s>>>7&1,c=1<<(s&7)+1;i(),a++,f&&(this.globalPaletteOffset=a,this.globalPaletteSize=c,a+=c*3);let h=0,m=null,p=0,y=true;for(;y&&a<e.length;){let b=i();switch(b){case 33:{let g=i();switch(g){case 255:{let w=ze(n,a);if(w)this.loop_count=w.loopCount,a=w.nextPos;else for(a+=12;;){let x=i();if(x===0)break;a+=x;}break}case 249:{if(i()!==4||n[a+4]!==0)throw new Error("Invalid graphics extension block.");let w=i();h=d();let x=i();m=w&1?x:null,p=w>>2&7,a++;break}case 1:case 254:{for(;;){let w=i();if(w===0)break;a+=w;}break}default:throw new Error("Unknown graphic control label: 0x"+g.toString(16))}break}case 44:{let g=d(),w=d(),x=d(),C=d(),B=i(),R=B>>>7&1,G=(B>>>6&1)!==0,L=1<<(B&7)+1,P=this.globalPaletteOffset,k=this.globalPaletteSize,_=false;R&&(_=true,P=a,k=L,a+=L*3);let v=a;for(a++;;){let A=i();if(A===0)break;a+=A;}this.frames.push({x:g,y:w,width:x,height:C,has_local_palette:_,palette_offset:P,palette_size:k,data_offset:v,data_length:a-v,transparent_index:m,interlaced:G,delay:h,disposal:p,min_code_size:n[v]|0}),h=0,m=null,p=0;break}case 59:y=false;break;default:throw new Error("Unknown gif block: 0x"+b.toString(16))}}}get width(){return this.width_}get height(){return this.height_}lzwDecodeToIndices(e,r){this.ensureDecoderTables();let n=this.getFrameCodes(e),a=e.min_code_size|0,i=0,d=1<<a,o=d+1,l=o+1,s=a+1|0,f=(1<<s)-1;for(let g=0;g<d;g++)this.firstByte[g]=g;let u=0,c=0,h=0,m=this.decTable,p=this.stack,y=0,b=null;for(;;){for(;c<s&&i<n.length;)u|=(n[i++]|0)<<c,c+=8;if(c<s)break;let g=u&f;if(u>>>=s,c-=s,g===d){l=o+1,s=a+1|0,f=(1<<s)-1,b=null;for(let C=0;C<d;C++)this.firstByte[C]=C;continue}else if(g===o)break;let w,x=g;if(x<d)w=x,h<r.length&&(r[h++]=w&255);else {if(y=0,x>=l){if(b===null)break;w=this.firstByte[b]|0,p[y++]=w,x=b;}else w=this.firstByte[x]|0;for(;x>=d;){let B=m[x]|0;p[y++]=B&255,x=B>>>8;}let C=x&255;for(h<r.length&&(r[h++]=C);y&&h<r.length;)r[h++]=p[--y]&255;}b!==null&&l<4096&&(m[l]=(b&4095)<<8|w&255,this.firstByte[l]=this.firstByte[b],l++,l>=f+1&&s<12&&(s++,f=(1<<s)-1)),b=g;}}numFrames(){return this.frames.length}loopCount(){return this.loop_count}frameInfo(e){if(e<0||e>=this.frames.length)throw new Error("Frame index out of range.");return this.frames[e]}ensureDecoderTables(){this.pooledTables||(this.pooledTables=Ze(),this.decTable=this.pooledTables.decTable,this.stack=this.pooledTables.stack,this.firstByte=this.pooledTables.firstByte);}getFrameCodes(e){if(!e.codes){let{bytes:r,mcs:n}=Qe(this.buf,e.data_offset);e.codes=r,e.min_code_size=n;}return e.codes}getFramePalette(e,r){if(e.palette_offset===null||e.palette_size===null)throw new Error("GIF frame has no color palette.");return r==="rgba"?(e.pal32rgba??(e.pal32rgba=te(this.buf,e.palette_offset,e.palette_size,"rgba",e.transparent_index)),e.pal32rgba):(e.pal32bgra??(e.pal32bgra=te(this.buf,e.palette_offset,e.palette_size,"bgra",e.transparent_index)),e.pal32bgra)}getFrameIndices(e){if(e.indices)return e.indices;let r=e.width*e.height,n=new Uint8Array(r);if(!e.interlaced)return this.lzwDecodeToIndices(e,n),e.indices=n,n;let a=new Uint8Array(r);this.lzwDecodeToIndices(e,a);let i=0;for(let d=0;d<4;d++){let o=0,l=8;d===1?o=4:d===2?(o=2,l=4):d===3&&(o=1,l=2);for(let s=0;;s++){let f=o+s*l;if(f>=e.height)break;let u=f*e.width;for(let c=0;c<e.width&&i<r;c++)n[u++]=a[i++];}}return e.indices=n,n}decodeAndBlitFrameBGRA(e,r){this.decodeAndBlitCompatibleFrame(e,r,"bgra");}decodeAndBlitFrameRGBA(e,r){this.decodeAndBlitCompatibleFrame(e,r,"rgba");}decodeFrameToTransferableRGBA(e){let r=this.width_*this.height_,n=new ArrayBuffer(r*4),a=new Uint8Array(n);return this.decodeAndBlitFrame32(e,a,"rgba"),n}decodeFrameToTransferableBGRA(e){let r=this.width_*this.height_,n=new ArrayBuffer(r*4),a=new Uint8Array(n);return this.decodeAndBlitFrame32(e,a,"bgra"),n}decodeFrameIntoBuffer(e,r,n="rgba"){let a=this.width_*this.height_*4;if(r.byteLength<a)throw new Error(`Buffer too small: need ${a} bytes, got ${r.byteLength}`);let i=new Uint8Array(r,0,a);this.decodeAndBlitFrame32(e,i,n);}preparePlayback(e={}){return this.prepareFrames({...e,composited:true,cache:"composited"})}prepareFrames(e={}){this.clearFrameCaches();try{let r=this.normalizePrepareFramesOptions(e),n=this.normalizeFrameIndices(r.frameIndices);if(r.backend!=="javascript"){let a=this.prepareFramesWithBackend(r);if(a)return this.createBackendPreparedFramesResult(a);if(r.backend==="native")throw new Error("Native GIF decode backend is not available.")}return r.composited?this.prepareCompositedFrames(r,n):this.prepareUncompositedFrames(r,n)}finally{this.clearFrameCaches();}}async prepareFramesAsync(e={}){return this.prepareFrames(e)}decodeAndBlitCompositedFrameRGBA(e,r){this.preparePlayback({format:"rgba"}).copyFrame(e,r);}decodeAndBlitCompositedFrameBGRA(e,r){this.preparePlayback({format:"bgra"}).copyFrame(e,r);}normalizePrepareFramesOptions(e){return {...e,format:e.format??"rgba",composited:e.composited??false,cache:e.cache??(e.composited?"composited":"auto"),backend:e.backend??"auto",deltas:e.deltas??false,dedupe:e.dedupe??"adjacent"}}normalizeFrameIndices(e){if(!e){let a=new Array(this.frames.length);for(let i=0;i<this.frames.length;i++)a[i]=i;return a}let r=new Set,n=[];for(let a of e){if(!Number.isInteger(a))throw new Error("Frame index out of range.");let i=a|0;if(i<0||i>=this.frames.length)throw new Error("Frame index out of range.");r.has(i)||(r.add(i),n.push(i));}return n}prepareFramesWithBackend(e){let r=T.decodeBackend;if(!r||!r.prepareFrames)return null;let n=false;try{n=r.isAvailable();}catch{n=false;}return n?r.prepareFrames(this.buf,e)??null:null}createBackendPreparedFramesResult(e){let r=e.dispose,n=false,a={...e,dispose:()=>{n||(n=true,this.activePreparedFrames.delete(a),r());}};return this.activePreparedFrames.add(a),a}prepareCompositedFrames(e,r){let n=new Set(r),a=r.length>0?Math.max(...r):-1,i=new Uint32Array(this.width_*this.height_),d=[],o=e.dedupe==="all"?new Map:null,l=0,s=null,f=null;for(let u=0;u<=a;u++){let c=this.frames[u],h=c.disposal===3?new Uint32Array(i):null;if(this.blitFrameIndicesToCanvas(c,i,this.width_,e.format),n.has(u)){let m=null,p,y=0;o?(y=T.hashPixels(i),p=o.get(y),m=T.findMatchingPixels(i,p)):e.dedupe==="adjacent"&&f&&T.pixelsEqual(f,i)&&(m=f);let b=e.deltas&&s?T.findChangedRect(s,i,this.width_,this.height_):null,g=b?T.copyRectPixels(i,this.width_,b):void 0,w=0,x=g?.byteLength??0;m?(this.enforcePreparedByteBudget(l+x,e.maxBytes),l+=x):(this.enforcePreparedByteBudget(l+i.byteLength+x,e.maxBytes),m=new Uint32Array(i),w=m.byteLength,l+=w+x,o&&(p?p.push(m):o.set(y,[m]))),d.push({index:u,x:0,y:0,width:this.width_,height:this.height_,delay:c.delay,disposal:c.disposal,byteLength:w+x,isFullCanvas:true,...b?{changedX:b.x,changedY:b.y,changedWidth:b.width,changedHeight:b.height,changedPixels:g}:{},pixels:m}),s=m,f=m;}this.applyFrameDisposal(c,i,h);}return this.createPreparedFramesResult(e.format,true,d,l,e.maxBytes??null)}prepareUncompositedFrames(e,r){let n=[],a=0;for(let i of r){let d=this.frames[i],o;if(e.cache==="indices"){let l=this.getFrameIndices(d),s=this.getFramePalette(d,e.format);o={index:i,x:d.x,y:d.y,width:d.width,height:d.height,delay:d.delay,disposal:d.disposal,byteLength:l.byteLength+s.byteLength,isFullCanvas:false,indices:l,palette:s};}else {let l=this.getFrameColors(d,e.format,this.width_),s=d.opaqueSpans,f=s?void 0:d.opaquePositions;o={index:i,x:d.x,y:d.y,width:d.width,height:d.height,delay:d.delay,disposal:d.disposal,byteLength:l.byteLength+(s?.byteLength??f?.byteLength??0),isFullCanvas:false,colors:l},s?o.spans=s:f&&(o.positions=f);}a+=o.byteLength,this.enforcePreparedByteBudget(a,e.maxBytes),n.push(o);}return this.createPreparedFramesResult(e.format,false,n,a,e.maxBytes??null)}createPreparedFramesResult(e,r,n,a,i){let d=new Array(this.frames.length);for(let l of n)d[l.index]=l;let o={width:this.width_,height:this.height_,format:e,composited:r,frames:n,byteLength:a,maxBytes:i,getFrame:l=>d[l],getFramePixels:l=>d[l]?.pixels,getFrameBytes:l=>{let s=d[l]?.pixels;return s?new Uint8Array(s.buffer,s.byteOffset,s.byteLength):void 0},copyFrame:(l,s)=>{let f=d[l];if(!f)throw new Error("Frame index out of range.");this.copyPreparedFrame(f,s);},createPlayer:l=>this.createPreparedPlayer(d,l),dispose:()=>{this.activePreparedFrames.delete(o),d.length=0,n.length=0;}};return this.activePreparedFrames.add(o),o}createPreparedPlayer(e,r){let n=r?this.getPreparedTarget32(r):new Uint32Array(this.width_*this.height_),a=-1,i=d=>{let o=e[d];if(!o)throw new Error("Frame index out of range.");let l=e[a];if(a===d-1&&l?.pixels===o.pixels)return a=d,n;let s=o.changedPixels?.length??0,f=o.pixels?.length??n.length;return o.changedPixels&&o.changedX!==void 0&&o.changedY!==void 0&&o.changedWidth!==void 0&&o.changedHeight!==void 0&&s<=f>>>3&&a===d-1?T.blitRectPixels(o.changedPixels,n,this.width_,o.changedX,o.changedY,o.changedWidth,o.changedHeight):this.copyPreparedFrame32(o,n),a=d,n};return {target:n,get currentIndex(){return a},drawFrame:i,next:()=>{let d=a+1;return e[d]?i(d):n},reset:()=>{a=-1,n.fill(0);}}}copyPreparedFrame(e,r){let n=this.getPreparedTarget32(r);this.copyPreparedFrame32(e,n);}copyPreparedFrame32(e,r){if(e.pixels){r.set(e.pixels);return}if(e.colors){this.blitPreparedColors(e,r);return}if(e.indices&&e.palette){this.blitPreparedIndices(e,r);return}}blitPreparedColors(e,r){let n=e.colors;if(e.spans){let o=e.spans;for(let l=0;l<o.length;l+=3){let s=o[l],f=o[l+1],u=o[l+2];if(f>=8)r.set(n.subarray(u,u+f),s);else for(let c=0;c<f;c++)r[s+c]=n[u+c];}return}if(e.positions){let o=e.positions;for(let l=0;l<n.length;l++)r[o[l]]=n[l];return}let a=0,i=e.y*this.width_+e.x|0;if(e.x===0&&e.width===this.width_){r.set(n,i);return}let d=this.width_-e.width;for(let o=0;o<e.height;o++){for(let l=0;l<e.width;l++)r[i++]=n[a++];i+=d;}}blitPreparedIndices(e,r){let n=e.indices,a=e.palette,d=this.frames[e.index].transparent_index??256,o=0,l=e.y*this.width_+e.x|0,s=this.width_-e.width;for(let f=0;f<e.height;f++){for(let u=0;u<e.width;u++){let c=n[o++];c!==d&&(r[l]=a[c]),l++;}l+=s;}}getPreparedTarget32(e){let r=this.width_*this.height_;if(e instanceof Uint32Array){if(e.length<r)throw new Error(`Buffer too small: need ${r*4} bytes, got ${e.byteLength}`);return e}if(e.byteLength<r*4)throw new Error(`Buffer too small: need ${r*4} bytes, got ${e.byteLength}`);if((e.byteOffset&3)!==0)throw new Error("Pixel buffer byteOffset must be aligned to 4 bytes.");return new Uint32Array(e.buffer,e.byteOffset,r)}applyFrameDisposal(e,r,n){e.disposal===2?this.clearFrameRect(r,e):e.disposal===3&&n&&r.set(n);}clearFrameRect(e,r){let n=Math.max(0,r.x|0),a=Math.max(0,r.y|0),i=Math.min(this.width_,n+(r.width|0)),d=Math.min(this.height_,a+(r.height|0)),o=i-n;if(!(o<=0))for(let l=a;l<d;l++){let s=l*this.width_+n;e.fill(0,s,s+o);}}static findChangedRect(e,r,n,a){let i=0,d=a-1;for(;i<a;){let s=i*n,f=false;for(let u=0;u<n;u++)if(e[s+u]!==r[s+u]){f=true;break}if(f)break;i++;}if(i===a)return null;for(;d>i;){let s=d*n,f=false;for(let u=0;u<n;u++)if(e[s+u]!==r[s+u]){f=true;break}if(f)break;d--;}let o=n-1,l=0;for(let s=i;s<=d;s++){let f=s*n;for(let u=0;u<n;u++)e[f+u]!==r[f+u]&&(u<o&&(o=u),u>l&&(l=u));}return {x:o,y:i,width:l-o+1,height:d-i+1}}static copyRectPixels(e,r,n){let a=new Uint32Array(n.width*n.height);for(let i=0;i<n.height;i++){let d=(n.y+i)*r+n.x;a.set(e.subarray(d,d+n.width),i*n.width);}return a}static blitRectPixels(e,r,n,a,i,d,o){for(let l=0;l<o;l++){let s=l*d,f=(i+l)*n+a;r.set(e.subarray(s,s+d),f);}}enforcePreparedByteBudget(e,r){if(r!==void 0&&e>r)throw new Error(`Prepared frame output exceeds maxBytes (${e} > ${r}).`)}static hashPixels(e){let r=2166136261;for(let n=0;n<e.length;n++)r^=e[n],r=Math.imul(r,16777619);return r>>>0}static findMatchingPixels(e,r){if(!r)return null;for(let n of r){if(n.length!==e.length)continue;let a=true;for(let i=0;i<e.length;i++)if(n[i]!==e[i]){a=false;break}if(a)return n}return null}static pixelsEqual(e,r){if(e.length!==r.length)return false;for(let n=0;n<e.length;n++)if(e[n]!==r[n])return false;return true}dispose(){for(let e of Array.from(this.activePreparedFrames))e.dispose();this.activePreparedFrames.clear(),this.clearFrameCaches(),this.pooledTables=null,this.decTable=new Int32Array(0),this.stack=new Uint8Array(0),this.firstByte=new Int16Array(0);}clearFrameCaches(){for(let e of this.frames)delete e.codes,delete e.indices,delete e.pal32rgba,delete e.pal32bgra,delete e.rgbaColors,delete e.bgraColors,delete e.opaqueSpans,delete e.opaquePositions,delete e.decodeCount;}returnToPool(){this.dispose();}static getPoolStats(){return {available:0,totalCreated:0,hits:0,misses:0}}decodeAndBlitFrame32(e,r,n){if(e<0||e>=this.frames.length)throw new Error("Frame index out of range.");this.clearFrameCaches();try{this.ensureDecoderTables();let a=new Uint32Array(r.buffer,r.byteOffset,r.byteLength>>>2),i=this.frames[e],d=this.getFramePalette(i,n),o=i.transparent_index??256;this.lzwDecodeToPixels(this.buf,i.data_offset,a,this.width_,i,d,o);}finally{this.clearFrameCaches();}}decodeAndBlitCompatibleFrame(e,r,n){let a=null;if(r instanceof Uint8Array?a=r:r instanceof Uint8ClampedArray&&(a=new Uint8Array(r.buffer,r.byteOffset,r.byteLength)),a&&(a.byteOffset&3)===0&&(a.byteLength&3)===0){this.decodeAndBlitFrame32(e,a,n);return}let i=Uint8Array.from(r);this.decodeAndBlitFrame32(e,i,n);for(let d=0;d<i.length;d++)r[d]=i[d];}getFrameColors(e,r,n){let a=r==="rgba"?e.rgbaColors:e.bgraColors;if(a)return a;let i=this.getFrameIndices(e),d=this.getFramePalette(e,r),o=e.width|0,l=e.height|0,s=e.transparent_index??256,f=o*l,u;if(s===256){u=new Uint32Array(f);for(let c=0;c<f;c++)u[c]=d[i[c]]>>>0;}else {let c=e.opaqueSpans,h=e.opaquePositions,m=0;if(c)for(let p=1;p<c.length;p+=3)m+=c[p];else if(h)m=h.length;else {let p=0;for(let y=0;y<l;y++){let b=y*o,g=0;for(;g<o;){for(;g<o&&i[b+g]===s;)g++;if(g>=o)break;for(p++;g<o&&i[b+g]!==s;)m++,g++;}}p===0||m/p>=4?(c=new Uint32Array(p*3),e.opaqueSpans=c):(h=new Uint32Array(m),e.opaquePositions=h);}if(u=new Uint32Array(m),c){let p=0,y=0;for(let b=0;b<l;b++){let g=b*o,w=(e.y+b|0)*n+(e.x|0),x=0;for(;x<o;){for(;x<o&&i[g+x]===s;)x++;if(x>=o)break;let C=w+x,B=p,R=x;for(;x<o;){let G=i[g+x];if(G===s)break;u[p++]=d[G]>>>0,x++;}y<c.length&&(c[y++]=C,c[y++]=x-R,c[y++]=B);}}}else if(h){let p=0;for(let y=0;y<l;y++){let b=y*o,g=(e.y+y|0)*n+(e.x|0);for(let w=0;w<o;w++){let x=i[b+w];x!==s&&(h[p]=g,u[p++]=d[x]>>>0),g++;}}}}return r==="rgba"?e.rgbaColors=u:e.bgraColors=u,u}blitFrameIndicesToCanvas(e,r,n,a){let i=this.getFrameIndices(e),d=this.getFramePalette(e,a),o=e.width|0,l=e.height|0,s=e.transparent_index??256,f=n-o,u=0,c=(e.y|0)*n+(e.x|0)|0;if(s===256){for(let h=0;h<l;h++){for(let m=0;m<o;m++)r[c++]=d[i[u++]];c+=f;}return}for(let h=0;h<l;h++){for(let m=0;m<o;m++){let p=i[u++];p!==s&&(r[c]=d[p]),c++;}c+=f;}}lzwDecodeToPixels(e,r,n,a,i,d,o){this.ensureDecoderTables();let l=this.getFrameCodes(i),s=i.min_code_size|0,f=0,u=1<<s,c=u+1,h=c+1,m=s+1|0,p=(1<<m)-1;for(let P=0;P<u;P++)this.firstByte[P]=P;let y=0,b=0,g=i.width|0,w=i.height|0,x=i.x|0,C=i.y|0,B=this.decTable,R=this.stack,G=0,I=null,L=o!==256;if(i.interlaced){let P=g*w,k=new Uint8Array(P),_=0;for(;;){for(;b<m&&f<l.length;)y|=(l[f++]|0)<<b,b+=8;if(b<m)break;let v=y&p;if(y>>>=m,b-=m,v===u){h=c+1,m=s+1|0,p=(1<<m)-1,I=null;for(let U=0;U<u;U++)this.firstByte[U]=U;continue}else if(v===c)break;let A,F=v;if(F<u)A=F,_<k.length&&(k[_++]=A&255);else {if(G=0,F>=h){if(I===null)break;A=this.firstByte[I]|0,R[G++]=A,F=I;}else A=this.firstByte[F]|0;for(;F>=u;){let E=B[F]|0;R[G++]=E&255,F=E>>>8;}let U=F&255;for(_<k.length&&(k[_++]=U&255);G&&_<k.length;)k[_++]=R[--G]&255;}I!==null&&h<4096&&(B[h]=(I&4095)<<8|A&255,this.firstByte[h]=this.firstByte[I],h++,h>=p+1&&m<12&&(m++,p=p<<1|1)),I=v;}_=0;for(let v=0,A=0,F=8;v<4;v++){v===1?(A=4,F=8):v===2?(A=2,F=4):v===3&&(A=1,F=2);for(let U=0;;U++){let E=C+A+U*F;if(E>=C+w)break;let q=E*a+x>>>0;for(let Ue=0;Ue<g&&_<k.length;Ue++){let Ge=k[_++]&255;Ge!==o&&(n[q]=d[Ge]>>>0),q++;}}}}else {let P=g,k=a-g>>>0,_=C*a+x>>>0;if(L)for(;;){for(;b<m&&f<l.length;)y|=(l[f++]|0)<<b,b+=8;if(b<m)break;let v=y&p;if(y>>>=m,b-=m,v===u){h=c+1,m=s+1|0,p=(1<<m)-1,I=null;for(let U=0;U<u;U++)this.firstByte[U]=U;continue}else if(v===c)break;let A,F=v;if(F<u){A=F;let U=A&255;U!==o&&(n[_]=d[U]>>>0),_++,--P===0&&(_+=k,P=g);}else {if(G=0,F>=h){if(I===null)break;A=this.firstByte[I]|0,R[G++]=A,F=I;}else A=this.firstByte[F]|0;for(;F>=u;){let E=B[F]|0;R[G++]=E&255,F=E>>>8;}let U=F&255;for(U!==o&&(n[_]=d[U]>>>0),_++,--P===0&&(_+=k,P=g);G;){let E=R[--G]&255;E!==o&&(n[_]=d[E]>>>0),_++,--P===0&&(_+=k,P=g);}}I!==null&&h<4096&&(B[h]=(I&4095)<<8|A&255,this.firstByte[h]=this.firstByte[I],h++,h>=p+1&&m<12&&(m++,p=p<<1|1)),I=v;}else for(;;){for(;b<m&&f<l.length;)y|=(l[f++]|0)<<b,b+=8;if(b<m)break;let v=y&p;if(y>>>=m,b-=m,v===u){h=c+1,m=s+1|0,p=(1<<m)-1,I=null;for(let U=0;U<u;U++)this.firstByte[U]=U;continue}else if(v===c)break;let A,F=v;if(F<u){A=F;let U=A&255;n[_]=d[U]>>>0,_++,--P===0&&(_+=k,P=g);}else {if(G=0,F>=h){if(I===null)break;A=this.firstByte[I]|0,R[G++]=A,F=I;}else A=this.firstByte[F]|0;for(;F>=u;){let E=B[F]|0;R[G++]=E&255,F=E>>>8;}let U=F&255;for(n[_]=d[U]>>>0,_++,--P===0&&(_+=k,P=g);G;){let E=R[--G]&255;n[_]=d[E]>>>0,_++,--P===0&&(_+=k,P=g);}}I!==null&&h<4096&&(B[h]=(I&4095)<<8|A&255,this.firstByte[h]=this.firstByte[I],h++,h>=p+1&&m<12&&(m++,p=p<<1|1)),I=v;}}}};T.decodeBackend=null;var J=T;var Mt=826558295,Lt=1,Ae=4,et=9;function _e(){return {name:"wtfgif-rust-wasm",isAvailable:()=>O()!==null,prepareFrames:(t,e)=>Tt(t,e)}}function Tt(t,e){let r=O();if(!r)return null;let n=new r.WtfGifCore(t);try{let a=JSON.parse(n.metadata_json()),i=jt(e.frameIndices,a.frame_count);if(e.composited)return Nt(n,a,e,i);let d=[],o=new Map,l=0;for(let s of i){let f=a.frames[s];if(!f)throw new Error("Frame index out of range.");let u=Yt(n.decode_frame_indices(s)),c=te(t,f.palette_offset,f.palette_size,e.format,f.transparent_index),h=u.byteLength+c.byteLength;l+=h,Pe(l,e.maxBytes),o.set(s,f.transparent_index),d.push({index:s,x:f.x,y:f.y,width:f.width,height:f.height,delay:f.delay,disposal:f.disposal,byteLength:h,isFullCanvas:!1,indices:u,palette:c});}return rt(a.width,a.height,e.format,!1,d,l,e.maxBytes??null,o,n)}catch(a){throw n.free(),a}}function Nt(t,e,r,n){let a=Ht(n,e.frame_count),i=e.width*e.height,d=r.deltas?Wt(tt(r.format==="rgba"?t.prepare_composited_delta_rgba(a):t.prepare_composited_delta_bgra(a)),i):Dt(tt(r.format==="rgba"?t.prepare_composited_rgba(a):t.prepare_composited_bgra(a)),a,i),o=[],l=r.dedupe==="all"?new Map:null,s=r.dedupe??"adjacent",f=new Map,u=0,c=null;for(let h of d){let m=h.index,p=e.frames[m];if(!p)throw new Error("Frame index out of range.");let y=h.pixels;if(y.length!==i)throw new Error("Prepared frame buffer is shorter than expected.");let b=null,g,w=0;l?(w=$t(y),g=l.get(w),b=Xt(y,g)):s==="adjacent"&&c&&(r.deltas?h.changedRect===null:at(c,y))&&(b=c);let x=h.changedRect,C=h.changedPixels,B=C?.byteLength??0,R=0;b?(Pe(u+B,r.maxBytes),u+=B):(Pe(u+y.byteLength+B,r.maxBytes),b=y,R=b.byteLength,u+=R+B,l&&(g?g.push(b):l.set(w,[b]))),o.push({index:m,x:0,y:0,width:e.width,height:e.height,delay:p.delay,disposal:p.disposal,byteLength:R+B,isFullCanvas:true,...x?{changedX:x.x,changedY:x.y,changedWidth:x.width,changedHeight:x.height,changedPixels:C}:{},pixels:b}),c=b;}return rt(e.width,e.height,r.format,true,o,u,r.maxBytes??null,f,t)}function Dt(t,e,r){let n=[],a=0;for(let i=0;i<e.length;i++){if(e[i]===0)continue;let d=t.subarray(a,a+r);a+=r,n.push({index:i,pixels:d,changedRect:null});}if(a!==t.length)throw new Error("Prepared frame buffer has unused pixels.");return n}function Wt(t,e){if(t.length<Ae)throw new Error("Native composited delta buffer is too short.");if(t[0]!==Mt)throw new Error("Native composited delta buffer has an invalid header.");if(t[1]!==Lt)throw new Error("Unsupported native composited delta buffer version.");let r=t[2]??0;if((t[3]??0)!==e)throw new Error("Native composited delta canvas size mismatch.");if(Ae+r*et>t.length)throw new Error("Native composited delta frame table is truncated.");let i=[];for(let d=0;d<r;d++){let o=Ae+d*et,l=t[o]??0,s=t[o+1]??0,f=t[o+2]??0,u=t[o+3]??0,c=t[o+4]??0,h=t[o+5]??0,m=t[o+6]??0,p=t[o+7]??0,y=t[o+8]??0;if(f!==e||s+f>t.length)throw new Error("Native composited delta full frame is invalid.");if(p+y>t.length)throw new Error("Native composited delta pixels are invalid.");if(y!==h*m)throw new Error("Native composited delta rectangle is invalid.");i.push({index:l,pixels:t.subarray(s,s+f),changedRect:y>0?{x:u,y:c,width:h,height:m}:null,changedPixels:y>0?t.subarray(p,p+y):void 0});}return i}function rt(t,e,r,n,a,i,d,o,l){let s=-1;for(let h of a)h.index>s&&(s=h.index);let f=new Array(s+1);for(let h of a)f[h.index]=h;let u=(h,m)=>{let p=f[h];if(!p)throw new Error("Frame index out of range.");St(t,e,p,o.get(h),m);},c=false;return {width:t,height:e,format:r,composited:n,frames:a,byteLength:i,maxBytes:d,getFrame:h=>f[h],getFramePixels:h=>f[h]?.pixels,getFrameBytes:h=>{let m=f[h]?.pixels;return m?new Uint8Array(m.buffer,m.byteOffset,m.byteLength):void 0},copyFrame:u,createPlayer:h=>zt(t,e,f,o,h),dispose:()=>{c||(c=true,f.length=0,a.length=0,l.free());}}}function zt(t,e,r,n,a){let i=a?it(a,t,e):new Uint32Array(t*e),d=-1,o=l=>{let s=r[l];if(!s)throw new Error("Frame index out of range.");let f=r[d];if(d===l-1&&f?.pixels===s.pixels)return d=l,i;let u=s.changedPixels?.length??0,c=s.pixels?.length??i.length;return s.changedPixels&&s.changedX!==void 0&&s.changedY!==void 0&&s.changedWidth!==void 0&&s.changedHeight!==void 0&&u<=c>>>3&&d===l-1?qt(s.changedPixels,i,t,s.changedX,s.changedY,s.changedWidth,s.changedHeight):nt(t,s,n.get(l),i),d=l,i};return {target:i,get currentIndex(){return d},drawFrame:o,next:()=>{let l=d+1;return r[l]?o(l):i},reset:()=>{d=-1,i.fill(0);}}}function St(t,e,r,n,a){let i=it(a,t,e);nt(t,r,n,i);}function nt(t,e,r,n){if(e.pixels){n.set(e.pixels);return}let a=e.indices,i=e.palette,d=r??256,o=0,l=e.y*t+e.x,s=t-e.width;for(let f=0;f<e.height;f++){for(let u=0;u<e.width;u++){let c=a[o++];c!==d&&(n[l]=i[c]),l++;}l+=s;}}function it(t,e,r){let n=e*r;if(t instanceof Uint32Array){if(t.length<n)throw new Error(`Buffer too small: need ${n*4} bytes, got ${t.byteLength}`);return t}if(t.byteLength<n*4)throw new Error(`Buffer too small: need ${n*4} bytes, got ${t.byteLength}`);return new Uint32Array(t.buffer,t.byteOffset,n)}function qt(t,e,r,n,a,i,d){for(let o=0;o<d;o++){let l=o*i,s=(a+o)*r+n;e.set(t.subarray(l,l+i),s);}}function $t(t){let e=2166136261;for(let r=0;r<t.length;r++)e^=t[r],e=Math.imul(e,16777619);return e>>>0}function Xt(t,e){if(!e)return null;for(let r of e)if(r.length===t.length&&at(r,t))return r;return null}function at(t,e){if(t.length!==e.length)return false;for(let r=0;r<t.length;r++)if(t[r]!==e[r])return false;return true}function Ht(t,e){if(t.length===0)return new Uint8Array(0);let r=Math.max(...t);if(r>=e)throw new Error("Frame index out of range.");let n=new Uint8Array(r+1);for(let a of t)n[a]=1;return n}function jt(t,e){if(!t)return Array.from({length:e},(a,i)=>i);let r=new Set,n=[];for(let a of t){if(!Number.isInteger(a))throw new Error("Frame index out of range.");let i=a|0;if(i<0||i>=e)throw new Error("Frame index out of range.");r.has(i)||(r.add(i),n.push(i));}return n}function Pe(t,e){if(e!==void 0&&t>e)throw new Error(`Prepared frame cache exceeds maxBytes (${t} > ${e}).`)}function Yt(t){return t instanceof Uint8Array?t:Uint8Array.from(t)}function tt(t){return t instanceof Uint32Array?t:Uint32Array.from(t)}var Ie=[78,69,84,83,67,65,80,69,50,46,48],Jt=[65,78,73,77,69,88,84,83,49,46,48],ne=class t{constructor(e,r=null,n=null,a=false){this.layout=e,this.width=e.width,this.height=e.height,this.frameCount=e.frames.length,this.requestedDelays=r,this.requestedLoopCount=n,this.hasLoopOverride=a,this.delays=r??Object.freeze(e.frames.map(i=>i.delay)),this.loopCount=a?n:e.loopCount,this.canReorderFrames=e.frameReorderError===null;}static from(e){return new t(Kt(e))}withDelays(e){let r=Qt(e,this.frameCount);return new t(this.layout,r,this.requestedLoopCount,this.hasLoopOverride)}withLoop(e){return ve(e,"Loop count"),new t(this.layout,this.requestedDelays,e,true)}reorderFrames(e){let r=Zt(e,this.frameCount);if(this.requestedDelays!==null||this.hasLoopOverride)return K(this.toUint8Array()).reorderFrames(r);if(this.layout.frameReorderError!==null)throw new Error(`GIF frames cannot be reordered pixel-perfectly: ${this.layout.frameReorderError}`);return ir(this.layout,r)}reverseFrames(){return this.reorderFrames(Array.from({length:this.frameCount},(e,r)=>this.frameCount-r-1))}boomerangFrames(){return this.reorderFrames(Array.from({length:this.frameCount*2},(e,r)=>r<this.frameCount?r:this.frameCount*2-r-1))}toUint8Array(){let{layout:e}=this;if(this.requestedDelays===null&&!this.hasLoopOverride)return e.source.slice();let r=new Map,n=new Map,a=false;if(this.hasLoopOverride){let i=this.requestedLoopCount;if(e.loopCountOffsets.length===0)lt(n,e.extensionInsertionOffset,rr(i)),a=true;else for(let d of e.loopCountOffsets)st(r,d,i);}if(this.requestedDelays!==null)for(let i=0;i<e.frames.length;i++){let d=e.frames[i],o=this.requestedDelays[i];d.delayOffset===null?(lt(n,d.imageOffset,tr(o)),a=true):st(r,d.delayOffset,o);}return a&&e.isGif87a&&r.set(4,57),nr(e.source,r,n)}};function K(t){return ne.from(t)}function dt(t,e){return K(t).withDelays(e).toUint8Array()}function ft(t){return K(t).reverseFrames()}function ut(t){return K(t).boomerangFrames()}function Kt(t){let e=new Uint8Array(t.length);e.set(t);let r=e.length;if(r<13)throw new Error("Unexpected end of GIF data.");let n=e[0]===71&&e[1]===73&&e[2]===70&&e[3]===56&&e[4]===55&&e[5]===97,a=e[0]===71&&e[1]===73&&e[2]===70&&e[3]===56&&e[4]===57&&e[5]===97;if(!n&&!a)throw new Error("Invalid GIF 87a/89a header.");let i=S(e,6),d=S(e,8),o=e[10],s=13+(o&128?3*(1<<(o&7)+1):0);N(e,s,0);let f=s,u=[],c=[],h=null,m=null,p=0,y=null,b=null,g=0,w=false,x=false,C=false,B=false;for(;s<r;){let G=s,I=e[s++];if(I===59){B=true;break}if(I===33){N(e,s,1);let L=e[s++];if(L===249){if(N(e,s,6),e[s]!==4||e[s+5]!==0)throw new Error("Invalid graphics extension block.");y!==null&&(C=true),y=G,b=s+6,m=s+2,p=S(e,m);let P=e[s+1];g=P>>>2&7,w=(P&1)!==0,s+=6;continue}if(L===255){let P=Vt(e,s);P!==null&&(c.push(P.loopCountOffset),h=S(e,P.loopCountOffset));}s=ot(e,s),L===1&&(x=true,y=null,b=null,m=null,p=0,g=0,w=false);continue}if(I===44){N(e,s,9);let L=e[s+8];if(s+=9,L&128){let F=3*(1<<(L&7)+1);N(e,s,F),s+=F;}N(e,s,1),s++,s=ot(e,s);let P=s,k=S(e,G+1),_=S(e,G+3),v=S(e,G+5),A=S(e,G+7);u.push({imageOffset:G,imageEndOffset:P,controlOffset:y,controlEndOffset:b,delayOffset:m,delay:p,disposal:g,hasTransparency:w,isFullCanvas:k===0&&_===0&&v===i&&A===d}),y=null,b=null,m=null,p=0,g=0,w=false;continue}throw new Error(`Unknown GIF block at byte ${G}: 0x${I.toString(16)}`)}if(!B)throw new Error("GIF data is missing its trailer.");let R=er(e,u,x,C);return {source:e,width:i,height:d,frames:u,loopCount:h,loopCountOffsets:c,extensionInsertionOffset:f,isGif87a:n,frameReorderError:R}}function Vt(t,e){if(t[e]!==Ie.length)return null;N(t,e,12);let r=a=>a.every((i,d)=>t[e+1+d]===i);if(!r(Ie)&&!r(Jt))return null;let n=e+12;return N(t,n,5),t[n]!==3||t[n+1]!==1||t[n+4]!==0?null:{loopCountOffset:n+2}}function ot(t,e){for(;;){N(t,e,1);let r=t[e++];if(r===0)return e;N(t,e,r),e+=r;}}function N(t,e,r){if(e<0||r<0||e>t.length-r)throw new Error("Unexpected end of GIF data.")}function S(t,e){return N(t,e,2),(t[e]|t[e+1]<<8)>>>0}function ve(t,e){if(!Number.isInteger(t)||t<0||t>65535)throw new RangeError(`${e} must be an integer from 0 to 65535.`)}function Qt(t,e){if(typeof t=="number")return ve(t,"Frame delay"),Object.freeze(Array.from({length:e},()=>t));if(t.length!==e)throw new RangeError(`Expected ${e} frame delays, received ${t.length}.`);let r=Array.from(t);for(let n of r)ve(n,"Frame delay");return Object.freeze(r)}function Zt(t,e){if(!Number.isInteger(t.length)||t.length<1)throw new RangeError("Frame order must contain at least one frame.");let r=Array.from(t);for(let n of r)if(!Number.isInteger(n)||n<0||n>=e)throw new RangeError(`Frame index ${n} is outside 0...${Math.max(0,e-1)}.`);return r}function er(t,e,r,n){if(e.length===0)return "the GIF has no image frames";if(r)return "Plain Text is a rendering block and cannot be moved safely";if(n)return "multiple graphic controls target one rendering block";for(let o=0;o<e.length;o++){let l=e[o];if(l.controlOffset===null||l.controlEndOffset===null)return `frame ${o} has no graphic control block`;if(l.controlEndOffset!==l.imageOffset)return `frame ${o} has extensions between its control and image`;if(!l.isFullCanvas)return `frame ${o} is not an exact full-canvas image`;if(l.disposal>3)return `frame ${o} uses reserved disposal ${l.disposal}`;if(o>0&&e[o-1].imageEndOffset!==l.controlOffset)return `frame ${o} is separated by anchored metadata`}let a=e[e.length-1];if(t[a.imageEndOffset]!==59)return "metadata follows the last image before the trailer";let i=e.every(o=>!o.hasTransparency),d=e.every(o=>o.disposal===2||o.disposal===3);return !i&&!d?"transparent frames depend on the original canvas order":null}function tr(t){return Uint8Array.of(33,249,4,0,t&255,t>>>8&255,0,0)}function rr(t){return Uint8Array.of(33,255,11,...Ie,3,1,t&255,t>>>8&255,0)}function st(t,e,r){t.set(e,r&255),t.set(e+1,r>>>8&255);}function lt(t,e,r){let n=t.get(e);n?n.push(r):t.set(e,[r]);}function nr(t,e,r){let n=t.slice();for(let[s,f]of e)n[s]=f;if(r.size===0)return n;let a=t.length;for(let s of r.values())for(let f of s)a+=f.length;let i=new Uint8Array(a),d=0,o=0,l=[...r.keys()].sort((s,f)=>s-f);for(let s of l){let f=n.subarray(o,s);i.set(f,d),d+=f.length;for(let u of r.get(s))i.set(u,d),d+=u.length;o=s;}return i.set(n.subarray(o),d),i}function ir(t,e){let r=t.frames[0],n=t.frames[t.frames.length-1],a=r.controlOffset,i=n.imageEndOffset,d=a+(t.source.length-i);for(let s of e){let f=t.frames[s];if(d+=f.imageEndOffset-f.controlOffset,!Number.isSafeInteger(d))throw new RangeError("Reordered GIF would be too large.")}let o=new Uint8Array(d),l=0;o.set(t.source.subarray(0,a),l),l+=a;for(let s of e){let f=t.frames[s],u=t.source.subarray(f.controlOffset,f.imageEndOffset);o.set(u,l),l+=u.length;}return o.set(t.source.subarray(i),l),o}var ct=new Uint8Array([71,73,70,56,57,97,2,0,2,0,128,0,0,0,0,0,255,255,255,44,0,0,0,0,2,0,2,0,0,2,3,68,24,20,0,59]),ht=()=>{let t=O()?.remux_hot_path_primer?.(),e=t?new Uint8Array(t):void 0;for(let r=0;r<64;r++)oe(ct),exports.remuxGifPixelPerfect(ct),e&&exports.remuxGifPixelPerfect(e);},ue=()=>{Le(O()),mt.remuxGifPixelPerfect=exports.remuxGifPixelPerfect;},ar=async t=>{await Ee(t),ue(),ht();},or=async(t,e)=>{await Be(t,e),ue(),ht();},sr=t=>{H(t),ue();},lr=()=>{ke(),ue();},dr=()=>{let t=_e();return J.setDecodeBackend(t),J.getDecodeBackendStatus()};var mt={encodeIndexedGifFrames:He,encodeRgbaGifFrames:je,GifWriter:re,GifReader:J,initializeWasmGlobally:ar,initializeWasmModule:or,getWasmStatus:Re,cleanupWasm:lr,setWasmCoreModule:sr,createWasmCoreDecodeBackend:_e,installWasmCoreBackend:dr,setNativeAddonModule:Te,getNativeAddonStatus:Ne,getFastBackendStatus:De,decodeGifFramesRgba:pe,remuxGifPixelPerfect:exports.remuxGifPixelPerfect,reencodeGifPixelPerfect:oe,CompiledGif:ne,compileGif:K,reverseGifPixelPerfect:ft,boomerangGifPixelPerfect:ut,retimeGifPixelPerfect:dt};typeof window<"u"&&(window.wtfgif=mt);exports.CompiledGif=ne;exports.GifReader=J;exports.GifWriter=re;exports.boomerangGifPixelPerfect=ut;exports.cleanupWasm=lr;exports.compileGif=K;exports.createWasmCoreDecodeBackend=_e;exports.decodeGifFramesRgba=pe;exports.encodeIndexedGifFrames=He;exports.encodeRgbaGifFrames=je;exports.getFastBackendStatus=De;exports.getNativeAddonStatus=Ne;exports.getWasmStatus=Re;exports.initializeWasmGlobally=ar;exports.initializeWasmModule=or;exports.installWasmCoreBackend=dr;exports.reencodeGifPixelPerfect=oe;exports.retimeGifPixelPerfect=dt;exports.reverseGifPixelPerfect=ft;exports.setNativeAddonModule=Te;exports.setWasmCoreModule=sr;//# sourceMappingURL=index.cjs.map
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|