From b5bd766a4e6bc594df5bb270a7474e8aa0162683 Mon Sep 17 00:00:00 2001 From: Surma Date: Wed, 7 Aug 2024 18:48:23 +0100 Subject: [PATCH] Build webp --- codecs/webp/Makefile | 16 + codecs/webp/flake.nix | 168 +- .../webp/wasm_build/{ => base}/dec/README.md | 0 .../wasm_build/{ => base}/dec/example.html | 0 .../wasm_build/{ => base}/dec/webp_dec.cpp | 0 .../wasm_build/{ => base}/dec/webp_dec.d.ts | 0 codecs/webp/wasm_build/base/dec/webp_dec.js | 16 + codecs/webp/wasm_build/base/dec/webp_dec.wasm | Bin 0 -> 130508 bytes .../webp/wasm_build/{ => base}/enc/README.md | 0 .../wasm_build/{ => base}/enc/example.html | 0 .../wasm_build/{ => base}/enc/webp_enc.cpp | 0 .../wasm_build/{ => base}/enc/webp_enc.d.ts | 0 codecs/webp/wasm_build/base/enc/webp_enc.js | 16 + codecs/webp/wasm_build/base/enc/webp_enc.wasm | Bin 0 -> 270725 bytes .../{ => base}/enc/webp_enc_simd.d.ts | 0 codecs/webp/wasm_build/dec/webp_dec.js | 2997 ---------------- codecs/webp/wasm_build/dec/webp_dec.wasm | Bin 161723 -> 0 bytes codecs/webp/wasm_build/enc/webp_enc.js | 3173 ----------------- codecs/webp/wasm_build/enc/webp_enc.wasm | Bin 309467 -> 0 bytes codecs/webp/wasm_build/simd/dec/README.md | 18 + codecs/webp/wasm_build/simd/dec/example.html | 20 + codecs/webp/wasm_build/simd/dec/webp_dec.cpp | 29 + codecs/webp/wasm_build/simd/dec/webp_dec.d.ts | 7 + codecs/webp/wasm_build/simd/dec/webp_dec.js | 16 + codecs/webp/wasm_build/simd/dec/webp_dec.wasm | Bin 0 -> 278321 bytes codecs/webp/wasm_build/simd/enc/README.md | 22 + codecs/webp/wasm_build/simd/enc/example.html | 58 + codecs/webp/wasm_build/simd/enc/webp_enc.cpp | 85 + codecs/webp/wasm_build/simd/enc/webp_enc.d.ts | 42 + codecs/webp/wasm_build/simd/enc/webp_enc.js | 16 + codecs/webp/wasm_build/simd/enc/webp_enc.wasm | Bin 0 -> 437317 bytes .../wasm_build/simd/enc/webp_enc_simd.d.ts | 1 + nix/for-each-option.nix | 6 + .../decoders/webp/worker/webpDecode.ts | 4 +- src/features/encoders/webP/shared/meta.ts | 2 +- .../encoders/webP/worker/webpEncode.ts | 8 +- src/sw/to-cache.ts | 6 +- 37 files changed, 473 insertions(+), 6253 deletions(-) rename codecs/webp/wasm_build/{ => base}/dec/README.md (100%) rename codecs/webp/wasm_build/{ => base}/dec/example.html (100%) rename codecs/webp/wasm_build/{ => base}/dec/webp_dec.cpp (100%) rename codecs/webp/wasm_build/{ => base}/dec/webp_dec.d.ts (100%) create mode 100644 codecs/webp/wasm_build/base/dec/webp_dec.js create mode 100755 codecs/webp/wasm_build/base/dec/webp_dec.wasm rename codecs/webp/wasm_build/{ => base}/enc/README.md (100%) rename codecs/webp/wasm_build/{ => base}/enc/example.html (100%) rename codecs/webp/wasm_build/{ => base}/enc/webp_enc.cpp (100%) rename codecs/webp/wasm_build/{ => base}/enc/webp_enc.d.ts (100%) create mode 100644 codecs/webp/wasm_build/base/enc/webp_enc.js create mode 100755 codecs/webp/wasm_build/base/enc/webp_enc.wasm rename codecs/webp/wasm_build/{ => base}/enc/webp_enc_simd.d.ts (100%) delete mode 100644 codecs/webp/wasm_build/dec/webp_dec.js delete mode 100755 codecs/webp/wasm_build/dec/webp_dec.wasm delete mode 100644 codecs/webp/wasm_build/enc/webp_enc.js delete mode 100755 codecs/webp/wasm_build/enc/webp_enc.wasm create mode 100644 codecs/webp/wasm_build/simd/dec/README.md create mode 100644 codecs/webp/wasm_build/simd/dec/example.html create mode 100644 codecs/webp/wasm_build/simd/dec/webp_dec.cpp create mode 100644 codecs/webp/wasm_build/simd/dec/webp_dec.d.ts create mode 100644 codecs/webp/wasm_build/simd/dec/webp_dec.js create mode 100755 codecs/webp/wasm_build/simd/dec/webp_dec.wasm create mode 100644 codecs/webp/wasm_build/simd/enc/README.md create mode 100644 codecs/webp/wasm_build/simd/enc/example.html create mode 100644 codecs/webp/wasm_build/simd/enc/webp_enc.cpp create mode 100644 codecs/webp/wasm_build/simd/enc/webp_enc.d.ts create mode 100644 codecs/webp/wasm_build/simd/enc/webp_enc.js create mode 100755 codecs/webp/wasm_build/simd/enc/webp_enc.wasm create mode 100644 codecs/webp/wasm_build/simd/enc/webp_enc_simd.d.ts create mode 100644 nix/for-each-option.nix diff --git a/codecs/webp/Makefile b/codecs/webp/Makefile index 17ea9d7e8..94add14f5 100644 --- a/codecs/webp/Makefile +++ b/codecs/webp/Makefile @@ -18,6 +18,14 @@ LIBWEBP_FLAGS = -I${WEBP}/include -L${WEBP}/lib -lwebp $(OUT_JS): $(LD) \ + -O3 \ + -flto \ + -std=c++17 \ + -s FILESYSTEM=0 \ + -s PTHREAD_POOL_SIZE=navigator.hardwareConcurrency \ + -s ALLOW_MEMORY_GROWTH=1 \ + -s TEXTDECODER=2 \ + -s NODEJS_CATCH_EXIT=0 -s NODEJS_CATCH_REJECTION=0 \ $(LIBWEBP_FLAGS) \ $(LDFLAGS) \ -lembind \ @@ -28,6 +36,14 @@ $(OUT_JS): %.o: %.cpp $(CXX) -c \ + -O3 \ + -flto \ + -std=c++17 \ + -s FILESYSTEM=0 \ + -s PTHREAD_POOL_SIZE=navigator.hardwareConcurrency \ + -s ALLOW_MEMORY_GROWTH=1 \ + -s TEXTDECODER=2 \ + -s NODEJS_CATCH_EXIT=0 -s NODEJS_CATCH_REJECTION=0 \ $(LIBWEBP_FLAGS) \ $(CXXFLAGS) \ -o $@ \ diff --git a/codecs/webp/flake.nix b/codecs/webp/flake.nix index 1083c0885..89ba386ba 100644 --- a/codecs/webp/flake.nix +++ b/codecs/webp/flake.nix @@ -14,92 +14,112 @@ flake-utils, webp-src, }: + let + optionSets = { + base = { + simd = false; + }; + simd = { + simd = true; + }; + }; + in flake-utils.lib.eachDefaultSystem ( system: let pkgs = nixpkgs.legacyPackages.${system}; - in - with pkgs; - rec { - packages = rec { - default = webp-squoosh; - webp-squoosh = stdenv.mkDerivation { - name = "mozjpeg-squoosh"; - # Only copy files that are actually relevant to avoid unnecessary - # cache invalidations. - src = runCommand "src" { } '' - mkdir $out - cp -r ${./.}/enc $out/ - cp -r ${./.}/dec $out/ - cp ${./.}/Makefile $out/ - ''; - nativeBuildInputs = [ - emscripten - webp - ]; - WEBP = webp; - dontConfigure = true; - buildPhase = '' - export HOME=$TMPDIR - emmake make -j$(nproc) - ''; - installPhase = '' - mkdir -p $out - cp -r enc dec $out + packageBuilder = + with pkgs; + name: + { simd }: + { + "webp-squoosh-${name}" = stdenv.mkDerivation { + name = "webp-squoosh-${name}"; + # Only copy files that are actually relevant to avoid unnecessary + # cache invalidations. + src = runCommand "src" { } '' + mkdir $out + cp -r ${./.}/enc $out/ + cp -r ${./.}/dec $out/ + cp ${./.}/Makefile $out/ + ''; + nativeBuildInputs = [ + emscripten + self.packages.${system}."webp-${name}" + ]; + WEBP = self.packages.${system}."webp-${name}"; + dontConfigure = true; + buildPhase = '' + export HOME=$TMPDIR + emmake make -j$(nproc) + ''; + installPhase = '' + mkdir -p $out + cp -r enc dec $out + ''; + }; + "webp-${name}" = stdenv.mkDerivation { + name = "webp-${name}"; + src = webp-src; + nativeBuildInputs = [ + emscripten + cmake + ]; + configurePhase = '' + # $HOME is required for Emscripten to work. + # See: https://nixos.org/manual/nixpkgs/stable/#emscripten + export HOME=$TMPDIR + mkdir -p $TMPDIR/build + emcmake cmake \ + -DCMAKE_INSTALL_PREFIX=$out \ + -DCMAKE_DISABLE_FIND_PACKAGE_Threads=1 \ + -DWEBP_BUILD_ANIM_UTILS=0 \ + -DWEBP_BUILD_CWEBP=0 \ + -DWEBP_BUILD_DWEBP=0 \ + -DWEBP_BUILD_GIF2WEBP=0 \ + -DWEBP_BUILD_IMG2WEBP=0 \ + -DWEBP_BUILD_VWEBP=0 \ + -DWEBP_BUILD_WEBPINFO=0 \ + -DWEBP_BUILD_WEBPMUX=0 \ + -DWEBP_BUILD_EXTRAS=0 \ + ${if simd then "-DWEBP_ENABLE_SIMD=1" else ""} \ + -B $TMPDIR/build \ + . + ''; + buildPhase = '' + export HOME=$TMPDIR + cd $TMPDIR/build + emmake make V=1 -j$(nproc) --trace + ''; + installPhase = '' + cd $TMPDIR/build + make install + ''; + dontFixup = true; + }; + "install-${name}" = writeShellScriptBin "install.sh" '' + ${pkgs.coreutils}/bin/mkdir -p wasm_build/${name} + ${pkgs.rsync}/bin/rsync --chmod=u+w -r ${ + self.packages.${system}."webp-squoosh-${name}" + }/* wasm_build/${name} ''; }; - webp = stdenv.mkDerivation { - name = "webp"; - src = webp-src; - nativeBuildInputs = [ - # autoconf - # automake - # libtool - emscripten - # pkg-config - cmake - ]; - configurePhase = '' - # $HOME is required for Emscripten to work. - # See: https://nixos.org/manual/nixpkgs/stable/#emscripten - export HOME=$TMPDIR - mkdir -p $TMPDIR/build - emcmake cmake \ - -DCMAKE_INSTALL_PREFIX=$out \ - -DCMAKE_DISABLE_FIND_PACKAGE_Threads=1 \ - -DWEBP_BUILD_ANIM_UTILS=0 \ - -DWEBP_BUILD_CWEBP=0 \ - -DWEBP_BUILD_DWEBP=0 \ - -DWEBP_BUILD_GIF2WEBP=0 \ - -DWEBP_BUILD_IMG2WEBP=0 \ - -DWEBP_BUILD_VWEBP=0 \ - -DWEBP_BUILD_WEBPINFO=0 \ - -DWEBP_BUILD_WEBPMUX=0 \ - -DWEBP_BUILD_EXTRAS=0 \ - -B $TMPDIR/build \ - . - ''; - buildPhase = '' - export HOME=$TMPDIR - cd $TMPDIR/build - emmake make V=1 -j$(nproc) --trace - ''; - installPhase = '' - cd $TMPDIR/build - make install - ''; - dontFixup = true; - }; + + forEachOption = pkgs.callPackage (import ../../nix/for-each-option.nix) { }; + packageVariants = forEachOption packageBuilder optionSets; + in + with pkgs; + { + packages = packageVariants // { installScript = writeShellScriptBin "install.sh" '' - ${pkgs.coreutils}/bin/rm -rf wasm_build - ${pkgs.coreutils}/bin/mkdir -p wasm_build - ${pkgs.rsync}/bin/rsync --chmod=u+w -r ${webp-squoosh}/* wasm_build/ + ${self.packages.${system}.install-base}/bin/install.sh + ${self.packages.${system}.install-simd}/bin/install.sh ''; }; apps = { install = { type = "app"; - program = "${packages.installScript}/bin/install.sh"; + program = "${self.packages.${system}.installScript}/bin/install.sh"; }; }; } diff --git a/codecs/webp/wasm_build/dec/README.md b/codecs/webp/wasm_build/base/dec/README.md similarity index 100% rename from codecs/webp/wasm_build/dec/README.md rename to codecs/webp/wasm_build/base/dec/README.md diff --git a/codecs/webp/wasm_build/dec/example.html b/codecs/webp/wasm_build/base/dec/example.html similarity index 100% rename from codecs/webp/wasm_build/dec/example.html rename to codecs/webp/wasm_build/base/dec/example.html diff --git a/codecs/webp/wasm_build/dec/webp_dec.cpp b/codecs/webp/wasm_build/base/dec/webp_dec.cpp similarity index 100% rename from codecs/webp/wasm_build/dec/webp_dec.cpp rename to codecs/webp/wasm_build/base/dec/webp_dec.cpp diff --git a/codecs/webp/wasm_build/dec/webp_dec.d.ts b/codecs/webp/wasm_build/base/dec/webp_dec.d.ts similarity index 100% rename from codecs/webp/wasm_build/dec/webp_dec.d.ts rename to codecs/webp/wasm_build/base/dec/webp_dec.d.ts diff --git a/codecs/webp/wasm_build/base/dec/webp_dec.js b/codecs/webp/wasm_build/base/dec/webp_dec.js new file mode 100644 index 000000000..c14bbc025 --- /dev/null +++ b/codecs/webp/wasm_build/base/dec/webp_dec.js @@ -0,0 +1,16 @@ + +var Module = (() => { + var _scriptDir = import.meta.url; + + return ( +function(moduleArg = {}) { + +var Module=moduleArg;var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=true;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";var isDataURI=filename=>filename.startsWith(dataURIPrefix);var wasmBinaryFile;if(Module["locateFile"]){wasmBinaryFile="webp_dec.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}}else{wasmBinaryFile=new URL("webp_dec.wasm",import.meta.url).href}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}function getBinaryPromise(binaryFile){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{if(!response["ok"]){throw"failed to load wasm binary file at '"+binaryFile+"'"}return response["arrayBuffer"]()}).catch(()=>getBinarySync(binaryFile))}}return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(instance=>instance).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}return instantiateArrayBuffer(binaryFile,imports,callback)}function createWasm(){var info={"a":wasmImports};function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports["u"];updateMemoryViews();wasmTable=wasmExports["y"];addOnInit(wasmExports["v"]);removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);readyPromiseReject(e)}}instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult).catch(readyPromiseReject);return{}}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var noExitRuntime=Module["noExitRuntime"]||true;function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){HEAPU32[this.ptr+4>>2]=type};this.get_type=function(){return HEAPU32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAPU32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAPU32[this.ptr+8>>2]};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)};this.set_adjusted_ptr=function(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr};this.get_adjusted_ptr=function(){return HEAPU32[this.ptr+16>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var exceptionLast=0;var uncaughtExceptionCount=0;var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast};var __embind_register_bigint=(primitiveType,name,size,minRange,maxRange)=>{};var embind_init_charCodes=()=>{var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes};var embind_charCodes;var readLatin1String=ptr=>{var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret};var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var BindingError;var throwBindingError=message=>{throw new BindingError(message)};var InternalError;var throwInternalError=message=>{throw new InternalError(message)};var whenDependentTypesAreResolved=(myTypes,dependentTypes,getTypeConverters)=>{myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i{if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt]}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[]}awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters)}})}});if(0===unregisteredTypes.length){onComplete(typeConverters)}};function sharedRegisterType(rawType,registeredInstance,options={}){var name=registeredInstance.name;if(!rawType){throwBindingError(`type "${name}" must have a positive integer typeid pointer`)}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError(`Cannot register type '${name}' twice`)}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb())}}function registerType(rawType,registeredInstance,options={}){if(!("argPackAdvance"in registeredInstance)){throw new TypeError("registerType registeredInstance requires argPackAdvance")}return sharedRegisterType(rawType,registeredInstance,options)}var GenericWireTypeSize=8;var __embind_register_bool=(rawType,name,trueValue,falseValue)=>{name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(wt){return!!wt},"toWireType":function(destructors,o){return o?trueValue:falseValue},"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":function(pointer){return this["fromWireType"](HEAPU8[pointer])},destructorFunction:null})};function handleAllocatorInit(){Object.assign(HandleAllocator.prototype,{get(id){return this.allocated[id]},has(id){return this.allocated[id]!==undefined},allocate(handle){var id=this.freelist.pop()||this.allocated.length;this.allocated[id]=handle;return id},free(id){this.allocated[id]=undefined;this.freelist.push(id)}})}function HandleAllocator(){this.allocated=[undefined];this.freelist=[]}var emval_handles=new HandleAllocator;var __emval_decref=handle=>{if(handle>=emval_handles.reserved&&0===--emval_handles.get(handle).refcount){emval_handles.free(handle)}};var count_emval_handles=()=>{var count=0;for(var i=emval_handles.reserved;i{emval_handles.allocated.push({value:undefined},{value:null},{value:true},{value:false});emval_handles.reserved=emval_handles.allocated.length;Module["count_emval_handles"]=count_emval_handles};var Emval={toValue:handle=>{if(!handle){throwBindingError("Cannot use deleted val. handle = "+handle)}return emval_handles.get(handle).value},toHandle:value=>{switch(value){case undefined:return 1;case null:return 2;case true:return 3;case false:return 4;default:{return emval_handles.allocate({refcount:1,value:value})}}}};function simpleReadValueFromPointer(pointer){return this["fromWireType"](HEAP32[pointer>>2])}var __embind_register_emval=(rawType,name)=>{name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":handle=>{var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":(destructors,value)=>Emval.toHandle(value),"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})};var floatReadValueFromPointer=(name,width)=>{switch(width){case 4:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 8:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError(`invalid float width (${width}): ${name}`)}};var __embind_register_float=(rawType,name,size)=>{name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":value=>value,"toWireType":(destructors,value)=>value,"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":floatReadValueFromPointer(name,size),destructorFunction:null})};var createNamedFunction=(name,body)=>Object.defineProperty(body,"name",{value:name});var runDestructors=destructors=>{while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}};function usesDestructorStack(argTypes){for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns||isAsync?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i{if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(){if(!proto[methodName].overloadTable.hasOwnProperty(arguments.length)){throwBindingError(`Function '${humanName}' called with an invalid number of arguments (${arguments.length}) - expects one of (${proto[methodName].overloadTable})!`)}return proto[methodName].overloadTable[arguments.length].apply(this,arguments)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}};var exposePublicSymbol=(name,value,numArguments)=>{if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError(`Cannot register public name '${name}' twice`)}ensureOverloadTable(Module,name,name);if(Module.hasOwnProperty(numArguments)){throwBindingError(`Cannot register multiple overloads of a function with the same number of arguments (${numArguments})!`)}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;if(undefined!==numArguments){Module[name].numArguments=numArguments}}};var heap32VectorToArray=(count,firstElement)=>{var array=[];for(var i=0;i>2])}return array};var replacePublicSymbol=(name,value,numArguments)=>{if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}};var dynCallLegacy=(sig,ptr,args)=>{var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)};var wasmTableMirror=[];var wasmTable;var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var dynCall=(sig,ptr,args)=>{if(sig.includes("j")){return dynCallLegacy(sig,ptr,args)}var rtn=getWasmTableEntry(ptr).apply(null,args);return rtn};var getDynCaller=(sig,ptr)=>{var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}};var embind__requireFunction=(signature,rawFunction)=>{signature=readLatin1String(signature);function makeDynCaller(){if(signature.includes("j")){return getDynCaller(signature,rawFunction)}return getWasmTableEntry(rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError(`unknown function pointer with signature ${signature}: ${rawFunction}`)}return fp};var extendError=(baseErrorType,errorName)=>{var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return`${this.name}: ${this.message}`}};return errorClass};var UnboundTypeError;var getTypeName=type=>{var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv};var throwUnboundTypeError=(message,types)=>{var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(`${message}: `+unboundTypes.map(getTypeName).join([", "]))};var getFunctionName=signature=>{signature=signature.trim();const argsIndex=signature.indexOf("(");if(argsIndex!==-1){return signature.substr(0,argsIndex)}else{return signature}};var __embind_register_function=(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn,isAsync)=>{var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);name=getFunctionName(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError(`Cannot call ${name} due to unbound types`,argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn,isAsync),argCount-1);return[]})};var integerReadValueFromPointer=(name,width,signed)=>{switch(width){case 1:return signed?pointer=>HEAP8[pointer>>0]:pointer=>HEAPU8[pointer>>0];case 2:return signed?pointer=>HEAP16[pointer>>1]:pointer=>HEAPU16[pointer>>1];case 4:return signed?pointer=>HEAP32[pointer>>2]:pointer=>HEAPU32[pointer>>2];default:throw new TypeError(`invalid integer width (${width}): ${name}`)}};var __embind_register_integer=(primitiveType,name,size,minRange,maxRange)=>{name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=value=>value<>>bitshift}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":integerReadValueFromPointer(name,size,minRange!==0),destructorFunction:null})};var __embind_register_memory_view=(rawType,dataTypeIndex,name)=>{var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){var size=HEAPU32[handle>>2];var data=HEAPU32[handle+4>>2];return new TA(HEAP8.buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})};function readPointer(pointer){return this["fromWireType"](HEAPU32[pointer>>2])}var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var UTF8Decoder=new TextDecoder("utf8");var UTF8ToString=(ptr,maxBytesToRead)=>{if(!ptr)return"";var maxPtr=ptr+maxBytesToRead;for(var end=ptr;!(end>=maxPtr)&&HEAPU8[end];)++end;return UTF8Decoder.decode(HEAPU8.subarray(ptr,end))};var __embind_register_std_string=(rawType,name)=>{name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType"(value){var length=HEAPU32[value>>2];var payload=value+4;var str;if(stdStringIsUTF8){var decodeStartPtr=payload;for(var i=0;i<=length;++i){var currentBytePtr=payload+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+i]=charCode}}else{for(var i=0;i{var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))};var stringToUTF16=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr};var lengthBytesUTF16=str=>str.length*2;var UTF32ToString=(ptr,maxBytesToRead)=>{var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str};var stringToUTF32=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr};var lengthBytesUTF32=str=>{var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len};var __embind_register_std_wstring=(rawType,charSize,name)=>{name=readLatin1String(name);var decodeString,encodeString,getHeap,lengthBytesUTF,shift;if(charSize===2){decodeString=UTF16ToString;encodeString=stringToUTF16;lengthBytesUTF=lengthBytesUTF16;getHeap=()=>HEAPU16;shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=()=>HEAPU32;shift=2}registerType(rawType,{name:name,"fromWireType":value=>{var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":(destructors,value)=>{if(!(typeof value=="string")){throwBindingError(`Cannot pass non-string to C++ string type ${name}`)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction(ptr){_free(ptr)}})};var __embind_register_void=(rawType,name)=>{name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":()=>undefined,"toWireType":(destructors,o)=>undefined})};var emval_methodCallers=[];var __emval_call=(caller,handle,destructorsRef,args)=>{caller=emval_methodCallers[caller];handle=Emval.toValue(handle);return caller(null,handle,destructorsRef,args)};var emval_symbols={};var getStringOrSymbol=address=>{var symbol=emval_symbols[address];if(symbol===undefined){return readLatin1String(address)}return symbol};var emval_get_global=()=>{if(typeof globalThis=="object"){return globalThis}return function(){return Function}()("return this")()};var __emval_get_global=name=>{if(name===0){return Emval.toHandle(emval_get_global())}else{name=getStringOrSymbol(name);return Emval.toHandle(emval_get_global()[name])}};var emval_addMethodCaller=caller=>{var id=emval_methodCallers.length;emval_methodCallers.push(caller);return id};var requireRegisteredType=(rawType,humanName)=>{var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(humanName+" has unknown type "+getTypeName(rawType))}return impl};var emval_lookupTypes=(argCount,argTypes)=>{var a=new Array(argCount);for(var i=0;i>2],"parameter "+i)}return a};var reflectConstruct=Reflect.construct;var emval_returnValue=(returnType,destructorsRef,handle)=>{var destructors=[];var result=returnType["toWireType"](destructors,handle);if(destructors.length){HEAPU32[destructorsRef>>2]=Emval.toHandle(destructors)}return result};var __emval_get_method_caller=(argCount,argTypes,kind)=>{var types=emval_lookupTypes(argCount,argTypes);var retType=types.shift();argCount--;var functionBody=`return function (obj, func, destructorsRef, args) {\n`;var offset=0;var argsList=[];if(kind===0){argsList.push("obj")}var params=["retType"];var args=[retType];for(var i=0;it.name).join(", ")}) => ${retType.name}>`;return emval_addMethodCaller(createNamedFunction(functionName,invokerFunction))};var __emval_incref=handle=>{if(handle>4){emval_handles.get(handle).refcount+=1}};var __emval_run_destructors=handle=>{var destructors=Emval.toValue(handle);runDestructors(destructors);__emval_decref(handle)};var _abort=()=>{abort("")};var _emscripten_memcpy_js=(dest,src,num)=>HEAPU8.copyWithin(dest,src,src+num);var getHeapMax=()=>2147483648;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}var alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};embind_init_charCodes();BindingError=Module["BindingError"]=class BindingError extends Error{constructor(message){super(message);this.name="BindingError"}};InternalError=Module["InternalError"]=class InternalError extends Error{constructor(message){super(message);this.name="InternalError"}};handleAllocatorInit();init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");var wasmImports={p:___cxa_throw,q:__embind_register_bigint,n:__embind_register_bool,t:__embind_register_emval,l:__embind_register_float,c:__embind_register_function,b:__embind_register_integer,a:__embind_register_memory_view,m:__embind_register_std_string,f:__embind_register_std_wstring,o:__embind_register_void,i:__emval_call,d:__emval_decref,e:__emval_get_global,h:__emval_get_method_caller,j:__emval_incref,g:__emval_run_destructors,k:_abort,s:_emscripten_memcpy_js,r:_emscripten_resize_heap};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports["v"])();var _malloc=a0=>(_malloc=wasmExports["w"])(a0);var _free=a0=>(_free=wasmExports["x"])(a0);var ___getTypeName=a0=>(___getTypeName=wasmExports["z"])(a0);var ___errno_location=()=>(___errno_location=wasmExports["__errno_location"])();var ___cxa_increment_exception_refcount=a0=>(___cxa_increment_exception_refcount=wasmExports["__cxa_increment_exception_refcount"])(a0);var ___cxa_is_pointer_type=a0=>(___cxa_is_pointer_type=wasmExports["A"])(a0);var dynCall_jiiii=Module["dynCall_jiiii"]=(a0,a1,a2,a3,a4)=>(dynCall_jiiii=Module["dynCall_jiiii"]=wasmExports["B"])(a0,a1,a2,a3,a4);var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run(); + + + return moduleArg.ready +} +); +})(); +; +export default Module; \ No newline at end of file diff --git a/codecs/webp/wasm_build/base/dec/webp_dec.wasm b/codecs/webp/wasm_build/base/dec/webp_dec.wasm new file mode 100755 index 0000000000000000000000000000000000000000..f85f052c9565fc5c8e007cf7773eff8cb96bd7db GIT binary patch literal 130508 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 literal 0 HcmV?d00001 diff --git a/codecs/webp/wasm_build/enc/README.md b/codecs/webp/wasm_build/base/enc/README.md similarity index 100% rename from codecs/webp/wasm_build/enc/README.md rename to codecs/webp/wasm_build/base/enc/README.md diff --git a/codecs/webp/wasm_build/enc/example.html b/codecs/webp/wasm_build/base/enc/example.html similarity index 100% rename from codecs/webp/wasm_build/enc/example.html rename to codecs/webp/wasm_build/base/enc/example.html diff --git a/codecs/webp/wasm_build/enc/webp_enc.cpp b/codecs/webp/wasm_build/base/enc/webp_enc.cpp similarity index 100% rename from codecs/webp/wasm_build/enc/webp_enc.cpp rename to codecs/webp/wasm_build/base/enc/webp_enc.cpp diff --git a/codecs/webp/wasm_build/enc/webp_enc.d.ts b/codecs/webp/wasm_build/base/enc/webp_enc.d.ts similarity index 100% rename from codecs/webp/wasm_build/enc/webp_enc.d.ts rename to codecs/webp/wasm_build/base/enc/webp_enc.d.ts diff --git a/codecs/webp/wasm_build/base/enc/webp_enc.js b/codecs/webp/wasm_build/base/enc/webp_enc.js new file mode 100644 index 000000000..9a8cd90a7 --- /dev/null +++ b/codecs/webp/wasm_build/base/enc/webp_enc.js @@ -0,0 +1,16 @@ + +var Module = (() => { + var _scriptDir = import.meta.url; + + return ( +function(moduleArg = {}) { + +var Module=moduleArg;var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=true;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";var isDataURI=filename=>filename.startsWith(dataURIPrefix);var wasmBinaryFile;if(Module["locateFile"]){wasmBinaryFile="webp_enc.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}}else{wasmBinaryFile=new URL("webp_enc.wasm",import.meta.url).href}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}function getBinaryPromise(binaryFile){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{if(!response["ok"]){throw"failed to load wasm binary file at '"+binaryFile+"'"}return response["arrayBuffer"]()}).catch(()=>getBinarySync(binaryFile))}}return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(instance=>instance).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}return instantiateArrayBuffer(binaryFile,imports,callback)}function createWasm(){var info={"a":wasmImports};function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports["z"];updateMemoryViews();wasmTable=wasmExports["B"];addOnInit(wasmExports["A"]);removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);readyPromiseReject(e)}}instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult).catch(readyPromiseReject);return{}}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var noExitRuntime=Module["noExitRuntime"]||true;function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){HEAPU32[this.ptr+4>>2]=type};this.get_type=function(){return HEAPU32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAPU32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAPU32[this.ptr+8>>2]};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)};this.set_adjusted_ptr=function(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr};this.get_adjusted_ptr=function(){return HEAPU32[this.ptr+16>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var exceptionLast=0;var uncaughtExceptionCount=0;var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast};var structRegistrations={};var runDestructors=destructors=>{while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}};function simpleReadValueFromPointer(pointer){return this["fromWireType"](HEAP32[pointer>>2])}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var InternalError;var throwInternalError=message=>{throw new InternalError(message)};var whenDependentTypesAreResolved=(myTypes,dependentTypes,getTypeConverters)=>{myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i{if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt]}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[]}awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters)}})}});if(0===unregisteredTypes.length){onComplete(typeConverters)}};var __embind_finalize_value_object=structType=>{var reg=structRegistrations[structType];delete structRegistrations[structType];var rawConstructor=reg.rawConstructor;var rawDestructor=reg.rawDestructor;var fieldRecords=reg.fields;var fieldTypes=fieldRecords.map(field=>field.getterReturnType).concat(fieldRecords.map(field=>field.setterArgumentType));whenDependentTypesAreResolved([structType],fieldTypes,fieldTypes=>{var fields={};fieldRecords.forEach((field,i)=>{var fieldName=field.fieldName;var getterReturnType=fieldTypes[i];var getter=field.getter;var getterContext=field.getterContext;var setterArgumentType=fieldTypes[i+fieldRecords.length];var setter=field.setter;var setterContext=field.setterContext;fields[fieldName]={read:ptr=>getterReturnType["fromWireType"](getter(getterContext,ptr)),write:(ptr,o)=>{var destructors=[];setter(setterContext,ptr,setterArgumentType["toWireType"](destructors,o));runDestructors(destructors)}}});return[{name:reg.name,"fromWireType":ptr=>{var rv={};for(var i in fields){rv[i]=fields[i].read(ptr)}rawDestructor(ptr);return rv},"toWireType":(destructors,o)=>{for(var fieldName in fields){if(!(fieldName in o)){throw new TypeError(`Missing field: "${fieldName}"`)}}var ptr=rawConstructor();for(fieldName in fields){fields[fieldName].write(ptr,o[fieldName])}if(destructors!==null){destructors.push(rawDestructor,ptr)}return ptr},"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:rawDestructor}]})};var __embind_register_bigint=(primitiveType,name,size,minRange,maxRange)=>{};var embind_init_charCodes=()=>{var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes};var embind_charCodes;var readLatin1String=ptr=>{var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret};var BindingError;var throwBindingError=message=>{throw new BindingError(message)};function sharedRegisterType(rawType,registeredInstance,options={}){var name=registeredInstance.name;if(!rawType){throwBindingError(`type "${name}" must have a positive integer typeid pointer`)}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError(`Cannot register type '${name}' twice`)}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb())}}function registerType(rawType,registeredInstance,options={}){if(!("argPackAdvance"in registeredInstance)){throw new TypeError("registerType registeredInstance requires argPackAdvance")}return sharedRegisterType(rawType,registeredInstance,options)}var GenericWireTypeSize=8;var __embind_register_bool=(rawType,name,trueValue,falseValue)=>{name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(wt){return!!wt},"toWireType":function(destructors,o){return o?trueValue:falseValue},"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":function(pointer){return this["fromWireType"](HEAPU8[pointer])},destructorFunction:null})};function handleAllocatorInit(){Object.assign(HandleAllocator.prototype,{get(id){return this.allocated[id]},has(id){return this.allocated[id]!==undefined},allocate(handle){var id=this.freelist.pop()||this.allocated.length;this.allocated[id]=handle;return id},free(id){this.allocated[id]=undefined;this.freelist.push(id)}})}function HandleAllocator(){this.allocated=[undefined];this.freelist=[]}var emval_handles=new HandleAllocator;var __emval_decref=handle=>{if(handle>=emval_handles.reserved&&0===--emval_handles.get(handle).refcount){emval_handles.free(handle)}};var count_emval_handles=()=>{var count=0;for(var i=emval_handles.reserved;i{emval_handles.allocated.push({value:undefined},{value:null},{value:true},{value:false});emval_handles.reserved=emval_handles.allocated.length;Module["count_emval_handles"]=count_emval_handles};var Emval={toValue:handle=>{if(!handle){throwBindingError("Cannot use deleted val. handle = "+handle)}return emval_handles.get(handle).value},toHandle:value=>{switch(value){case undefined:return 1;case null:return 2;case true:return 3;case false:return 4;default:{return emval_handles.allocate({refcount:1,value:value})}}}};var __embind_register_emval=(rawType,name)=>{name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":handle=>{var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":(destructors,value)=>Emval.toHandle(value),"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})};var ensureOverloadTable=(proto,methodName,humanName)=>{if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(){if(!proto[methodName].overloadTable.hasOwnProperty(arguments.length)){throwBindingError(`Function '${humanName}' called with an invalid number of arguments (${arguments.length}) - expects one of (${proto[methodName].overloadTable})!`)}return proto[methodName].overloadTable[arguments.length].apply(this,arguments)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}};var exposePublicSymbol=(name,value,numArguments)=>{if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError(`Cannot register public name '${name}' twice`)}ensureOverloadTable(Module,name,name);if(Module.hasOwnProperty(numArguments)){throwBindingError(`Cannot register multiple overloads of a function with the same number of arguments (${numArguments})!`)}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;if(undefined!==numArguments){Module[name].numArguments=numArguments}}};var enumReadValueFromPointer=(name,width,signed)=>{switch(width){case 1:return signed?function(pointer){return this["fromWireType"](HEAP8[pointer>>0])}:function(pointer){return this["fromWireType"](HEAPU8[pointer>>0])};case 2:return signed?function(pointer){return this["fromWireType"](HEAP16[pointer>>1])}:function(pointer){return this["fromWireType"](HEAPU16[pointer>>1])};case 4:return signed?function(pointer){return this["fromWireType"](HEAP32[pointer>>2])}:function(pointer){return this["fromWireType"](HEAPU32[pointer>>2])};default:throw new TypeError(`invalid integer width (${width}): ${name}`)}};var __embind_register_enum=(rawType,name,size,isSigned)=>{name=readLatin1String(name);function ctor(){}ctor.values={};registerType(rawType,{name:name,constructor:ctor,"fromWireType":function(c){return this.constructor.values[c]},"toWireType":(destructors,c)=>c.value,"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":enumReadValueFromPointer(name,size,isSigned),destructorFunction:null});exposePublicSymbol(name,ctor)};var createNamedFunction=(name,body)=>Object.defineProperty(body,"name",{value:name});var getTypeName=type=>{var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv};var requireRegisteredType=(rawType,humanName)=>{var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(humanName+" has unknown type "+getTypeName(rawType))}return impl};var __embind_register_enum_value=(rawEnumType,name,enumValue)=>{var enumType=requireRegisteredType(rawEnumType,"enum");name=readLatin1String(name);var Enum=enumType.constructor;var Value=Object.create(enumType.constructor.prototype,{value:{value:enumValue},constructor:{value:createNamedFunction(`${enumType.name}_${name}`,function(){})}});Enum.values[enumValue]=Value;Enum[name]=Value};var floatReadValueFromPointer=(name,width)=>{switch(width){case 4:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 8:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError(`invalid float width (${width}): ${name}`)}};var __embind_register_float=(rawType,name,size)=>{name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":value=>value,"toWireType":(destructors,value)=>value,"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":floatReadValueFromPointer(name,size),destructorFunction:null})};function usesDestructorStack(argTypes){for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns||isAsync?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i{var array=[];for(var i=0;i>2])}return array};var replacePublicSymbol=(name,value,numArguments)=>{if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}};var dynCallLegacy=(sig,ptr,args)=>{var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)};var wasmTableMirror=[];var wasmTable;var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var dynCall=(sig,ptr,args)=>{if(sig.includes("j")){return dynCallLegacy(sig,ptr,args)}var rtn=getWasmTableEntry(ptr).apply(null,args);return rtn};var getDynCaller=(sig,ptr)=>{var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}};var embind__requireFunction=(signature,rawFunction)=>{signature=readLatin1String(signature);function makeDynCaller(){if(signature.includes("j")){return getDynCaller(signature,rawFunction)}return getWasmTableEntry(rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError(`unknown function pointer with signature ${signature}: ${rawFunction}`)}return fp};var extendError=(baseErrorType,errorName)=>{var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return`${this.name}: ${this.message}`}};return errorClass};var UnboundTypeError;var throwUnboundTypeError=(message,types)=>{var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(`${message}: `+unboundTypes.map(getTypeName).join([", "]))};var getFunctionName=signature=>{signature=signature.trim();const argsIndex=signature.indexOf("(");if(argsIndex!==-1){return signature.substr(0,argsIndex)}else{return signature}};var __embind_register_function=(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn,isAsync)=>{var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);name=getFunctionName(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError(`Cannot call ${name} due to unbound types`,argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn,isAsync),argCount-1);return[]})};var integerReadValueFromPointer=(name,width,signed)=>{switch(width){case 1:return signed?pointer=>HEAP8[pointer>>0]:pointer=>HEAPU8[pointer>>0];case 2:return signed?pointer=>HEAP16[pointer>>1]:pointer=>HEAPU16[pointer>>1];case 4:return signed?pointer=>HEAP32[pointer>>2]:pointer=>HEAPU32[pointer>>2];default:throw new TypeError(`invalid integer width (${width}): ${name}`)}};var __embind_register_integer=(primitiveType,name,size,minRange,maxRange)=>{name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=value=>value<>>bitshift}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":integerReadValueFromPointer(name,size,minRange!==0),destructorFunction:null})};var __embind_register_memory_view=(rawType,dataTypeIndex,name)=>{var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){var size=HEAPU32[handle>>2];var data=HEAPU32[handle+4>>2];return new TA(HEAP8.buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})};function readPointer(pointer){return this["fromWireType"](HEAPU32[pointer>>2])}var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var UTF8Decoder=new TextDecoder("utf8");var UTF8ToString=(ptr,maxBytesToRead)=>{if(!ptr)return"";var maxPtr=ptr+maxBytesToRead;for(var end=ptr;!(end>=maxPtr)&&HEAPU8[end];)++end;return UTF8Decoder.decode(HEAPU8.subarray(ptr,end))};var __embind_register_std_string=(rawType,name)=>{name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType"(value){var length=HEAPU32[value>>2];var payload=value+4;var str;if(stdStringIsUTF8){var decodeStartPtr=payload;for(var i=0;i<=length;++i){var currentBytePtr=payload+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+i]=charCode}}else{for(var i=0;i{var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))};var stringToUTF16=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr};var lengthBytesUTF16=str=>str.length*2;var UTF32ToString=(ptr,maxBytesToRead)=>{var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str};var stringToUTF32=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr};var lengthBytesUTF32=str=>{var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len};var __embind_register_std_wstring=(rawType,charSize,name)=>{name=readLatin1String(name);var decodeString,encodeString,getHeap,lengthBytesUTF,shift;if(charSize===2){decodeString=UTF16ToString;encodeString=stringToUTF16;lengthBytesUTF=lengthBytesUTF16;getHeap=()=>HEAPU16;shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=()=>HEAPU32;shift=2}registerType(rawType,{name:name,"fromWireType":value=>{var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":(destructors,value)=>{if(!(typeof value=="string")){throwBindingError(`Cannot pass non-string to C++ string type ${name}`)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction(ptr){_free(ptr)}})};var __embind_register_value_object=(rawType,name,constructorSignature,rawConstructor,destructorSignature,rawDestructor)=>{structRegistrations[rawType]={name:readLatin1String(name),rawConstructor:embind__requireFunction(constructorSignature,rawConstructor),rawDestructor:embind__requireFunction(destructorSignature,rawDestructor),fields:[]}};var __embind_register_value_object_field=(structType,fieldName,getterReturnType,getterSignature,getter,getterContext,setterArgumentType,setterSignature,setter,setterContext)=>{structRegistrations[structType].fields.push({fieldName:readLatin1String(fieldName),getterReturnType:getterReturnType,getter:embind__requireFunction(getterSignature,getter),getterContext:getterContext,setterArgumentType:setterArgumentType,setter:embind__requireFunction(setterSignature,setter),setterContext:setterContext})};var __embind_register_void=(rawType,name)=>{name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":()=>undefined,"toWireType":(destructors,o)=>undefined})};var emval_methodCallers=[];var __emval_call=(caller,handle,destructorsRef,args)=>{caller=emval_methodCallers[caller];handle=Emval.toValue(handle);return caller(null,handle,destructorsRef,args)};var emval_symbols={};var getStringOrSymbol=address=>{var symbol=emval_symbols[address];if(symbol===undefined){return readLatin1String(address)}return symbol};var emval_get_global=()=>{if(typeof globalThis=="object"){return globalThis}return function(){return Function}()("return this")()};var __emval_get_global=name=>{if(name===0){return Emval.toHandle(emval_get_global())}else{name=getStringOrSymbol(name);return Emval.toHandle(emval_get_global()[name])}};var emval_addMethodCaller=caller=>{var id=emval_methodCallers.length;emval_methodCallers.push(caller);return id};var emval_lookupTypes=(argCount,argTypes)=>{var a=new Array(argCount);for(var i=0;i>2],"parameter "+i)}return a};var reflectConstruct=Reflect.construct;var emval_returnValue=(returnType,destructorsRef,handle)=>{var destructors=[];var result=returnType["toWireType"](destructors,handle);if(destructors.length){HEAPU32[destructorsRef>>2]=Emval.toHandle(destructors)}return result};var __emval_get_method_caller=(argCount,argTypes,kind)=>{var types=emval_lookupTypes(argCount,argTypes);var retType=types.shift();argCount--;var functionBody=`return function (obj, func, destructorsRef, args) {\n`;var offset=0;var argsList=[];if(kind===0){argsList.push("obj")}var params=["retType"];var args=[retType];for(var i=0;it.name).join(", ")}) => ${retType.name}>`;return emval_addMethodCaller(createNamedFunction(functionName,invokerFunction))};var __emval_incref=handle=>{if(handle>4){emval_handles.get(handle).refcount+=1}};var __emval_run_destructors=handle=>{var destructors=Emval.toValue(handle);runDestructors(destructors);__emval_decref(handle)};var _abort=()=>{abort("")};var _emscripten_memcpy_js=(dest,src,num)=>HEAPU8.copyWithin(dest,src,src+num);var getHeapMax=()=>2147483648;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}var alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};InternalError=Module["InternalError"]=class InternalError extends Error{constructor(message){super(message);this.name="InternalError"}};embind_init_charCodes();BindingError=Module["BindingError"]=class BindingError extends Error{constructor(message){super(message);this.name="BindingError"}};handleAllocatorInit();init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");var wasmImports={k:___cxa_throw,m:__embind_finalize_value_object,o:__embind_register_bigint,t:__embind_register_bool,s:__embind_register_emval,r:__embind_register_enum,d:__embind_register_enum_value,h:__embind_register_float,f:__embind_register_function,c:__embind_register_integer,b:__embind_register_memory_view,i:__embind_register_std_string,e:__embind_register_std_wstring,n:__embind_register_value_object,a:__embind_register_value_object_field,u:__embind_register_void,x:__emval_call,j:__emval_decref,y:__emval_get_global,w:__emval_get_method_caller,l:__emval_incref,v:__emval_run_destructors,g:_abort,q:_emscripten_memcpy_js,p:_emscripten_resize_heap};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports["A"])();var _malloc=a0=>(_malloc=wasmExports["C"])(a0);var _free=a0=>(_free=wasmExports["D"])(a0);var ___getTypeName=a0=>(___getTypeName=wasmExports["E"])(a0);var ___errno_location=()=>(___errno_location=wasmExports["__errno_location"])();var ___cxa_increment_exception_refcount=a0=>(___cxa_increment_exception_refcount=wasmExports["__cxa_increment_exception_refcount"])(a0);var ___cxa_is_pointer_type=a0=>(___cxa_is_pointer_type=wasmExports["F"])(a0);var dynCall_jiiii=Module["dynCall_jiiii"]=(a0,a1,a2,a3,a4)=>(dynCall_jiiii=Module["dynCall_jiiii"]=wasmExports["G"])(a0,a1,a2,a3,a4);var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run(); + + + return moduleArg.ready +} +); +})(); +; +export default Module; \ No newline at end of file diff --git a/codecs/webp/wasm_build/base/enc/webp_enc.wasm b/codecs/webp/wasm_build/base/enc/webp_enc.wasm new file mode 100755 index 0000000000000000000000000000000000000000..88bb90433306c5054b6805b7a50e6122a864f494 GIT binary patch literal 270725 zcmeFa3!EKCb?4tzeP46?&dilGl13WYs@s;$7%XhSk&St1T9z$8Fc89KNtR?qU=#i` zN@Ce#;eS?^#@HdwE(y-!1jDj07AAHQ8=Nc~I~$0_Bf$X@%qwvg5=3H%lMoPjY@Fbr z{r*mM-??`*62@i|{-4iZ`poUB>Ux|yb?Tf`r%qKTuekb0U6Lg3bN*?&{lSBYe%!&` zwS)XicBl61$`I*wr4x0^#LsoRTb9C)+rPUJ!^!R>**#LFle<}llPU*=)y{SHyFa!@ zc{Rtw8n1wG2g*iCNL21X+4TP1ZaSe&sJABc%^-vJ@mkOuo)K zPi6wtLFoer=zjKzd$HG5qzdx3=N&j&xb!E~dyw~zv zm3YEeTiJOFUt{5YR_ZlLowwH}tN8tYlVmmYm_n+!{arlu=i6(_^HaxiM=tlX|V*thuyH z&CNyw@=TJnJ~Fnd)@;@q4L^~lsc$#hZ9n`ED3<$py*<2y^W)Ctzf?#EYmTP;7@P6a^2lkPN4k~9Spp~<;My`FgRRpX!2 zPyA=`7#wT28-SYfXxEzVO7|!HuQ#1r@CysRG3pPx;=#XcWIU3rxuxZP!Y2f;bUR$) zE=-=`b|xF$MahD97bkz`+^*znZsa|wOA43$vHKtXuiel1hurVE-*)%Aulu9^i~fK4 zPy3Jf|LNc4f8O8X-{^nN|Ezz#|BCyv`z!aC?l0UU?$6zq+!x)$?$6wxx-YmR?(;zO z$L@3Pv+jSnKXQNQ{=j|4ecFA>ebRlx{bzrZ|7Um1ebqhcj=Bfk$KCI{kGYS!kGS7; z54aDz-*F#uA9NpZd-uNI9d^Iv-sj%ye$)L=_Z#j$cdz?(_dnb}`G53}`hW2M+yA}) zJO8)-Z~WK%SN&J~U;8inzw&?S|H41w|J;AcKMW22ssDmM;y>^I#Q(AXod2x9 zL;nZ)4<91!($U z@Wn#yMYWlb1Q&d_8B1v43w~D-I_lkX|chX7l>xqe-k|+9%t*(%rPLZS%Dl zYHjna80u{EofztF^W7Ml*yblZT_qn zI%k_dCx*`5=Fg3x^SAl)W9Yft{B!Bq%$)UXW-j-keua9(>)MM(-4OJys6`Caz(A;} z=R#Uq)Gi%Bo8ohM?ec-7WtcRax(gEF5A6C25+6h91xX4tL#kzEcNL!D*OX zNE!D|4IEGV$zFrL#~M_1tYj!-O2%ShHm?c5R1`|4E}>Bh7Twt%Tz@9idd-m1!+u8V zoZgD&$PRu&vk)0}d=~1^A-U7N1(@^2myduYQD~jc9ROfaC|vL=h3fWdJS&nO!`%R} z;13u!L~7Y9$K(XY_@54W&GzCkgCx{7LWF|{%;G2@ z@&||^na#^dT6Nr)qrPjjAq*Mvlw<+$QPPCfNI2H0jQp)!V*(c{u?bw)?xoQlof)Pl zdLeq^@h#F5B}7kk6{QB~siftNWo66hs=h=nqAQA(bX9-CbhQHg^gG>2hiQoRj-w$V z^IM~#`pPsEJ99h@k$xf?s>Zz!a9E;%q(4U_Ov(XE7{cQ9UqG@rf3TeLObSPabl-fQ z7~MUrxfN2T5+f~!$$V^O8g>y(i+4Oa%s1l>HV<16*XCZTc8(ouiq#~=8T_^O{YdWS z_QAS9vzwnQo{vluuVykJ7j`7)X|hz45}<4jlyea2#H^Xmn+6s05;Qj>R7SZGf=NM` z6dS0JY93$!8wQZh1oTh1hf(jv@SwCfWnYh)0f<~o|Dv{cHg7^f6v&!*)cI(SXy z;J!JcR3h(~+gn`!+8bMYa$}yU`aNeFg_I4I7WLE$D{XS56?q@nLdM0{zUcHbZcsCp zaWXziURm-|Fj{o`#U}cp$$n^4Rh6LMTTEV+Bh`HoRIj^x$Mp*f3*7@?ml22hMHQib zUOE{c-S}w52L*}{HHV-&Hlr4yVIQ zS7ixgl64!%Fqi$Lqg+Vz7DVkSTG#ZLJenl*O4^y;)n+BSct5A{M~hS^iUmw}*eq(sDnq;uO=14s{w87Rd`#wtKd~_=@)}D277GWojIFdJWAu zt4pBG7U6}w@kI#fT;2kbpcxn%SHY!SXfbVy&|{e-C8~Rg(IhOmH)4(UYG5PnwWzRG zAT~x&g{*pejcAz5n|DFzet(`-#GM2tlNxK^J(QY;kzFCXBd>?%6?;eh4u>j`?qP=K zO^J)pymYEqfR`<_n7Q4lye{R3Nh$8a;7HU$PT&CM$B0W)K`S6bXm>YkBoD#vM)FYA zY(ApNPFVA}9@^4SfU5Bv2kxvdxlQU8BnZbq9oPpxTE%7tMsxwvQyV=9C!))y_|Y1g zo!*N19K5>NyiY;6iU^@m^!A`h6xp8HTpD}#REc~Pe?LP59ka2RL117gfs%=QO7`J;jOuva)D?PY8R_my?g3Ls3F!~w5?<#!lX%#XA+Z2q=Q9{G7d~&V#&P9YqOv-I}y4Ut!@9!o?@=cfERXO|MqeB1PuM z=XNS-xj$pMf0W$D!6A}j0QPEd>Nck6F&aWCsqS*72@i>$5z$QnZcRh%l9Gg0cgseIyekQn1e9#3<`U>> zXjmb}0fHF?i%lr0YikKi0DsA_AC%miFyWWCiW?nNmK0|}5%mCjgEth2)NGd7gf2&I zJz%CO0jK#hYBQF`J0ddi3Bs*jBaSlR3FwsRNT>@nvi4#2HN*+LO*@Tj!}Lw-fz)Ho z4<6Fc8|2Rkvx*eoh^l}jqoyjImP`iTFrxX=-B-XY_Fly_ME{qvr)lG6!6C%^&&Qg3 zDbXPKn#-q(>lYY|g&HN37fvx56Z9L^lUy>IY%CnJRdZ@1V>C)QPNQD?JE61mD6}D& zVthV!74T*&t+=KcI@n_g=iwf=)mW_VDcJQXrp;vFYMMRC>uHi~T4diNdB?^OM+E$g>N;+u@W3gtER8zqUc zGow+B?%QY%PU3&zfvl-Reu=JaAX%@Ss6$L&O=A_hI1VJr->CbJAj-N8&c(w-Il<%_ z8k_`HJ3KiV99Da%BNdhXD~?A)eP}Nuu*nmTN5xWAD2@lJc|}+M+FYWk&NP;FX4B&t zkVe@V)}NX!s3F!ThHgpR)lbUu*k0+2J484I`z$YpwD=Rt!;Xhhwa@YpV@lIPP?Hsw zES6Wi{rZFaNzykio;j{cKZsZg&rT2e;MZq4$1O!9ai3c;9}byi$Q6%T1Ujyh~DRjiu@PfLA+ANN3P)Mf@m6})gX#b(#Q zo`In7FPhTk%wrf9^HhdM@|vOkZ0CDOouV__!^YC{AcI$X!R`pDeqOr-sgV0P zhT89=q>Z*IjI&ss*^aurCk@u-V`fNcfYw1IqWsCM#q_s9#?URo0GTzJdL)G7@M3ct z939MlL!*OIo@Bq^aKk8^Y*=$_3aK{&9>yV4eVWsR`UcOTvO#-&{lxZqY7o7MMJ1{( zF6G6MRLy`bKQ$v&w9->zAN+`i?Kxb_HeCb-JU*dagC_)q%kIUCscacot^uUDU!mb- zXjLmy14_qyBr{%OYLl13Q|(tA-!e5(Nc~R-`(In?KNUFHp&dz>!x@nI9w?XHbbikE z7pS!y7xpW17iw`_3@+%Vg3HF`@xrA+T>&n?1XncNvKvx(w(aFbQo?4CeMbNm2_}0W zP3s5K{qDNcl7h`Ew*_Rf&6;BS)q{;Lc3>73u4L;godMk%3r$zEuG&r_=4@@wf^^%g z05jShBQjxVnxIh3T<$4rx)+Ck&dom6C%qBVev9{hUYvDRiv-K8jU?^$GmoB@VolDd zu@Odo^R~S4Y(QfUvsXkKyH;$W$}S!Wtyu7~ZPTQHf%`;17Ff-)CX=BihZ|X>iJiav zwNGC0L*0kBv*WctRwwIC4V&=Jr2Hoi#-7&3oj+{Xt{pq~I6_*diHR4+`O- zH;foWAr`5JwR*8JYgL?GXxpV`k2J~>O_0t=Lk{W@t?bTAq9bvYOL&(Q?QQ<$MIyG6 zW(%oLp=YT19F{d8h8kdxle7GMEK(U2u^+z$&hO#To;`M=XHk#aWqa*lgM@BQIfyv- zS7B^tuY8Flnnn`elp3OWe1ICLE(}sb?P=-ciKwB;R*l*Zq6VJRL)6f`EvT?jLyL^f z(0V1*Fru6&-geG^SE&JRzbVzp5E$$v7YO#A$HxK z-h^Vz`?=m)3%U7x-CS>d@v&bKS@kB1Psc#JcrXUC;-MI5r86P5El~Ncte?#{h_2a` z##t`!C_FZok89@?T{8)5X7jERp=Lcs=WI_E9vN1_EiB7g%bbJ>J@cmJ2=(~38AgWU zBS=Wg#$I4mesx)X-HPSMhRTnH2ths-%a2l@u+u~{XoQU~#WnrLkeHw#{Xv*I`d=WKNu09(Vmbz45StawC@7uPq;8s-qI* z&3+B4Jq_dixb#`oShX+~nsXWC+aXuGOw@Xg!4=EE8_9I+%Z(yVgNEpgXiDS~U4-nx z;3x*!Jd->McH#pCt51r3@>_t%Krjpb1;zwEj~BO`A1EnR%;AI*MLtn9cqx$-&FL4R zdES{8&wlhVxuqF6^!siFCUS?fLc`=}_xtryJD;1xPLXjr4gz=N9`DZ`w2s#cL`@pX zD89E-=#HM$E2i?4ebdO02TD)mb?P%crW@*&r$X1}4N`eh*b+PUGoX*X(UN(Z%B0r2 zj0^@*TXX|1!)rjbY#AMj-bBi6kfNa?pE5WHO5;SPG$YNX6ti+S~$ zd2iB#SK6(lRQ3jkKhlaGO-RAJapV~EXu{`D9!-A6c4-svMHe;(e>YhVQnUdDZ0t;}!yN zq#S|T%4-s@4-9P-(=5p>nU;t1Wr6Th>HgY$M9D0$i+l zOIQfa<{}OC74H$Pc@0Q0QRT*}0_8TB{0mEG(;ieo=gofy4@2`~H-s=vmU|f5po;>T zE)fjom7tM{6KD)esyE<>9{n5DGH9th1~aK7*{h`<%F9>7fOIg|zq*)>@3|C=38!e2 zVw!|d1Sw{8Ugo5Wf+f8)cT9QhKJkPn!wKQA+W!^h79nP;LVQ9-S_m(dp7x*sTzWONacN@j$|SBU6La7)KqpHZ$bo!vU^6 zPMPw7NM#QQX`>5N!d z1(Db=IOU-+rHokrl-!)G=^8dAFbh>=hH~brcuiWlNZ04oA4X&n`wTKd1Rx*#J^@HM z%KNOVcLSe{$yoOK5E{SH!dToPk;K;980PjU^$GJ=Z_J`Mcj(o{G)dwJ8>_#q33_#SxJ z?>LAeP#h+(u&DKHO;NJqNz<7vuH0KZ^vj?5<@(hE;K7IKfdY$FU?F5Vsvo#Szsw;X zINBAXo#L(5LSCb>TVk*&6>%iMYe&H=&a9)zEL9}AQq>l_$E0~59H#Wx6y zhsKLW(+Xmtr-Yb!CPvMAn$|<>(oxpZ4VnPwm`-)71J|-S%^0P^(r7J$hQS#As7WJe zKncr>(15sLd!ExDtn8e+W+Qp4)ff_#tb(vDk2Nsy#6+HwT#Z5O zAtNmGZq0>;M-C*-h$Iw8FRKSD&<<#H#4Nfj;JXz8KoLq&9;B&8`96EuYyW0RGs zTb(We*W@=>1vLt=ChsY=Vx#OHVYTkG_3#}$-y>dw=UmkiJ|SbM#KqBxQwL;GI|Ndx z*|1%QAq6_znh0#M@cwY7mNj>pQdUemKk8*Uso+ORCK|SZ;-O)WU5469%;GW(d6h~Q ziB33xA26$M21aJW??XeHo3O+t(u&7!M7M?$^)~X~SV#(r6*gZFOXVlBB|O zSb-?1Vm+2ax)tNzGPcl{Q06*Eb~{=F@&;5CP(2`_kmn%PR1{`-d1R{=B@{DDa^QH9 zHq}jd9VBTM5v4Y{B1tnGwc;r{VZb;QXG4^rkKM~zRC8CbzSHXMu7~}Z-VT%)eOb7r zRNl!Zk*qM0s~Jm{No1K#+@`8C+1BBKV{gL3)ea8=aw_YUivltpJA-XAiNH$if#FqX ziIz%et~_ufht!8nN&_;v7&Vmk{(&1(OdU2g9HKS9Vmis_r~zpc(0+W_kTEGX0~!sL zCvH4yoL@6c+_5BO_mX3TExHe%;22@dZ%Yqb(M+mxv|lQ-X(_Wic{qPW zIz|WSq4omr?(zlJKhY+HdC>WNSZ4!8wR5?p;v^7d9NZ&h?oq^Pl83lTy_%7 zyxPFBhM^uugXZGEeJe-7IFO^=hI%B-v_kAKVG1r5o~Ce#SV4nn6W~FN)^ykto&fVH z`0NvA(mw$v`DZ7-i3)9mX&sxSe`Pm$3=*cL8VDR4iG(?X3R%-kMfNBs zp&1E?R^+Bw5s>Cikd+{gDI**S2x`Gt#nN2-Qq;rI0H~)a>XA$7F!jK*Cd);IQ4a$l zV{D`zTC^pusD~G_*xCzVimr3?HbAk7FdquU*CTtZe_7 zVISv_wm>k%KFIAj(qqtA%SKe`3Avrz2kL#ILMqUfxE%^`#qBujP;t9@FcOIh@p~Lm+2LlGu0{q|8k;v+ zB&w36MvSCJL{fIHIc7D6#A3%<7DHln!RVJHMV{(hGmC3#u1LyWERhuSF-%fs9g{Y; zL{g|pB}ox7J+34v#Qkg}sbQm1Qmu2vvnrDkOQF6LCA^%V7!jdQDv)83K^H-xPLXJe zo1w_ox1wULU4&oGNT6V7!zp`PCvEIc541{a;#jmM2KT;vWXHKT-I0$L$Hw>O^@4Fh)mdPioty&%ij>?lm23Ybv;xBK3BuBbGjUIC`WizW~)JI!u*6&I1@6hIM z_B3{U%Lc5tO6Hvib8?#)%{wCCLe}1%_9@)O#p-$XCHlY~JC@wggZ719mZbeQj>pz` z@jg3%OlRLRh{^Ar>K7{UG+HclFC|Mk3Xg7oDNB&yP9#@WJ*cpFC3s+gyDVFGdA6>y zftie9Ps+0ATzKex74p@e3fGJ2b#%?|2aOQJ%nkSFb!S9btRd!_FLMO)SZN^I2<$Q zwL=w7?q7tXx9$(gZJ~B3uPu@-Egt<^Y$_`rENjOu&x^%8y=`$(Q@^;$prImGPY7id zWpB|!;s6*psaTmoLueez(?gb;6!*n$6!+M3@ep<0Stc#UBul%sOuM;C6J(PAiPbB# z<0kdK3UTQnv>_z&ZGncyAUtvcD|EjouFt&GthDKx6~Eh@E4IsCA(+*zWhep5PUuMvu~=lLC&l6Ts<_XdAk>j~PnmdUm6*cE z?kH;W#ZkD}Xz}P5jFQ0c;v(2&mi(!kJrgiSLg()NJGQ=VKkLa%rmvD>7g{&G80_`g z&Q05|yB`RkQMXw2@u2#%l;!C5{dp^9(pC>pzqz8s?XRq9x1U{`thYK;+@zZbrNkN2 zGG{kAq_lps_;=m_0ax|hUj?@J(~{(s?71!GIs^`U(1mEJ4tYYdw+VA)nIw6|R2{}& zMrp||jwvAq-b`F?EXoI;eJMpgxC1FZ^zpy=e-q9MR+`$i%3CNb+b`E9LvxS=fVK)s zAO~abV24KqF~1SLtq+dURmc4@+52K);qb8($GhvV#f7jHqcWeg@V}9&c*iLBM3w)v zPgh1>3^0n1 za3wQ~@1QjeiX&6-M!>=CeEaWQ`{2l1KDhnR&Uat?v#0#_-j8ixJhZd+Pj7njo8SCL z1g$E{?A-a1=YM|n*FHeLKS@9O3$MEP!^-!4Z_IDma_J`(eB-~-zb_J8q!daE{NXm> zUIH!DcW!&y*H-=QH@@$AmSJ({XYPK>N6x?HH=jol%>%HQJtSWgw;w=dud-!tajP$! zqPK6znL)S8wpS!CVEtQwaX?a@U9RwOr$nU4si2Sf z0}5@gU5ion+Dl`J9!tIlKVj}L)hnrQ3+zSc{Wlz&5U~{3N>uy*&}ZE6_iXrU3k{f2 zL^tWIzZ&Fj7t)M|IPN&S<?DaLyc zVQSD73-O`}RyVUxcS*iFtlksGU}-e6?($x)UdeEpYpFxIEKG%UMaNq4^V*38%C(d( zj(jAUeU?k$T#dVAhkERcOg`(PFI_qwBpf{?_wH?`eJf zlG!|jb@KBb3GD+^zp9spb-f1guR)TeI1;fuV3E7jlN>6NTXXM}z$5gyMCNRF*ntm+ z9}V5?b;Ih4VQ)W=*}Ix<(Nk?6(YL%;czk5m;$PG4drr^h8~5aCv1(sF5hm~#oyym; z+7|}23Yjc!29do}1BcS*dz&e@fFFnMX~6tbjZSZapFv3ps^Hi-HK6v6GhFO*&8lJ) ztC+r#sVvWJwf{j5zEdYJ*I@HC6t@(_Xl9WttT{97qFM6bL+;e4=$Cfx|H$v#DCSL+fCC8gK9(?+lB*fA z_yS+H{;Ths%A4Plb7`9JD8(%$L0IjwlH8GK1H2f!qIMu`3L7}7J_}hy0v(_X3`MLr z4us}@jQH*EvmNF2p~-M3&~4gdQVot6;}^@-xy54dGGI5e%`%;)Cn8r|5gAKnT6sN*&@&q>< zxTlivTHmzM#1FGkf+v#In8+%u7u|<(#=DR^-B?(s%NUrC9^FYta+2e6=i^U@5jEym zt&ihlI+fQrQ3niTgR?ea;{=0&NVK*`@8wGZ%;R!)Td#I5>z$@1<{*jF#E{Y=*_HLS z(A;6CHT{oImX&HBm(n>d zW$d_=?r|x&LN2QrcgSTa>yAsAJT3)IU|A{T(6W?M2U8exY$3uEVvI9V4L#<1XmFqv zQ&jddPENkJn5QMY^;Qd@ixxND?F-}=?3REGE5+*x$i!4E62NxK>XCr$tlmrj8zyc_ z1Z;=sRsxuylH#od+6vrGAXDH@0^C2D6n7CARe)Ay)d8ZH$TD;^LgQd3%~@=bxjYO# zWLH41ft#C53U6nTF)t^oq&u!H#v?~ctN%g#iKxPA3@-b{aW^WNdjy$VgLZ1j{*+6O zsL)Qhj1=a)O1Rc*rzqjk#}PS%+mp^4$zDfTb3t9hLJu=Cy`xAkL0HLyE^l3ig@{*L zBY^Ls*4-Q}d=!-1C`Q~Cu9wH;lNY^C+GRw!U3W7*qu#kPID+$@_L(ewq>!!CO%b6s z+yKbiE?U+CG>^9ccE;r6*b3FP2g>K+_;l|o<9C+N#qxP;`MlW`Ymno$V$C*xBWZ+g zmP_F4W0(oI&EG_m@DISDJ(d7@8~3F&?;sReaSDG0S2uyYQ6w}zMY1pZFnY-pmJOT5 zfcMR$)_Qz?umfwG+~ut1dOskT*5YQK<|33>=Md zv4Pwh>cuLFBsPDGbWQ@WUO+H)?W5O=)q2$|{*z-Lo9HoIW~&UA%$-)cV@(Ho<(1Ja zvcW1?j3HLFG-H3jN=A>%*aErfT+=oOj0Mpv11_-+a;ITzyrIJpm`aD5Zdl7)dCH0} zwmby9mYVFA!WGp>5q(gY3q5UTHR*g^kc`ELws44X3QZ5)fyG1H;XF{F^^mQ0xCg|> zW8!Fh2wfy{;zJK@vGdTWP#zeAwNWet>Bg>*$?3sBK>-x+joCo08dGmI1cF_;%ga)I zyn2iZ^@82gF2;SbX{1LHEry3SQ$XjHT5PHyayr>rIsC{q_p2>bALf+kf7pEwJ(#F-%nAmiCW48CiOM_`I_XmYmu zT#!-Q3Jaj_)tby(liyc(RSf^0!n)>-^p7b#9>X71cr1oLqVQ-8|E|KF7=A!uJIb&% z`LM$6nEpEokHqkU3S+!b{lBenGloB;a3h94sBpc2y=+ZBfWzJhd=ldYJ^`>w5Yhr6 z38QuM9d;oe9fR{2T2lC4Bf(XPiMa+B+MA+@XrQ>aQZZArPThw=#1 z>gu|!vL2m=5%sE3D^3BCd7>DMPeen4bd$1#wP-Y|b^sxzaT-W_c9ApI9IC<^gJ};r z1N)vA1c11jHI}&dd~yB4q+Q~ylOOagSU(XYrOn9|t8`4s0cE2|NteZ~fdrJOq1MYI z$h?L@A|80xxePBOab@6P!CElEcx4+$V%K#fM426zEcYYD=Bx9R&Hq9eMUc{m=kH~r z5-X>sIwe^eF%u^bu0>lD@Joq^9HQzNJv0qY*pGdo9{d(*Nfrp0H0S};;0`nMiU$~1 zD7(A4KL{mPs3Dor>9S9)^%HpbBdHg_U;|0*3u_V))7^w7INI~Jn)Nw~8epn&A)6lC z^6VlIq!l^*kq(%U@iVmFx;P&(je+bjXJ|^m@UnRk+zFz*%(h^f)LAc@oFNl86Cx-* zHj66)16ViT^pUdJSPu<3xExS$hDxaBz^T|?nIMtULME{aT>=Zx>gkNBA9aB?F4;gU z`N-BJQ5dX2KJttg0LDtKd-7w%6&}gY8Q=ER0Y-^ei*+L_QX!j%lmm94HG=HIkmB~q z^NcefKZd4)D?BLW2mv||11i~Eq;kc|D%L3lNbumBPANQh^kg{nd;A`-3SaXl6h+BK(Zm|#Ys1sfb4D5M1d9^;Y9k8QN@(8;C7 zM$gD_&pEFx*m3%Q)_6mlU2W>}XAP5WpyoLkCU7}~D}OtzyD z&YYR(vJo`*I|wzj&h#w}<|+-`RahYHHThAU=JNFx9V_#+0-+?|AUmqf$qjeN3@KiN zUOWo~@(5>NPAYe4NmxTw5VWy4v|$VrkuHozLp_7p8-!AKd{`e^u)X>2e+JEg6{kE) z*2yjh!xF9ez$!*l8fw;{dPz-rs9}68lJ1+_2`OsraRj9UA|p!#H5B!*)Pc7rCa8%e zf?6H9T%_5P5!C89J>fg^@S~ET&;_LSo*y6Q#K&}eg!sS$X_|3-pf@Up3ysdMsU%z|q59JTTsts$^UdwkI)MbKHMX*l-o9W;?GNkRKAqhH ziygjoJ)wHNnS{E;fZeulk`i-J0#7k*PjavTE!$m%n9Tm!*{&9($uzfbkEma^K}o`- zF7VeVky5OWk!vloE=J}pvL;5Zw8-ih*<+FM7-~XusP{n+0rdBwkp26ImXJiScEBO7T?MKM64NOSg90CV{E}?pU&JGnfMlvNOcwt zLMwArxB^dX2NB}bq(lfIu2*32ibokC7BE`$*Ner6B(GMb=tHu8q4V)JU&Wi5IV@a* zuerJ)lM!S!FO_L*=??q^xC4%>T7RY5ZvSKqzjDK&u9ZLK}-Q& zWS(to;YAblpOxH2S6Pjw`)1#d8pBDw>WUv^FdHL})Y-^l#y!-8y+>`gcD8$nRpzw6 z6+6M%?ol>1xJhEwzCHPfrXtIuOQu*6Bl9_5C>_GCN(Y2c0K^FYPd6-OK1|B+uhpqdJ z)bxqwM%89*4vTwilkHQ4No~^PB`OCiqQ?b@Nwc|1{!)xcZ_#??pCd zf=+GoFs^PVGFvbt5=xeS6kv>{YfB`^!(@r|HnfY=663~zTpWS#uNrzwQC{<#Z{YnR z&(%Zk0iO3_>>E{{=bEASbVcPcwoIu!&xxV;H`#lB<;hVT;kkC`{X%Nx)7ktKmFKx` z=>1Lhp5L53+~Nq&^#kwgq}?7zCV`3=!D&o4uyK<&QARY2M_E=sR8d7SIgboz7Pn$+ zOg+qYnh)l&tfnRmpCLZrjiM2DY|{bC$>Yo2@v-1S-a8F)fNVh0V8&j|u_!w=l^%9% zc~jl8Try_!_DGp)fkm9^0%3!7ae`O57I99sx)2PiYgsNKLUon77E-)Bs0-u`)-_hv zrELbmg`YWYwz0B`=wI~nxC6pCo zr0X**QeTtq^Qqwxywsa&l^ZFw1am24Ks{2B>x`X~W3WJgkjJ%8FlwsGv@{;8jBvu%l}g@O%|o$xsF9Rd~Qq0j#F33dX623SK=_0Xxc80nb-! zv2IE=c5~21dz-;uCj@>m{-C{!8DhARX8}`jtfBF4Q+xD61{y-MpX#NusouD7AOMQOacS81fWX{lS?t0V(n zY7P`lP_zNYhO!LBQ6Ef9VeVD3jTF>3d_dutN<>N3BeUy)M6F?s_Oz8{z1Da<*TLkJ zr!#O9Qj_6p55?OEbz2mk66|Ir)nGR=@x-xfR5h#~DuHYnijRc|1uU_=o2jb{lOUHA zgC&o9 z1Xih$J;io5;;vy@s28$UZX`>a%2rpe+Wl8*2OY4Os$MNMgQj5+SG7zLA1iUCT33gT zsgB$ng+V$tg*iqhE`STz)!_I=d4J%?n{ND|852kCH)W6$CbVvsgJJ3R(i}6K#!Z*a zX&KJW?mi~cC@x#rY&uZzp1fTgVZR0zruLX@?c(Np;o2iripHv~ICB}UsoO}jw~0&6 zG3-_R>VX(??Fi(x(mv*bibzCEx?4n)O= zy;{p;8`aqjHP1&1%exn~p<1u)2eEE$;I=?q==JX(w+~z!7}I9jGmCYPh^V0w@@Mmw zsodbGeeq!QcW>CyR(MdA-oMgO98;xar!UJ4y=&mn;mH(P!Mq)e^I{%>+CXw%QoEzB&{t)Mc^4&DRVz=i*$_du!u zq-GZ0<@Z3U@UnX#m2bMlIaocUcqrp`%_H&2YD{#UBk?U&eE3F3z1md1TGXYG#Lp_@ zb}yt(JIGt3ftLs)K9ViE(gcZ{9b+%@;H(4lL}wjXP`*H0!stsIX1h=2iELc(mcki@ z?o$^@isu6?je`MYnz{a48b1GJ8bX_Ohb7|7Z;3KzEwC7zEDlGC=_ZS`Iz150_R0hC zz8u$(WS*xMo57Lom?MuX?%ObHyB(w*UJ5?2 z6#P94CQL4uHRy47WAOl_YnfLm297?q$u(SZ>80>ZPT`x$U`L{i*4T95bd=Xn zGvUh9OuYHT25m?1g5lsr92Ak~C#x4Aix&}Pdhx011zq7q?2ul3+FscAH0=Z2M#d!& zblB#mXz=z(#c4HdC5%c!&AezZLZ|HoH2Q84}@%cq;2*{8Y403|5Z~{qkyzDs1Sr zuYBBq8fIX79;IJnP!6Ycbs)JMOoMzNxg1IZ1U-b>t&%v9nRdc3=5eRF*X_^AnZB!| zBbc`3JizfF3&H8dXr12L6&Qrf{lL;V$i*}GGt)`EwGjF2vWYWO@+H~#8*@bzkTcN( z-zz;@JAkPF$=TtvT=?S0vt03$vQ&#u(fu1R;!b=Z?z4BM962B=N|dT4r+7c3=%j9v znC5aJn~CydkJ;jmtz)#ps8SS@wF7b8qyArsy`FE!iWf#5&DMmDHf$ zpUxJ$S)59$g5+YMLv?ls4>O#g5mLd?taz^kZ7d3nw;CFc%BNDbJc3HvW}M><{^Y5K*Irb^ z%i;)o!`T{f8%&ED0oZ5`M)T#vG8_jZD-0)T#|@`xUyEQu!wH>R{4PepAUn&3ZI7<^ zV;o3AL*uEb5j!C=Bs2}-BTf{g$0!k&hRzYwKpRE`xckr>+9>X1?;t6Tm^ZjJ{Z^lS zIewtI*MzS;i0e{3-QnzX2QXm9(4|kT)EIj9>Gi;Fm*YQH_|gFzz8X(-CySFf=pw+*~ zNL$d|ALM~b?7QDXzkK|DslCBc!WvFj2*LqiGAtdNb8^p&#cfBoBgEs3`Vy&V!_^8+ z=DlatyY6>KRo0HLB*a|S1A>62%dK3p3hM?H0Bg!c-}C9C^Yj~@% zm0(@a%3AL=RCP{|Agv0*G7J zAW40rgCW5DH%hFX%B56Z%n*&8$ie+w0Pr;i^Y{ul?4#kUCY}0HM$7})8(MP$R%aw^ zQvioHEAm2EHU3R<6zC_&A;t`C2;9et}GD^_>Y)@`>b$ltA7+l3PO_x}j zjPx*wPSdU2`TzlP;w1&Gf(pdhfhqMl>t4@hcwpK>V$JRk%60mvA^vh(rpcuUd@mb; zG?+Xo(GRaK5^fj|ZeJ9+5$$X)lA?=+vOnrz9u>RbW=zAqWYQ%xH8U5Nk1ajU=T-_H z=fuZ!e1!OzjE^p5*rMQ;7u5hQ$!lT9vx_c^)-iD%nLRY!)S0*2-ERuZ>dBd1{vtJM zL$doemyh7vN)-i|fS$Ym&E>kG15DbtYLcFeo7lB&Ra(>(kQT0xJG0$Q%xcp-95? zuMTzU3A%)2l_Nhok2XM`xCz&?ZvhvZ=da<5T%)BwgDz zQFB;@I#+4(Vm-$Zq5B*^Q??n2koG4c+hAZu3}d#>L0?4Bd`Lv+cUJ5C4l_i~q2h*2 z2+OR}aPN40hsdNdptvvC03EDM41lr>D`yRYa?Z-2Ojn@HnE0{*>SKlR z?t^mv$v}|@dn2qJ0A(3g&L0HjxhsQmZUki+I%WpYv9kv}rf`W!bUI^el2k;p&R|$K z0K+nL>>PxFbGs`M$xH=94T{!w9jAY6!rTILW;>7%d5rOw@h3{t15pwUtv9DEJ@p-4 z{kPR`d73M+840^CaJPI+H{fCtV(!Sm204o-l0|bF*Gjzy?Xo{8rF>1!n4?kUSXO## zBAW*_w`OI{lXemdDDeo1h*~8|e4fn-eJ+i$BSW;nm$=^Sv~8+9#L=Te&CZG`A|Feo z;*Vnuuwv5tCC~-9CKNS$<~@BqmP+}9$t~5aWrAvkXIagPSk20Hl^RAuo4UbpuTY*0 zCn+Bx!;F>Xpt28I_AV!tZAM8Gaakczg?2_34oaCNMXXP7@1P4Rna)dgR-blJ8l9Kg zhJ}D3<0WCkrj3AZc2Oo+ZyZNkV<6jEOG2xtC#D|62exN4P#aV9ZfYi?dls;9$X=1H z1$rKE76?HI;0rRc|rnzL1`_NzqM1+Fr`fn&dB8;Eb;P1IbqV)Wxg z+e?|hO4QI6-@bv9(VeBY?GZB)?{-Ti|@`W zdmi6yFJtlDzb)|)-~IbC7T>+5#7ca3u#ClbZ>n$`rGsHM!BObwpZKn4lS5ocr{T~eb^ea!%o>gj z_>AVWITC4m4sivjdv#Hd0#cil2|hC_m3KlhlQAjGeginmV94?M0v3(BJ_R=;m=_DlV99*>w zn)-0t`U1?%+yF32I3kz5K6px5K zic!5CkDq82hx0Rt%2C{HSPmHGd&V9|?Lu*JOf0_bGm|9J8=;oS4W>HF>QGn|P^ugp z#mYwuRfpZfz_AKaD#%ZbRqzPlj)!yr9=nA}>Qx5WGk8qL$0hOcYTAjtk6)VBSBPP( zh2vzN=twFm-Wd=P=g&ka$3F+9 zVPq$RNK0=aEv|%yw5YwVloHuZBd_L3$V)jUvC=$#^6K(I-ipFh8aKfcQdmnXA_0Yl zJp|Msl~Ktsm6ZttR92>}L}ew>FQYOF^rk8*n_7v=HsMItYio`(E61Xrf221K0ao1&6waXso0#5z`WBm4ucoC!q3_nGp}W-h;#wDGFWW#Drs4#*~E9 z9v~cZlfu@vL^yg|5e|-i5DqEF6OJjud?scYUjoB9SB}dOIQrF*CZq0pSeP zzr>o1aCBY}t}q1Dw~uh*JhhX!YGEUE!Zu{>S22QwURi4LFaJ`EFZJv<%T zJ;Y3XaZgEm52kMn?mZ;Md(4!rY!TEoCbo5t03va)1P+ao_5*L)g9&P?c(0$uAj0wp z)uk-^9?w_Rb^e=a01Bhbw>Gd&o4oG^mghJ{@)p4#&kLG)(4?s5kLNFvkt{1EToOYZ zOogH_H4i3o9`*P{j-d`GYOw~)Dh)lBg0-4Yr4Sovt;|Q0Dut0-YC%cpqfGEs<^AnC zrAc23Y;?IdcGoz*va*)alGKQkxNh>ZqE$N;TlI=do2=9FZ;T;XTVqIT6*9BE7OOG( zIRVN8C^s3%{d^V5qc9x6x-ke{yZkSP_0nG0Jswdf!+Hy>8^3_l*4W^A;&_)#dE$6q z5-RTTa;%Fje-o^8Z9+vAngEg3mnBA8A4u%e`uG5?S6q4}tXsZe zS}(6l_-0sd9berrwU_9sn>L05^?&&4=kGse zO6+ia68D0Wy>D?D9Xy9Wn3k!KeEwLAu}mr?cYPWMW1&Efj#qNYxJ-+-ds*0FFy)5b z1hmAGX%R7|MVy5qP!rb}5;umaxQ36o$&7O3qyVFL4s{J{9$RhtCCku%gH+^mzD`@M)sHE>(%! z+=SLBVj^0lh)W}9ZrYZLVYVr?S6fvkQ-GJDuVffg}5gk82+OwQJgepkXSHb{9`mjlb41bu#Q*u}Y{ zKRaW{F+pMoQ_FHW8?l@Hd---cyW}SB%9Lh3oQJ0UZfzyj(8G|%w`04(9uMyza%c3T zQGgW-35$L%xIMxD=qy&B;wZOzo!P_e>a*XhyNS~CDrEJs&%F~Mokf-POkY(BZXd7pNx_K?CuC;q4Xl@K}ZHB>cNi;OKpwP+>`*K*}xEqkI( z2s^zFwd$zrU~O>O;o2~?Evv1BNp}(mCLCjmJD1hMWjMpNpkyzrrGzQgGLIdJ%5HVY zZIHFBwh0|`7{rry?T34)dl|r!ZcUi>`c?pVT2>49X${wcnRQt$y6T}{%Y3{I;jNB4 z2*8sed1>sp346FUthCE&D`C>T4uVPkD0eQa#bd=A>KSI1Wwn$rQA^4K4zgUu)?}N7 zsvfs{zrskob|Tg^ z+(E*i4~y25{lgH;j+7RU{nAqXkLCUPKew^0pIM>$X{KiUjZ2R3!ANCnVlpu5RR40# z6y#5nHw`;UYe3WoW(>D)=?K-*jL}gsrc*Uza1U7kNV$n{w+2iBN@x_1VBs6Ar6x)k ztfhUzT6U|JSM_vFiB9Ye*Mc!}uok$<31E4ZYI!vj(2#f5vRa^k!CE+SHdqUeF4iNS zuV&9tL(g|_H0De^WHla10lQmurBnvzY-Vs20=r7o4c~uPXrDv;%YDE(;FA={IQKc`t_H7>^hU)PuUMGD z@v{$NPYc%qq-sWDkobfz?)ii;OpJ7{gw|!%ndkO-O)k2{_tf_0-Rh`Ki}N%hD7|Uu z%{liDfN|mRSo&4^v?IxS7l&@q*pr`nm)swi@7-|Dp1bmkEVeqt=OlSJo4YyYnMMQQ z`iQ3$>7JZZP=xyhva-O2a8}H_)hJ50hw<4Se(Y)@b`X*8AV;x#1V&BUG7k8 zdwK(Z)BJ7akKOA65>0h6a+ijC8@sQu{^nfKru#I}$mV;eg{RS%-WEJH^ofI6WY}tC z>IUS7=D}od6@+R&KkLDhEZUp6C_Z^Xykm2ds%StZ@~;`yGL`*JHbfw74zX`dDKT=ov5Vtl7#lSA*QQ?7vPqm=?6_U5NUvZFvjU3Ni@pX0D!Y-4@d z#`1Il%6aAEifB_RokQA4;|gD_E&J18-OA*}&_iPG;A@ zB98F+HYP9kUOje<&nw*nL)7PS`Q|b$@fCzUcyyr4*i8nJY9l(>(1V7`Sz^YV65|mI z0}UGTMLgAzZ_39TU{QE%;WNecQoNnYoL=~UYv8IsO5z(Wm4uL4+!uB6zkpZO_3!b%< zC0%$+eu-Ya=m&zHNwQml?~-2v7zAHvOqEUi0GF0NjF|&lLDuVZUsK8PthlQ$$L}*K z6Xo~_1SsF4;_xRV9>d7JJG=JpN(9|o`0~}8-~1PnerhuL#=E~&i7Z;8dYrch+GzaW zXoEo-0beFl5C4JA^h>DT_XmE*UtPbj@ZhPO-YM=O_7JhfO^V$~?6-*>*`U}Wv0o#0 z&w9mfCALWH=Cz95OzdZg9bK*1O~fAKOz(p_5mYP?`zvCH#}s??Gk(WsiQUst>?pC1 zD%Mu)5n}IEjPpaB4Ip;6$~6>wh}heS9jPhyAh9#|B#9!58*4$;8w}h!DM)>uPJwnjYbz4~f&*^hk7AIAPNzW3{GHq^Yq4 zR;%sU39W6*(4_9Jf7k&F&gHrw&#to9k|^G~ubV8i$wdnMagGa?xW$oc9Kmwv-+Rwg zM$akE+hvypTe7T>gURq$p>#YVbF%Eq8tVn0b7DtgzUW@Fhua+`k&eUXV5bb9S#Ks{ z@05tkQ|TqR+!7Fnv%S-WON}VK9|>E8J$gS9r8T`D38z}xzhv)E|Mv7Al@W4+wrBiI zcnZ|YDy;@BW9ZPE>4LAgFjA|=WQZ)25clw8&gx&ZS2||`%5=2`UkmHbi;>3!)uW`V zvrsS`y&W`Qo1Rk$iB(+bce5>hR>hBhmx-a%y($YkgmkSJ5h?NtTrUBGEnebASIqQe zEC9NIl7d*k?^NREOwq`hVWVke5Xzx65_%G|a*&ElW|SL?HnW+P z)%4gv7h;-GKhr}W$YpwPA&&GBO^@hM$ue?idT{s23e%&;^r#&_JqD7?>9HYBkJaV$ zn2giIRtb-LdY}!1z(^Uii;xcNMl6wq?N!={^L9B2lu3}l$|E19x*I!u{9|bJm6m4k zns82GW@c7X5Kzv2ZO>3>E`O$?Y@R+3y~I{1`5A#|8;n0=Ha}0{PB;%81MiX~oH3g} zOG#&jXDJDTTzJ-Oe!h~{hx3)RiOoMAr_mq>o$$L1c!-}8Xy%&UQ^Pa#?o`HbR1Dz^ z#l#S};k>t#m6Dqibq7{_&y*(ITa&VihhBH~F4~dwc9Qd4mQQ?S4ob~(zFr5Za)}+e z_~h&@jTXi;glr*8CJ+JGMj&w3MZ&sx_Ic^ z%k=R$?)G{7mCyHVU*Tt1;n*_RpUg zOLZ9X#sY=ZaCm$r&ki|=d3HE;04Ha&jCpFf0G76dz~`w2!%qmg;U|Q%8PmrF-kB(Z#HY3*mSipY<;_z zTG6}~JwOC)IulMA0P~FHfEbu(fbx@osn_4;72zP5S`nTRw%UqtB*@otbMe;5JtmUg zF2wUzTM8~#GCu4KyY|B`SH<-qhE`pNR;>?Z^fwu`4b)o3aL=HL8l{61<#cDG^y|ptvzwjxh)J zYSPa}0jvbawpZ9_bfsyzYPPR`<83&YT&@9F%&xwM3rgjfYIl~cDt`R3DR}jQzm(gj zDvPH8q+ddig6cQ?l+Y$=P~3SZumB#=*|l|hwY?cO?y=MnrEm#pSQGKfgdH#33#NKo z3Wq#FvJyU>C&s`vW%n`tl_ZKDpoN9?n;zxk#ZSNI;2xzcbrXm0fB4G-EO3nTt0lXjkpsE`y-t+GsZ~2mJPnTMVkODQqz9xu3 zN0OtNnI$Hy5-L`OEzzcU5(8>@ij-c{l7nqKY*C#9iZXcXoswacu(PY-l9nuz z;9?(B>u9GB+l91v)LAdAh$|VpD1rTq%(UvT{|&b5WM$ zI*KLS^eS&nm4`IxpsrSvWs|)YoD2(niIDliiBwLgUay0x@wn|*oc9N?tAL?B zIiL7V{Q)3ltLJ>0WwvpRCtEuyY6{CMW@z(n^T6GaD9<@)gj^OwHpQlMF8wrzs!-=U zM2w}{ukYJ)x8ZRA{vF-@=B`KHNjss#-rjflO)nFYJtpgfW4PLp=9;8(s_9+(alTkDg+@;Pe8WGCajZcDOO>T(27wsU;O!S?<)B zFk1D1E<9PNq_r>ChZ|+-J9fR!XEC3;RBRCv7rt@BwOkdbA?RmCcRxOBv&zcXZxAkX zoUCOvkkST&Uw&t3bvfDs0%-BBiK}Ip5;>rgD&Ag#&Mx{}f{yzfSAveu9PHzqy*iRq z&<$oyD(Di}TR$t>TI|SR)^?S(t#Oozfo}}tGWSpJ;|6}ngB!T(SM%X4v{#T7KU6N$ zattoZLxIrZTag{|wqjl}=NMd;SM}+(zAhPfE_++mq-V!!7PO~G^ zDcscx%bzhRPsH86p$B{HSB6HX%6MN^rVrXu89alg<;%kP%;)g=o;0GnDji%`aN??bbfsB+`q!WvRhTCl3MO8KM@)v~U}Hf#uH zic7!1DT?o_!L(V=>0~92w6sg@SV?w`db>WXGy7c(>^QY2pn-vEQHpHUQB0vF*Jk*R znA|^#X&dA^U~Gtz+ZgEYh=&4U|2(F-CxK7SV^UMcq%0*$3`<0yx;RmSi3dGQt(0Gp zbVy5O1c~TO=J<~AI?Teg8`(p^AYuLCcF%?TZfjrU?{rh)bBb9L^&@-uX( z&bRbb1D-S{HEXzbp%s&I(}D-d=q__+eKQ$m2H(8-RG<6+=wpp~KGl==^$WVG4GonV zQ}Sz{3`7&?fhHM1>T`Uj5&0-d7;9;iwICf&T1zYe`I-)Jg2o|E8s|GG1C685&_C&c z81?8Za4x)-FPdxMwXHXS=gMm<-@6-^y&+Di9r#OvMcuVxh_Q39-#)}hng7>DjF2Wa zRSpBU0%`g%L(LxswCN&D;V$7$P51$0sB_|>rtdcs;<^cuqh_R;82yZL~;tt3N=jp5Gwg$%Rbe}tkvzD zW=3KFOefgaZj%@FiR>0S5 zc)vAyMT~fh{7{TIi@cJEH*%3p4cVP?x^3E8d8yCe8UAs7j=7#FkawijMSvwOw*0HsQ1OAA{Fh z;O5)!FVb^O4^CmlUaU&F)dnK&L5_^OeJl<7EI*5;DNgGD)z6g)I5ctu?<{#*?{*iX^LoDAK8Zr$ zRrU=O01-%7XMV3*E@)$YSUwS7b4C zGhfe+p<7+CcHZv#dfPUiAMEIZ()Yl1YjJhJ?FC2g(H3=eA)_Yu5yT4|ovTOf0Vh<9 zo%J2sf#cuy^U@%&CiIhtY3P)rc!WZ=m~hw`ld$wpbrKK`|KOO&UU>%tEp6wq22rEz*T440 z)}C#CrqF$qoGmd)ixxP;%CHU@=!4M~;!sW*!qKw~brh=Wge_Vmf)Z`Y9GGCAsKid6 zTz$YKFdvpB4f!u@-oz4z4%Ea)Nbb&XC!~^eN8Nj3UtMz7c}V<>o+|ao>u`^+zDpFc zJ#wHfT72e9>fkM3OP=Kzju%r!gJPHTYwy1NuKe`#(wBiZJbvjR0Gyd#(tC;?Grcol z4iT!sL~6w6nXlp|-Seg5Qc6su7M`-hy)J)Btp5y!&j3Wdpt2W-)Axtz1L2JDl>Iwe zuiJlKx?4EzRxFj<5~D_8T9HX~5F=h9{5hdOG% zu(CUx{%=LALWIVibLDAp#*+UJb?*ab*KyT(zI)&6_g?pV-Thi>NiDT3)xDPF);~+J z9b2|+OSj`cvMf7hNx(p01NH#Ztw1DXuV+@V+lc@%>wpL%Q8EVFvcL++pn!=r#F=z5 z+MofE5yY?xYT% zHdq&Nj2ebYSxecm+VJV2EgD{NjwS6;%UuIS@s6eP8x55fmU^-SEi75d9a!oE*dE6c zAIDPF2MJT4GlK4zg(;;2jOHMbjI{$($eZ2>Q;f}(5RW#d`a)0s43y)|=tMp3^8o~| z>Y)fado;z^#2b#7WN@v0Suw{EvPOKJlS%Q8qrOYxsGNPQg(EAu14mVGRCZMG0Y_?g zR{%h@aRWzM?m$Yp6Dgdzz5!Bll)O`eClpr3_3`i%H_+~~k(FS~ooT^GzFQVrL^^}+0yGZo3=&@lkoyVF%ibsv4ar-CAPI3x2NJ;?$Z-Ced*ZpZP zivXI3E$*ESKf)k;%O(tJ()Oabu$@GtUdCLJtRHY0%2jFYj6gFaJW`*N031{%%`6%3 zFHOLP)sz;YzIK0B#yhgZz9bY1C^DajwrA6S!fy(EYhoYhNVoNgf8Zf;K`heNM{%SFv4 z8nJ0_=bL)H_I#d<15?Nh&Us+wFKibs;Qpynz@T8{=9&$u!~?$kHt3ry=Gs&)rLnLCA#;@viiiQ*)5 zRtR#oSs}dAJS&9NcUFk**L0W6mUvbOid?focpiFI$f65E7I%bhCSMLt%9}TNn{J#}{)x-%fl-M*Ha(?pu=8Wy-5RsWx z;*h&Hd*N68;+WhoZDiA^C+B*zS7k7Kn1s3fp*1|vSn3)eoJ3O)Vr6jMzMZ#3_v)aE zt(%oa(%9{})qq+&vO8Vp0Pj{qf?6;ZR==|aIAgQ6D?!XG&P)SHR_Gy8EafAb{^mjl z_kMSwRePVijGRE6K|ndIOO}V#aG6&pYr@)OWmtihRF9+t%pN3-nVEUxx+=1a3cy!j?W>;ie=OR^VQq=d1MJ<;a8^A&|b=H1A$ z-}tU0VwYK9P&1-q?n@bkbc=d8WfKAmo-VfzQs2K@67=Z`iwOrg*T;ZEJMGRdcXd(j zor<|uz$|E5msj#b6;$tqF{bO`%Esud_5;mEaIht)>C(IreUQCw_6n-qe+9Dy-s5^kR3jnB8Anv(|yI6_CkQIl@+gtToA)F?@@~6>84@EeG*Bwae-| z?9m+CZ53FEoLU%5yBv=w2%eEJhDTHdPlF}Nsfh8mp@P7}Xp2Z7vrwc3zDpusq`ldh zCV4Xm{M~uxQM8t)$8X|&dAZl{*tkT>F;@?sMdqxjXlH-GOTs@Vp;k_udX#)EX(r8} zrb7OL$Y0G%`O8)*yvuFVc~(hhNv!h8_m@`Euc;&$6C@r2*jhvv5K@q6{K=T1OF<_6 zfZm!#Jpfji5sYPEv$5GbjWBy78s#`xKxbmH!VDX$R|mpPpmth1^STTPbg zVkgVbSyDyOD==)P zAbhe_+3{9$(fGEm9A!lNNR zBBp^`w`*F_-vM>cr7P)5OJqBcVVc`6&a*M8;WSo#Yg!+Lp051Xv{!ju=FpvYiif4z zJ9MkFmAOC9Tv2AREdFCSec|J7?raJ`!d0atDWRK`eQ}U-hpX7b4@439s zTqf@`m&yCg^+xhO`ag#CVRScc(WzU(bQ0H$e>InmzLPWKEYbkw?OM5IlY}^+BoMo7{A-2?_o)_D2 z_AqOxwzboQ5c*Ctmf~f;(@a$A1yem~?=yR}&rF9=>V)%}W2yCWP{(d-ZXh;>A!CWA}E&HWXV%?=;W*L|5!Q#a7wm=CS*_Vh0r4$L24O-QN}4r`S3aC67JO z70X52bD*>^0_ce;Lo9c?P#4(Ln1o%taq%FpMasVKI%ZqXakfhh|CxB~+s3 zS=2nDFe9u#qUND=PSk)!4G=YtJJN!hY2OfqN)%CLq7YN^Ps%h%>l77RR1X21P_c6uBU+kh zBxY|m7M5#saut_pHM&tlWdpuDy(+ADC&3#3QUT2u8I!p*lGISjV&Nz!V@o!1k%fiB z@79XaA5whnNn~okT5&|RU3i43w1`q@#~LFoM3y(JlqvWoYfR6DYfOLl8gu2v*O)7< za9(8D2@`2GHGI=l2t%`XLSxBtTUvZ%vG^f3g0ivJ!y7Ej?0OJkX1~`~@L{e1Pjs-1 zP=PGgHilW8o#z^R>^+pRGiV0o8TWN&v{dm{x=w^l9oi!nr|2uRtI64vuWX-U_S z*iUYZmicFef5!Mk8h59D3~7M1sh1lUoIsKNIPyD!qKqI@GGblP^E>w0<{yq|8Ms^v z{Sg*;y#f70zTeLFup`&2&_wWhfg^9+Qm#2M%4>2eOs1ii3dMaf`1rRDt0794WA;)e$3$upul1o zO5!l=1%w09=LppIck=Ha1OPQHnR0U=wm zJ*#0zLgnK76*BKx0h&v5pYwr5`UO4~C(`*Pc}Ap5JfXC(W}wr62>w(VJz{YBd| zn*EQqXL0uDZO;|i%Wcn+?9bYsrP-ghJt6z=ZBLS&X?xP*=FBdkXHg=&^z$w=43*^P zw2&n^JG4@lU=_1h*Wi1zgy1szF3$a(`JIBU)QHZ=s4iTIY!LhisLk>y>CVTSMQ$dw zv19A?*On!9-9;1DW|&fikhCJ>L?_inm|_-TS$sgyg~rm_0<%Cvk~=c!HFws+DTAc* z(n?fKj*bBOi#M@TckyUDOIm4oA zRW)`uhmAI^=Q)y&CR$N&(6f?q!~dJv^kvPaFT3ofKet*EM%rgvg;p1Wj78Sz7b4>g zn_l?_HQgRu_*#2?d9&%ut?7NOUawr(>kMhe0Boj)fKLG~J~1dx?_(_+unAxnVWG4d zFeeopV+toVt#n>8_kelGYCXks9xxx2dB9;0SU@!%@T3P|l%4}+6}ry@7BclbV2=lY zcEqbnasH>Q+EE6j2fX3|i;>HEz!?v?g7*bI;6)Eu!tGfPINGJ37qXXLjeHiCGWT&BnY4Oi`K z;UWmt*4vS=4%ceGS&XV28QI>WNOEoQdz~F(hD#j4X{{MS;e=gRML2e8%2C-0;$%-q zNZSYsH?sK8jiA6BDKSKYV^xM)ZUn`GwE}epOYxSwku|?~S#Mso^vjj3Mq;nB0a-!8 zngBP?ruN#A&zy&)0`Xqf6NVzZycqha_in-3ksQHqmo{5)N#Mn(UkE%aEX7>_d`B=h zbR768UF@vq7dw0HVyE`iov?Gk&S3A&I$&2|8+PmzwP5Gc)zCwt$Nh2 z_jqN*hkk*Z&}k8?_Z(YGIM~#}ToN0QvXtwCaaO*i6w{p8qJ;2RWCa4p8*O*e!p5j{ z+|>!vv=hr`CZAwgtbh)`_}hxH80|EaiiJBd0UcrV6Z;y35SRcF;ii_pe>Ey}UYVFB3Y*RWmh#&-Qe zSP1Iu#2l9T#bD9vrn6E5OBmXo)|=4GWj1s|Ba1N1kQ|!1E&TU;5A=7#gQ31zm@rr(kr}7?XM;ftXpT!S?rMUoC1L z_O<6BJFnR-;*_bgcf@@$;l3)pC0GnSr#P7RJLgVdnqTYpVvcEv0f2)&= zJ2+5gR5iz|YSJRE@v1>t^YJ>+8m~Tb6~%f;OEgmRHv34e)&9JP3;YaNTRU{s6UuA* zK<;5ebfEUOf$3TR%H18HU7_zbI>rl(z-)p=K{jV}X4|;{$fhKc=e$pIjA-^v=5f!(y5Vao z|FY;rK2&og|1*`({kQ+46!kVaTNqppC@?3yQ^Xc7iU}pcYu;XlJ%>F~4`iCjS~cTR zerXG|{NjaY`8(qg0P23Pv7}~2wWr&PDx5Nl1O=y{Syoh05`uqr>#d@Ev#YyU5Dmas z#jK=gxKdbm_7*TDH|bjH21fk4apq~sfk7{?mRkghn8e+MK@lzzq-85D%}Od*E(mKP z=JH{wcN*V)2p}bY(wqzku5u602Gny;BpRl%$A@&-@IZ*gqN~kH&M%*gqKb5n3(^RM zdh)uS5mDbE@fNgv`Fph2B?XMFqtzu7(h}!V8rC!@n}Gs-Y8zVDZ3{EsL5++UERb-r z#b**|%1qW=kANFWd9`CYBeIH`HKTWmZH0xTCY3End@X zYau(-GTV9pOW_-}WyBa^cC#G&aoi%uUL3c|@dOUEkqR~rqI zxVRj(+OPL?)i&L#?X_Qxv-v9NeADqNjs*%ihhs#JS8yzp<1CIva=eT~mN2t3I2OzC z5{@h6IE`b8953QnD#s}tL5`C+5;;!bNaZ+=<4QSZa2Ob`{aO>ArsGu{4i6582ZzIh z!{Nc<@ZfNGa5y|T93C7F4-SV1hr@%z;lbhX;4pYz0I+3(@L1FF9FFA*If`S297k|m zCC6bLV{#nAu~Lp{9INDb631#e4&YcL$9^1Z<=BVgYB`?3u}+S?IM&Ot2gh6Fn8IOT zyZ~ShPt)-n4u=Pa!-K=&!Qt@WaCmSyJUAR491af-hX;qlgTvv$;qc&acyJgPXP=F; zYYak0-L-O@Bjh?cUcvEJIbOway&UIp+#ttmI5x(x@iHMd$-&SJK4up)$(cJy z*q;gUc-Z?)DDuA?je%M(k&PeaE_Cg?b5Tiyi`t?D(#~2&PUI*$hQikv6lc!WjXRuD zjG)p5Rq!O5`Wcs0Io8tEA7x>3FN5$ z7o~lRsMSiu*FI5V3jb1^9sh9L7|zb)`uu)6iPp}|_B<132h2D181Ha4P$VSer@KP- z5%N=>1Gyea4ioVIeh4HW7kd;Dox+|Y?Ekhfj#^$X5;8-`(?7!%Xi3ke9&u3~;U@|I zn1!R~h5t1E$A9+1bT1Qro@z^(r#pxL_|L><*+3;uJ=RpPdmX_4P4*h`|B3j*_+$9? z9*(n5tCmJ3+mHL#J{)IN+I3M=6}9;Eu9?u<*0E%JfJjtpH}!^SUE>=_hdi%WV`&owKQJ-ADG+A|ILrK%l{d3d-~kaq@9U2tx>Jnbju|JTShI zd_tsb+Pf7bk#0uWV1Yp`!i5l?Of{P*<|nMSx1SQTm!3pj#=E{TWWF!aErkYG#fbUH zM?hfi{(HjX-2LN(7jeHznzIa)*Z4jkWnblUENURrZ(PBc*HU9n2DY3^{blOXFns*y z;_N>Foq2u~&u`I`h9~E@oztAk`FV!2hS0ww@u!qio}a{nc0xO+4z%(*&8eK92J%bS zse`UOr#Y4LaiA3*1ns9)r#yo8KX%rs1F$@&IhFHo!OErU#E3>Sr#Y4L%RqbSb{exL zG-Fsmg(&CA%fhX(aGukg%K2ZJ)R%@fw4pVpa-O}coW{<0o#s@|KfEkxjm7eu=2Xt7 zFRMR|@$#JJRL(t@1+B4Tp3|JldE~Nk8gJ$~&8eKHFKZ+i$L2ZBshl&6_)GW7&Fx+> zr*gh}S-73)n4s=f-v4}A*gf8n*WJqdW0%#|6CHWot-SxwWx;&1Bd@!a_nFJed#WR^ zyOsC#%YylIM_zX;?-wqshhFN)>u%-!AD0F5nU1{fR^I0?EAPu4dEKqNKYdyKd$uF5 zyOsClOSG3Xje7PUnJZDYA2NA>zt6A^i?iv;K1t0z*)(C#@%Py%`<#W>?u{diD6tr^ zu8m)}_nGYVK}719f5!aLq705U`;F?|au&wr#3bgkKbFSh(fdN-1LKAN#S&#u=MaD3 zzR_CkFG|JevGVTt(NOqwS{+}%_n9OL)h3hj_nY45Ov*2OF1jDCv=woF)3=m1-&V-~ z)7B;Tocqjl3S=$+bapU}r$hXdR5%Z2M`xndMWj{-)ABS7sHHrZ77wOKkn}H``m7Qh z48`ocB|XSGa?V}ZS^G{;Pb>ONEBbUEeX2A1L@RnGk3QCprtwdO9*PbzWubT%Do;`D zv~SO{bFW8}*)L2zDi!%^2b1=J`%0T(s2gw+t=8VC3rMSr)fO(E1{rNMyTHF22v?^-cfZZhBwZJAU1dKl40{_xaB_ zqI$>IY7i85pv1~J*!S6J0t8NjP}nl}plaOPEaQ<6yzeuL`F%_F6wZCQ^I%G@o@STC z2jSomB;?4OcI2ry4&*`mJO~7`1bZ0WGL^fuJL)l{PHU@DsQqCK2NiFoe72v)YoX4F zFphD|1lToc_Ynen6Lu29M?jaY$XmtnX3xaq#G$AiETPyzD{c;m!6deh*2-8DUv|og z_BII2l#K0((z@V`GK$oS#y!$*&#R^?F`DK&>;js+prYr}{;GJ7?TwU>T}&*2q{(wx zMHI_C<3J8LVv1~))>&4p>e)+o6s0|u^3Rqts)CLp3sz*aacWM|)y7ms*J^*&Q!G9f zy|0J)3zw@qToH(hX#a7$Juf9y`DSw8cKNW*bCgZ)8jCr8)SlziCYz}2#in&$zy z>AlUoFEzdIFz;&%y`;Tf()rx`h(*pc({3>Dsit>}dCxSx_j9edxc6w3=)tSck0Ypv z;`faPY56{3d69?p+=nxif6HcinEC6?2Sd+qJ>9t0{Ds1@%?CeO+YpyRc|6|B zF^j~ek=^5}#+wN&y(85KtWrv-bQV&bRfw!RMxnF;!32{nFQfMY5GgDNtk(eRDzkT1 znE+NdD2k7!mGM~i;W=I29eQ`CYF4O>M|(SAn%%G#OpP243Ij6$IPCy>F>i{TRvE+U z1}-vd2-+|~AxLgr-bA$9?4HHueWmFQwc3x?;`(DHl&*CdBnAYT{SYK$@pZ`8HSUvM zNy*_Oxiwg124UEbJ0F}ZG=5nlMW+15;$64zfKa&hp=CxYA|2FT6{ze!lPE8?kr0hn zc8?eL-l|zc*&6iTCEa^mJFKhN42xb%komDfDPpsOFABPjrQ99w_uoSE$Cc zLeF=FYVIoZSXZbfp+Zk}g=#`6^lVqCCWk_&;%1w{OaW{e&Wj)$#{pj27IIi;ZrgeM zJ9qaL&TTq~HI67LfO2pqyXTPFU0R8_x}*@OF}Kq^ghzo1$vs1MC28n^w5&@>yoC5b z%Dp(b1|PsaJ9bD|NJ4?mE2N-_i40+fz0ZEeS91~PMk_H^CgdD?Lx9Y?bF#L zkw4hna8*j@BwX>$=Ne48|G09+LNpfLr5eS#%YCd(kqIJVp*8)Op>uu;c!VP>DUi!h_ zQ|B7-v6f{GT_4cO$?l-SEoe^+60;F$H;;5CRS#)_)aF4+Bb5tMR1eGd_*9G^heB+P zamxbmk4UIla>#yG*#U&H(TqeI?*i;hYfo2XNmeNpi58aZw&tvsGE>2r8eQ71N4iBa z%}=|@szO@T zXn{&<FVv^#$h^h=w1Zu>oZ8T*w@ zp_$-|pP9aG!FTWa{o5COIlGY69^ikP8q zRtDreUBpQ7>!qdan31ICn_16onr>Y4l&7BgUwPqs$w%|7XR-%?VaYF3r=LaCIQTCK zAohJwFD?QW?$w(mB2YGARSRPml|yOyTm*a?R>bm8En{)jCakg}#rz+`R!o!Vlg!Df z1`~$kXZs;CN}QHeatGwOzQ_U;@!4|-ksS%oLQ9hVfd?OGW&etJt*a6FBd#VInS|MIbPI@HOwus7^t6Z(#Q>2&vs}I zLzj2WcjZ)EU7;1hx+114__IgnvYE%toO2e-8Z}GC+imIDPMI&*2;ih`;yoU9ubmE} zOD7!y60j6e<;ALEYi=u%<@;LdJY?D4q)ry8H>}flY+rMoPuQyV#&uqRNKWW|J^NZP zs$IXGK*~lWNBaxa4mf^c`c*6LjUiBHGP5D#x0_{e(Q}0FjaVeWPE9M>%m*+ZgRL*N zOWBFs&EAeFB(i2mDKT{N^vw=R%9>RSBJP8Vq}co_vNYxvYJFoK%K1q=>_d~GxuYM! zfz3Q-HH|B2DxWGarU%$OtO+M zO$JL&j|MbbwUYJakicmSIrnt(+|YJHhK~f>+JKgJtQv7dWj+;4d`5&`Lrbf+D3q)xI?$ytqZ5DcP8*~UM7zkxgQa?F&RXZCYA+}p zH!~sR82Jx8RW!8;V;y)-MMY)cBZY zNRayYBD5fuMkx?W-B^ipX;YLfwa>zHItvbcyg4XPjRcCeaA-aVGwGVe*fR)m7L0R{hikSHvp?y z!;7SCHJV{e`)4=$kM#y?RZBOU2+44Y4Z>Pg>mDTOqb@OD82V;>H6D0@=wx{#6N}l#CfeS>y z@>JR<^wJ!MB(-9_}NJ^xVxmoO}DSO^Rhbw^)q; z$((uB&-`<Cpy?SwdB+Qc18lv$HdS-?+;YkYB3%b%{nGlnxpdA#C^Ds-QEsZL0F( zZ5EpJ*#twOhQZ+*;s;qLaKVzcQ&%f#>Ddf0oCUJ4C7rEq$Y*@V~IZQDts*!Vq(p1jMxvTo_cuwkVNX1QI*5h9t78~&PpwsoUVZ%EWE=lem4N)NC@;z6*uIP@um+4pJK1 zV`!7k;McP=MSmcNYCs6qK~$009DLNrAr!xo1&MvcBSv1ul;z>^LaxGmghE9;pb9VOhufPzIDNKi-}c;?4Zy z0)Y}%#Ihwt`Z200oDP7R(bLS_#yy&Ey{N#YeT^g7D#7TGPHK=%Uyp=AZ;CEsLO((h z0z&9({F0>L)P_V`G6;T1jdVgk_h{w-9J38V~c3~ z<{Kz48ZQZz2v7KLrhY@rfzkLL+|y+}HEG#4`-kI{@#qGsjK*IkLF0y)^Oo_)-Ki5H z>ka$7+jBg~hiEJJeh=bcsPSCH@>Qd$Y7*ua?TfvUUcFL;eGF?9Deo)Nn& zx=D~o_5)sWO>;< zws#j*lvKrC*`pL%V}4;d?a!dj1-_qW#ea;i$Y9S8vC{S6;hxPjR_`$UjEeU}k}^tS z5InUR+YBIhD4W^CMh3pRt^(VPBrqlS_I?BZ9A(TIfls(kUZ`E#RwpDLOs>w-= zc!W|I7LUM;aUNl-28aRH0?W5DIau_0UMU=C=%-LsB{!DC;F^$^-%jD`DNcX1!J2<8 z`4;s8A()iT8Li30WNxrrlj)-8leg1=p2_EvdqdCj$u@Cf+S4_JF-@ic1|Tp&Ma4LC zk`wL?@$(16+n)~Grf)2Yg$AyjaI+p)>WqVjm|zGEsF~Qw^JY?mu|ihrMa!&(Z@F#l z+ZKQMPp@CZaoBz0VL5s9AtM%Mg%iYn^$Ds3x-UW+_QN$XrP{~={8fT$M>1y3Ba)pB z-i1vB%g!SWe*0~ocxwKtFMi<RK%!MN z8nb_zH4-Oa55P`o)Cp--;f)E~i>Q#^(AfUGbqCf1TcHgL5?{<*<6@|b1%Xgw4-16W zAHX==U(mEL5{~8*{ZF%yLs(6A^tde-pcV=bGB~Ua)Z;+l5D43zW;95cqUQWla^{0Y zQ-jXF$_LAsFUbZz-ec+`Lc|$8FQC6EBp@B}<6G zH@qq%Fo*$W7c8pqb+sYKEM4nkZ9e14=7DDU{H%mPp3m+!9gJBlB#vOg5H^{AxP%Q( z=Cx3~VO;zsam6=?WBGO32_Mv=o%1D1ssX3boi~6+LzEUs;7Nx#)wQ{uYQm&wC^o0_ zxwk#ga_61A?GtqJxL$%{GDD&_PqK8!}2nSPbe8F%iVaNkpo_kfRojLg~)Jbh6uKYzUWf5dv?@y?A|?q{$LM6MC0m zldKFN$rS`*5C@db34N0=RisonGhH8uYM9dwwV*76g9<(Fx(kuz2diZ@rqWf<;Ll0Lx1n+n-(w=0m>B_ z1_)WsfRiV4U?C;Z>oM8H5_y({nmpMcWutL%vx-mFWr$$q-C*AJS-*Qx%p!JG20N_S z_2ylY(Mj^IG4ES4#=5*?=DjBCb?-9sUdyc>i$(B3QEz1)nRmpz*P|qDUf#nY_J*wJ zUh2bpV>9vn=3Uc_-Dcj^spB!b|=g9*%KwV>$^8f?$Gy%D7jPLeNkfXs_&0bIK+QI`(M6KM#+%A(@`={-$M~b zy7?ZC*!}T65@A}KFS?J3zRyKTs_(H#Cjp$uN1WU9Jsz&fRzg0$uS77Le9uKpG`_F0v(fiFCsO*p z7O?;nnX>G5>8d!a3Ab=&zB;T8SMS6o0>{nt?yW-XMA#&R!v)!B*=%7pjxu*@gpIpX zWAAP5)TmSkj!xKkz0#c;$u`&~(ksKdus*B`OTt^iHR0NDU3hD_KHLyCgd4+6VWUAI zNbJ9K*{8@k1JVHBSf0#qa00lmud1kE}z zB?hPtQYc4&BJ-A0fb#qlPDo1!pd?YW0A;?)DU@rf;1r;EUGyxI2utMk>vy^4^(B`ZR zH6z{iz?=>%$&K(t%WLC9Q8HKRF&E2|4cfzlunQ#~DGw5U@Z^^O;fxZnliuQH7?Qa$ zOMq_%acPC18uler1HUbmrZlFWbgtMIWR}PkG~(ZmZ(ifA4hKy?6LEm1qsda^tupEq zi*KXchdBD+w`_o3YV z0`9}Pdj|KB+TE+^d z3>-Kl=V>h1Fk`*Mgh>uozdk;X=q${=K7NgbvzFW~OcW*7y1Vw39_-JtR&%ogEhD{W zRDh77oPvzLahIP4^!o8$#^VLMG8bz%hFg%L-8UaSz9P~rD$}gVBFA1vUDX{+?~k8xv0K9+?5FH`CgYD2IK%~ zIXl1-eNmt^*pP3Ql0LNt12iOi-A=i9B=0FZ%%ta)HJkY;Q?Ih7fP^&g!J3&e6E%sL zy8Z*%(jSre8=lINLL8flXxC0wAkH0_nj8@9u+taj1=|gvVRKKl*39}Yhg4aF?42-8 z^@+w(AnF4c$$B{H&w-KcttK#i4h)}yKix{yq>i`@81pzV%Ca-*qv{qgDB4+nY_Rf7 zClY|JbIW(uS)AH8mO>R62to`;P(Z@iVLK|hSCLy(oQOnd1R&zzpYV*p0;96*R1mR- zUTGz0z&5s6tPZDoEj41;VOB*y*AOASv-a~n@c?(Ype4Pn(PeU65l_m&%~N_dbWM`R z6k`ov$i(AbfQBchsNC;d4_Te!a9~;f_U&T{(69>eu+OW5Hyce^EA{@l_r#U+lU&9l2qxGxbcj7 zm!}gp6JwgONHFqDp_u7elnO&6FFQ95PeQAABzAY2Zshg(9*>W;T|77@SxHG^k|D2k~CHDcLD74hH3R zl_-qFED*&8>s2T|J6?P=Yv3-?-m-{(i61&wP1bph#N;?Dv{OCH$b@EDiTp@a4cIv@ zvW_h_Fm=H&%7cp;lS3hUI7s%CMRZ_22w7hPo>U>mU<-!vLU}V*`dvOdZsfs%@}+rSfUx(mDDD6o-~+MX%q~!w;o`7wY494 zw$TixznB>oOg-x|U;9!30@e+x1A>5NffOAEZ6_RtU^D=H0Kl#7ZV8j_;d+EJ@SqDP z^EPa>)Hds2&$^S%wPg`~?aClgtj1Y)28df7ysBC{jnfH4?k z9dy}LbeBXQ^GA1PGxV<>y(Ps?62AWUYn2_7X}={TpC>GlFk&abYldD#XADe2FFOZF zKBuK&o*@}S$-6@Tj_j)@t_P`)ne1K#x3O z>b1(w&_9_DHybbrg$;v~XpKA$d<+o-em*Oqf!!S~xkV1OWD}u0Nr3XPXW0%jZ7aHm z4@T2@pBOa0tFr=ujBnnzM zsfCew#M%k&aLF2m31RwDtp`Li>H{}PB|dmq(sq5fXNQM5LDLkEGddLv_M&v8Zw%pQ z7A(t309|9>06k#mP~vcwU$!0++4F}BD_CPTmmg!?FjDOSBu3BU++u)%r~ZTu5qu`Q z*etR^NBT5mLtB!>rViv(vpwl&B+dh)EYc(%2?>nyc)zH{`n1YzOrjZNI!aQWDmPfv0dU=j7r-DQJuGhTf+n7M)#5YXv zx|OLSYmALpKP2ptY@-01qCsb?AcxZQ88(we2^oDhtl*6_3MVxw!ON6YtUXVjNTRIli(CR8` z2x0O?>!^n%7q3Ia@uGDM1R8X)I#y75<6(ZP52fYFi>Fym+utZ|8K97V$(!ZBGNf;q zUwE8L{S(B(Ar}#jL;yG&V1AULz-y1}Cq#$^$MMD?&h0 zp#!>USvFo7)`rz#YZY)kI=o$-pi-K0(Slow>Eepd{VeA2j z46HBOky>zyyLNIk6;?jz1gf~p&#J<;4?pb+;-s37MV(p2C)LnISIia>|O8Dye) ze3!AyJ=r-#01L7awgzaEimk)|IQ%{sm~TwAI+P{N&phTrW)TQdwlw1@n-8jtmcu{n zdgL4NxMBAN_bnzjXIEMQb(oNIW`Ksm1LPNC-YlPfRrx4OYU?5HgIxJ`YS<~j+`zVE zxXI+1UPxdb)hSuvc&n9{x!b0ozJbLZ(%ReDYu2K3UCsG5rVe?nhSbyVRDynSq; zbtEP)+JXlZ&Dh+ZCwoD&_%v-fYA16;n0*uSZJeIf_c_Wqqs%?o6Gf=y%XFrVd+MH2 zA=G^~;!E8;b7ghDq;F5Q7z|nEa2k8HClu1sV&exHx1RA#)ZF2iUY74}>?WOWYk*yy zUTke^iq@S-txG95uiM@ZtKM`cFcs0@Vea_NWO}#RqXqgAYhm=GyVRrZQjeNTBV?I& z^`-{PJ|9uL!ZwTlra%moEfTAP`n|RIWm=fcbfOJE7&z5L*$GG4X)Q1(X@M@{8{RC} zbB^o^W&n{dNU*0}gfJGkpd=xsrZDC00mGK#g=Y6Cg8oVi*-SHtJja>^!mV*_suk0! zGA(wbDX2-UG&=Yxn8A8VwvkFl^Jc0YS@eNXMns>q)z+ z10|sG;J4E(@9xI7ynSkE!J6m|gj!m;y-;lmJcfh}!ll8dX{lCfi|g~Z@gQHOX=Am| zO#9M{_N5Q?MQ@KywG_FbG&P(O2tXj1{$wxZ*-IJ*Brj=N+t;&07L>i@+1aWKfTLwe zO8aW}<~Byrlge5^(MI8c++Q+e|746xHU<@2@Bpp@UMK=(kDOu?7#NllNNj( z!Gr(X4}W|A_dn#pr!06q!5`dk&63(5KJLLUTJRczv+w!pOFwYzgC2a^g2xE{?@vGa z!EZZ$z=L11;AI5=^xnUG=;xk3k!)HABRST{Y z{G~7a{kQ(vFMipB&s%Vn;J*Ls>G$5!_xB$Bngy2#_PeY_Y=wY9WNN58b^n*&aQzRT zIrzyB)&8zu@33$Y6F#D>y_#-PG3%>FQZncWRQinfRb0^G3MsR|v(3Q#09*R7EN0qE ziJh_hENpQ1%rHg1+|0nWZmjQ%gMqLhSJ%TAViXV_Qj?gJp|~(u0}4dJ2td6s+cIm< z`iSm{0I)VVp*WG-eC3q^x*URuY<|fe#~~)z_I0;K!D;;O8uoL9d!P4Fzx-XWQdD zMQDoB%5F9wg&O5ea8wNQ%8`mwBWgOk%o}9_!3!G&lA3K{UcPBt61z25x=4G3P|$1# zw~$?S-5sd1n=>7ag>;bseQlN)M9}{~Z;hKcrzx<5WxY?Ii~dZxSbdO~SU`i*x{9r{ z*%)qj76Yp%EHEp%TCV7G4L^pRZMpLj}I;di>4o)U>Gz=MB2+_C;Wnt+Y?&nR?`6yKBSefS%xkRJZ|VLWfF5V>+OsxXBh^U`2T>H%Nq+&od3(Wk3SA1KICD4mpsy z&mrj-qDUwp`@>KtkUA$sM(ZG56q<%X!$FeuA+l+;14!=9tDoc5H@x~eUVZNK>Kk7D z997>4b2_VUXeg;!ycoo`6_G3Bp@EBWx`SaevTNr~9g5{cJz<^qIUxIT^BGS@mQfYU z9h}8!;0E-@d<5H-J+;y4uRzG>m&$CuaYi|!$Re>M=%QfkBAwXxiCjw$6SYGl*R|SD zSEKnnA!9T;9Z(mee9g@Poap7k)My>4D~PiI>NAlZi{T_PHxWLRS(usZP;7-ncvmv1)l?lqmS+@-<5K)cw?kEHC~{SOIAPB7&5jvt z3Xb(`xXX|y(Zb3z&r#+<5e<$M_~;pt#bcfOM#;XQ}Y&YhFFiznfHj zc8mm;&04$jp!#MNA`J18`t;GM`vN1i|LhelK%gXye;pNdcS5s8-JxaL6YTX)Kl;XN zgWJ(w3G*iyH*OCGo|6r(F%kM17j2Ye7e)ES>g?zAaMA^Ew$MG9&(3nJ}Ti;NM9 zLT;gxcFhN>s}VDv}>G=u|ix$nCVm45mw`XOv(s z0(3F*z!^TKKz{KE(4^m=*I&Fy{c!UdM9td8Kxyr;oxQF@(udNz!Xyk2qY+wxuxnf* z{S){`XJTEJqi15tKtMQS4s9y=k1d=~9F5}b?w0dJ+xdIuEP!tcV~@q{YrsjrfhAVI z;U(6;aU~YD1LfW%AFWR=7-bK9MQ}GLo^blCQ1=BwVf?Q z7qS+jCI8TH5p^pClcXa(sr~MF@mlOy6(5CyoI@YHZb#ixV1tv^u%s>x&CuJ>4V5fP zmcxd{n~~rnsYk?Du-gl{>{hG;ER_grA%oRm9Z*bFvS&NNFRd*=J4GScCzf=*B4Ao5 zVjAjZV#)Y}D64Ry%FwCmgDu!yS(Vv6na%v7X=2d=$SNT43Zo?q6|L-CAT?pn?1W6= z^95bOE-8<0>gkBVl#+7jO%J04R@$JV2x1zBC@SSmw)?LsqCkL^i5K0yMW||W8M-Z_=_(1DlR0d*Z8K;1oA3Br zkl7A|X^9_|i{f3J+|bIjCX{H>Lep6UnaDCf@yOP+#`Pg-w{z2T4GBc0(4Swhbtk7^ zy&1={S6j~|D~Kp>=lBaFEZdXyd|1)m!l$^M^DQddm0TMN&yI&5L;1Q8qU|X<{*%dS zT5a&AL!dEP60SHR9qnwjbt3r?N1~%{0YWz(Ol%hfm{C0+uw;39-ub;rPQVqYTl04c3r>4DM)`_Hc7w zhd4E^14tc&!>-qtqKjPv>*RZVDK_HS4?_?>ez|UHFI%k_%+z*3}!F- z>f1wFjZe038q=OSycLe0)X;|uQtMWzFl<*e=;r}cAn?<^;dGGF2erts>9g!MU4&xp zEMJH+g>|D06MKWeW+-!PQJk>ledgTXkUsQ|K02pDhg3*o(`~p@5mLsn5aDk?Q~-b* zyPh3?Kf9rZ5UJ7!%y3N;cpDD_e((a|FRQ=900#^-pw;JH-JLh!!XBpqI&-rI*oU!* zmPy_K8vujWfVTlJP1rLY3x2DOHZ<~4`A_Zu&6(~_;4I?n?*uFMq8-sSoM|d|p&8Lq zq%jsYL^?t9Wq<(}_<>SC7HVjoGMEwIEWLAr z9Wt-6GEqd3=%lQ$HMyP-yWLW_Uhp%N){4ZgX)YPi#--Yr8<<{!CN|SJ=A4`r2s*hv z9iTX)D+AfT*~XNpg$3I<4-vs-r=j-C3FSrGr?nbgtZ4W}iY{ibQ5P2dZ@;dhS#l^E zI4)N7|NeCqtvOLcNy(Pv*$CPFbrr4Gw4?zATW}#l-uHDC&A~oJ|J!`QVIkDLaIvzi z50ZLOA;Wk(%9B|y3doo;G8K2A*-GCwyo7bNz;365x zkU_XcG-x34x|3#1S!W_!FHu85q05rIGCK(iJLMo+Z6!H(=_IdSI?4G;&=xTbU@78Q1gF^-aX-vBjI?_x1V7QeLh53 z!DLO^sbR%#sWw-ptgpAb6Rv=oIiYTVfexVh^YtD`;f-tL<;El^0W3RrgCEWQap_$t zgj72_c#+Yh0WUhDoTKT=%+0+7cHzrF6)ntb8BG$Z#ZC>0=Y<3jG!3U2DO*a)fhQM^ z!#wy~RP6J}u#6M{Z@HFgr()N}F#WhxaJnZI+yf}Wr}{&OJ{b_iglI{6-I!uT))EO_ zq0VcRnbWZ4 ziRZ$Ru@lYeyLQ%SQV3V(#49&}aD|l;@=jff#!tbvA$3F!ft?8EGK%zV>9#`tUvjG< zp_DRA?w~1^+j-lF+RNSpI&>NV4~@j`bpRcRXQOw&OJ?r#&lUnVPrBIBBsLp7d_7I! zx+f=TCYb2gKww+KQ5+waY@vr_1)fHCLj|15zbEqVO#VHVe~(7-X25HN>qgUgY*Z+H zp=O}XLhg(-JDft17Gc)&D4M0(q^kvJdTFc33~YR_H(O(R5D1P&6CjctHf3Z~gy~dj zd@oUqwZYbK)3q_e5f*7`SvoXb??`U2@lDw`Am!2s&oKu2?8ffA42{&KSqSqclPj4@ z#`|KJX-xTcBr8Ll3>rjpk@5-Lg_1%PG|)`7or$O0T6B;o~KrM~*S*ghEOw~4oqqY&4m4LGHmW~D$lDBjiXGnGXyfZM+A`5A@ zXgGLFY80a^d2V|BA)qGJRxB^@(QbD`enurUbIIRJ%NU#`{-B~^nGh9-7rMRCX)0v#|EzW; zi1cZ!$AJ#gCwTJ4P=XFEK)i$wW18<_rPYk8RA;Wvp~4O9%xsB5ql`i(gR}~;5Ij+I zS`w`*b@Z{o7S+VujHv^92iG+GNpH^@)@_MTs^x3)~11)3S4WKiU|Sh$aK$6rpA{9i}AaN0n;%l(fH*5DKkQ%{{xwuZRp zNWrbz00hA1a^}*VSf}*K+#d!d#UFp%1=pejuwGQ)gIre}=do>Lo*iT4vqISJ+ux)bD7(G>d1;MWm-_MxR2!uu68%RFDzzM-5P4LB6%xmFDp?HpQC@0n-&gM?o2>NtR z=v4xaDdvO~D`T_eYhk#gD^u6|X^LJU=UJS2=ovW~@2+1RRzS#*F6%gjc@&o1p~-Zo zS#9hMD=f5$x@@e;d4oeZZ{|o}(1?`QzTusVOdPB%mXMu((>gR_v-B!f5P(M=CM(aj*U>105lC3bC6~Y!_`jHi`haLM#c%rB!1V88402_%`J}cYusSQ z4590J`e;t$klFcVz`+yQfD852#SslI8%lyn_?9BZ<=}hF@eSsK4E`FvM_QN_z8Q2) zdYJ49#yie+OmBPBmkNs?V zV--Z0KqX%XbGWHXrwbOzjG``0XhUgpN^@e_I{9PZTy#paLD9VHn9{0=N(lO=OleGE z$QFz&(dJWv_0P^4V>%P?xZ5sfq;oJ!5wtm&y9TlwWr%dd-Z_**)E>$lz2|7-klcnc zmdr0}DCeZZ4(p>gqaRS63+V@njAg89*?7K%W=T0AM5a8@8pyZ!K;|@sQEi>~#>1E; zIFwj`a}5CaRY-0LyA*a%5}BBuThv(3Zi?x75((XV4*IvTCNJ0u!HQ&)!KC#Us03KV z1-b%ka%`1u58O6o#&zMjzZeb%E;kH)H&2(tuVhdl}C;fR}I$XCRiw0{PD03*BpIc|#CIG)!VW^-_ED|^`+xz+^ ztn%?o>wZ_pn)S2@YHm?>EgN=u(4N7E$>LqLl*~%Y3G{r1_Uov!PR$e=i@D?m2-3%p z{-)glx+7s$CCn!f%RNfnuk`H=yo^F@bC-vp=xxKgSAC5RvgWeoLZ4J@Tf#*;R6e4N zYnm*8_d*i5<}sNJ=q4yBo6J<;wx5_XnU6?KZ3$Z=6b36|xA3_)E~O*1{86rz#gW&S z>V{psONWXGs3#IMYL{Ylfd!##Rw2yxzm#{`kzfv2chZ06zkKL7cWyQ~2XLn54UjmcCOMu4Pw2iYwO*r4nxFByXQ!Oj@U|NI-;qK8j4 zIPbtJMW!)MHPT^@FrPjIirAz`sxt*QNUNuK#*DiTGSih$vECvo7{ag2osgdCrAzl7 zYifN2q3oz#e*mK%c2{0#lL-W#%sz58KUD-u%N{AdMLK$JPv4b6D(^u`%UFHWL1~{rH zG{`|CsS$~7RJ$p^C0I`*@D!=(&VUp&rg<+zA@J|^CPvPFSX8yPombk)K^{FxCzh+I zj&gPjnrymgIlILiXltw46|va4ts=Tr)k(=v3uM*hM3SCvDYl9J8^87Yaa3+S^RXAh zw>As4Ci!Fpc%CqOoaqiI**-~XieQtOJdD;bL**WRigrr|PC^$YJKqJdR_=L!Y)E*+ za-fhGmQ!w*lkI&!26!Slp`S&qsN(w=&tjG;TSo&O zj^S}B|DusAs}2CD1s9#WiY8{vKg|MhIQfkP+{3T{kO~#cBW`f+p+rm4!FOvs(PFLr zW!{hY{?Maxb(5jTR@=}gj1j;`l}MKi;!Frzm|<(3T(p|nK?@om4d;b<*g!-BRUv8M z&_qTFSSG{1w^(_VmJG0`qt5YY~mkNTFFe8K?V+6v#t zT{%%goBr~!h!CpeYAU%&o7)3Y_W)_FR{PNE(sd}sMvt1EuTzDlS}aKB?XDx~t)|c< z>*C|ETgREvflUYwW;0_7z4FHTq@g$_2vRaFgdoibsd2}RY~~t7UfGFjG&G3YZ(AEi?94* z-}O!zkEu$4U&UAiG=4!a3ld?-cmkOa@_MZ}E^K&NXd>o032+k>)HTEs!YY7z!rg34 z5%0n&Ftgz+!F2pSTKamVTV`61vzecWCYTlKgD5-Z`kB>2?NiA{+FPYwnL?5-<3@6J zz;IcGJSF**jMl(u>9@A&lCXF~S34iHnsS^Dm?y_62AJHmig=e6 zPEpzikMt0~G?!oc(J&)h9`x0e>3}l`r;uOvF$O`7U9^)LpI&YGr(gz3^Nqkv4jl7V z2S(pa+#tgF7mOQv?wd4j+T(>2^MCqykukAvz)Wh57e@1Xa3YGD?Hw`701>-W#B0w8 zlS%WSl0D%uPIfBUKKG)}V6pq%Ytx0q2i)s(sFFSDUY}T%Y}&m>bx3^3y+*$99(FIs z4_5LK_d21gWJleLlE1}1=UxtW&3nwfNFL1lf_pLEX5Jb1V#Lk7$KAU$_nvTX$h{}s zo8;b8?oD&=i|)NL_nvm|vfTTUdza_lGwxlHdtY|%Rk`=9d&hF`EACyHd(XLdRqlP& zy{mKYdH1f#y|1}WWr@LdWb^n1N4d8E;nce;XW5jo2&wI($2fBLl^~TA!9{j zX~R_0MBs66o>RnFI0j_c%Y=!LOoVho>JQ5%0*`#Jmj3LT+c#(*$Y=>iwZKDeBrvm7CW0F+*~%&uT{Kr^{aNS zeztI#I3mjI#Fo~x9ceKUvP#Vs3Le@WuyJfHYqm9z4uduaHQyZ6TAPEKZw_i%b8}G3 zY;#b{nwx`KW}Aar*4!M_GTR)~vgYQXmf7Z@mNhpAwahjLwbtgKmf7Z@mNhpAwahjL zHDkO}du|F7RBRMnu))P|Of;z>t_~t8onG-PB7O!Q}PI&L^vlb%TZ|sYa zNFd>ui$Fxe4OZIRW+=p(Lk?q@wDBjq_LKQpJ&2uzUE$+L_UVAEI`;-XIU~Yu79)3d zcF*ZF(i1zq$I0nEg)#7QXhQGv)9FUB8G}w;wL94OeQ-A#uP`3)>BwrmE1NIY6ZNc2 z^@?)@3`zCCF@hX{AMyWkk+ivB{S9hb&0zp((0BB}7~dA`KGXOsz)a zRlvsYCBeuKlgZ5qBpnRWCQfZOX1Xv_{6o*ghUJ795V0DQP? zu=xpZ^Qs}TIt;&q6KH~i+EJ@)sF0&q{eV?bM<5o3+0&Z%7@^Q^?Q^s#U_-HncD0YN z*FT(sd5+v=90dF@P-NndEGeep^xBaKT8++GJeeTaU9c(FdO}mW8H}6lZ6m}56_hhIZ3=-QCXfQc-glrU#h;$%)h`n5*u zTB!+}v9_N^V0jVaiMer;9cy4f*lFm1x=vj^ht_Df%}l=oy`2GIyb+4QSeA}OQ`D=@ z6$!hE=sEJ#u)PE5`M1c}X zqL_#}y1}VVAyAU2JkTUj3^YliEUqbuBBclhcp!sThJ3gi=7FfL;n{@|8~Fmfg^{XZ zgm78s((yQ>1R0;*yUWmo%52@QH4a8up+gK&x!n-^}=TW=_i5W{DKCB~fZw@He}(q=r94gm6J)Ho3<-JV>b zq69K5!{gB@$;7S}2>lPZ=DWrE8{%9Mp=((e?bSPU>WId;u9UXA7)@;&7BN5!Z->HImZV z9(7!`v*R%5*zPzHQzY8m9S2g8qiT%LXK2?mOp$Z8ensscV6$H_Ynb^vg$%XEBiRui z7yKEuBs+|2zqyX$`dM>5hwH=UI*sci=0c#C9Wd7mxIStwOrT^RGuLrk|K3~}e$1XU z*GXJIXRcGYe%@TuxPHN0hj2}si^In3DRVt}Ce99;>p;u3AJ@|swhz}Kb3K9U7tOU7 z*DslC53Xm-HHGW2xn85>kDKc}u3t9StGIr}T<35dG1n`&o;4R%53^r27v>DJUo#g* z3v;MmqGX5fbj$T3E{E?FE{E?VE{E>~E{E?pE{AUhm&5l0E{E?JE{E?qTn^t+Tn^t6 zTn^u1Tn^tMTn^tfE{BSa&U;yey!LyMj@}BIRZd&^RCVyB_uLpIe5dWpc8$ktWG+Lm zJ=vFoJb6d_6GRK7G)NXxQHQ1FeC$`y#1PH(M3kUJ)0}=mI5f;rJh3UwnZ&y?Q_^@g z#LqrDzI3;54?Gqmdn|=s&x`L+S}TRGn{&B7zD{S5AC2QOkK8~!fufEP3_ciy;gI}U zIZGTmv2iFq^z81m;ycgpWW6G$fvOBz9KeMIicon5Z*-586v{p05tS6TW6%pyNN^}( zZV7{9veARtQ}%VD3Y>U|LW3Hu=OwdXE2mnnJnVXO@TsF`?V)gKHz=4uj~EY}OmXO$ z!BbCTrm#|iM2x0-D90fHA%b9ucrBR|PwDFO<&2bN&d|#ZV`}EWlV!t>dhpe*SLLci z+0Df%5tPOjd_@2h=_ajGiytO$?No#nr07vgkUgRsic>`0b0 zBVfM_9<_nP+wd2DP@CZti8UhS^p1Ze%x>@{^d9cMgG{r7Y;apyURw`k6s;6apky0Z z1sY~)1LIFb66}hlfOBAV-v6un|L@knrIys{)}!v#!?Ip+62*3GC+^#lEm>0H0D&=nJ2sDPwIPxfk=c=@ zc4C4cW)Q()OvYIh60iYj#|d8WCfeQ)Ir^XFl?VqX8KEWvlC^#|^98bXLvJVVTC7|??q)zZd zpq>tGuvC&yuqa)1h(|*mcI2W{u5y%pD&u&R!K^*u$n!%-Rpv*I95KUAdiT|1Sw21K zI7om_ARQl}1Rv(C+M%x|0dwUcJ4n+hBq}`*>7jCxa=0~7`c{=lsD^Bv<}^N|PY4H3 zVfFxC2!)*8zISd^g6G0uNEeY9q7k$Fx-lFVpN>KnGbBUoGUHW-GxNQWwiIg^p!HZ0 zvdZ5=cf@E0N|d>+9fT+BEm4W)gpz5@?vI5PKf=jAeTOm92P1^b%3KM<;1hDn97j|n zy-5mA;53a}K~oire*-jt6A<`Awn&UU*tD135g$>ZL7_`FU@}|iZ%_ydlG0`cB%WMo zg8;b!?z#$;x!8&TvI6b3Iu*D`1zP?PAoOai^61eF^6=CU-A!|tcYDzU;s z|E?0OMx67e01E?KOYdXe^0`$b#*Exrx}Em&xeax-q=Gpdc@jF4k3;b#0o}Kj*1{z7 ziDhT8wm-qL4o1hemL|Ac#b-R>auKy|E$zUxAfGfr=V*98_wDe6?DP4QcqzXKByX-DBqNW5bG|`Op&^!ISKD!?%^Pj?p7M6yYO>Y3`nsm?vq4{i0;DUBSv&TN_l%D zLbXl$4|)OFj|3NWbnJRq(jm)DI-bV0#Y=!$=3GTNE1$%FPqzLiQaoUGCZg2$`LHaWO5hpGC6lQeYlcnCG& z`WyZ5?lCbId5^G#D#|VAMbh;UC{#t+Ua5!yir|kTFvgn|q4mvos*IVThpU9pF3~R% ziv0Pygcv?yBx6>{H<(O`mcqDn9x191cqwO@(NrdLmv&^$4zE7Gol|P!wwmWO8D_RgU-}8c^ zc0mzc1<5gHRJfsSy^7!*A}b;;iopIMt+n2YNXQ=vMHPIvCPl)v%)!CA6Rs^1jzc*h z)@|(Pxi2YX6^JAYpo{jKHUljlvKFH=sR2WlM3V%9NSOy=yeK)Hd%z?;^hH!Df+BwV-g|^;YQPsJlV1(w%1s63}6pYkdQ7l?>MTx(j19-Mg zJyGySu;HvusaZFmV_@LmVDyo^MQ3FA_`v;icc3z+*tqWOz%qRs@i$9U*6l=vbLW~7 z)y{>!>s)osh-&BJ4#r%$W<<4fac69Wyl5yPbBqO5^vUunCri zim?mQB?rrY~^KfMjR_Io4SybC^YG=9^K|SM>X{!BdC|uBPLYDw^ zV=`j05ss*i-0TZ3GmRI~@+ho>&ZU8^Sk`Dbc@48f>Lfhn}^FJ%gg zARy1$yaYt=Kc4#~X|*7#)Z#g~m!AvvLN?Qv{?PJNl?VQ!j}Kfmvt7(2MD-OP-=CFf zVdsiGFgHcYm-Cbczio+HzAtIX102*(QYj}=U7g7}fEZt%m1VohCgEF4zRQz*r)Fwy znV<=B^`wax5s;)${6U!hhGY<$P3do%>nU9S-iQ4n+i)T&@W?dIvcaXr&M`!YYxi0@{fX($Yq#i+5u$vn^;Q%_3{lvaW=sDzdV@ z5&OpWM(i8=2-r8+bnF|8=%WqBX{d;Pi?1j8B?i)WkhrjXB@)Y(K{(0Y$5A)zurCFs zj98V@X3Xf}tQ2~my}+Dn46>*!VFZu8bnb*vkx*nZhf6k}+i>w{t@a^I(^4MlQ1fjw zeBv+K$$6k&tX!>w=hGIbzbIYnb31vz-#|1nZmwA*6XV)WhLJ_B_XBW+*k+k~y>>-| zVpfT~L1Mz%Wx>P2e!)9f|IN9773wR;_15jQV;qt zX9@)41vD5v@i~|;5VH#how1;^;e`mE$F6jqMx)kVG&%&k_yfB{uRM;XMJbrGov+a_ zepz)p;CM3@a5h$FN0IPWPGR9ryBa<0mh?1w1wsMe=+$m)p+?_Y6n@*+(dgTXQrWx=r+1aTAMEj`3oD&2(FKgoErB3OnpA>^iTxJW>7J=N7N zB^XKR-y=G+#j`SfzLbT#wsT!t%K|r={8A~m6s{{$40RsP3YdbZ#BoKookgL$(Pu^H+x`ry2fHa?g~m9-%k){xaDz+ zdDbttr4q~Sn>Y<16cHR**j{zVja%IKe&VLtICV$fYLRE5mqB`OS8U_L9E7KQRqz!h z%r9ld1Zff6c%h=3Q2C^DT6Qo}mQyr|nAk*U!7E4zdp-hSqIAg=(mf{ub49W2V_9%A z5;Wf`6cBEsAnrNEE2LGn-A)!NH`8N$9+4kk#hn%UZjRb&j)B)B%GKZ&`vTu zFQA=dSeGQ(MrS=b+hE*U)DK;y|K}XF+lqwmqxJJFlAWYe@(e3+w)Nun#uv+)-ZrEe z{*qXe9L`cq;!NDh5WteywsB^XZ0IcsT+D2xWP@%=kSWZTB+9@NEN=EBt|Li2dy=># zNiutqq$A1N*^{j8NHRWqlJSlt>Fh}|OtVH$%$_8}F-x*z_9QzxD!O&{B)4`Xxo!3& z88TT#@0&eIhDMg;b}^%(m!byx=CYMju$T-^; zr0S{X>IBhKQwauj3Zm@=Od_&BByP6PKtQbE(F8`u_8ftGHT^LT(n(Zg;jOta2aMo_<3Q_#QHkqM^&lI;o< z&|kEUen)o2HdS*}peVeLVmv5$Di4Z$SUMn1>^-(P$SvDyOE95AkB*`~Xg!)$!6c*# z)+1TR0a)!`RE5G(dCIEDQ~4_7Q)^X)j&L|cv9YvfGL||^p&>P26j+w`jR>qB*i#MT z1nVJf^Ef;#BHmMKjDb2XX#EnPbuRD(G#V#^prUgK|5`GK^r3XTrE!P@{hzcHo4#Bq zWpAXUCW`{&s9M`#iqsbl*F_x7h$;mK*>m_f`(|-Sw-7<;7Bd%X)jw6Q30Kn@es5_2 ztkX?|2aU$RjiUO|7BZThCHwE(m9YztB1Y8yE!sDhBHCOmr}oQ;Qs^lz;fkQ5vne(Oo>jAvG$FQn@v1@0AM1fRebRx!A4P6=Q5c z2^PCGN)Voon{Mf8$)rxl7`Q*pS?sdY4GDdZG9l|nk1%U^K4S_JQ$2M0`tlLz%N0|n zIgj93fYZq$rRw9r{cg_Y*-K88zI{w5?GyFmBpfCo(F!>Fc@hpB(Lv_j%&X=Rx9F%+ z9sT^LE5(p;DLV|fls)dE?A$;9aLJSlx(L={omS8!F3Vpd&FZYzYfi>q>3Ru=QB89h zvLtmK7by^gGfi}2`m9^~@|f@-!V#aR-(vdnnCKuv5+BpBn1*7c;HJaq`T_p)plC?4 z*L%!>3Bq@VpgA{0z@t1Wgc35%H+z}P?mA1n3u0+}WkQ=V;E5TAO9v0T%r;8nqva?$ z799O$e?@KmxI0_Fb$bpTVft(ij11mCTS+!W#@J4-Jo@f0fo z?6-;q+_39~x3p%ei5&i2|Wvz_LL>6w2D-4gD9`8(-*}r;`nC!%;VInwM@aVDfC7 z;HFThY14mtqW%%LfzV{b-N^+^7XECqkmMW+FU*(?%oKc2mo#0J6_@Kf?HZ?v{)pRn zcagMb+Vt7-kDgDXjtl*ctBjmW7l&mTm6Af`1vGp zN|ztjY(i+l+_dN!;UVGLO;pKX{5CE zBCWA#E`yR@Crvr3YLGg^8s@+IWp+Y*hG5j@cb-(V135p0h(#CP!Y{g1XeI%(idYNT zF8Ye1tRnkbMUBS$z0zGo)2!1WZ$^Ju#?|eTMtJD#3uETW__fF@o{lN@&4L@epnWKG zl<#8EJbeU2%X-I1As5sd{~-v<>Yp%QCE!W4GFUemD?&FLD*`jbk^tpNfBnM&3n!X5 z>8C#wGUPZ*>HTkEq^GBU6>)RRkdpL5O2t-+Eai5VXl54HM~{hgq-SEZS@#`TmFVkr z!q9jF%_|kKb~F#w*?F256l890dtLJ`SaR_|aoR z1C+0r+tYtS6%h96>Ek+}N*5o-`SSMz3u~-gyT>>chork}ydH`Qt)x%=8s$}eZsyRV zH&93=E2P?4hytw;5*LM_AS=vavDRGh*xmRx^-cl2%}lr&rj+;)Cs~9LS5IDM&N^>i zs?ZObwI&IR+Kfe3<{y>mkx&%GU)aQfMxLfwun+rF%oV1jXQR+&FoNMLgKg$4P4|H4 zutkScy_$@#M2~r&`br&1C)Bd&%)wU9x?5)?+-0?#nS%;^m-(KepU@EGf181}1B2=c z0D7Ep;nYO^tb)|Rvt^ovCE{F*tN@G5-3YiWblGy&fUb(Z(h zuTXv)aHZ^k7)5Bt!}Mc8Hac7#jNT}Q>bRX5`95G8dcQ|Hn#P2&1ULy+Fvp!y|AfsSS%cB#=x|PtI>EVKtVYKw_I5d2S9kG z(_4{s7_IOy?kwZt*;%;^(dr)2v~xBZ?B_j`+k;}EVkOiK7Rr+E(;9=Hhf08HX>-b9 zX+?lx4B*%F5gaBL_Loas|kKI zRkzfzttryk?hJ0 zU$`}W64_D(ouQCCh}%(4IV%S~%NNL^;qzxX5Bhrt8FK>*D4LetU z-UGG8-~`sm#&&mfPF^KEsL9pr_7zoyB zEHeHx8;c(k_n8g424g=IE(g{RNsjkgj13$YbOMA*4*+FYR!okbamuCwxZe#BHxGJ| z<9H`PIV3Z?%|p`DY2Vnc`6aPlA#01L4NMFc15fuEMS~lDLJW`W{{~_z4nP%t+=~d( zbHM@nx_tN`N;8MeS3js#fl)Pk!Q@mD$U#REq9{dyhYpH&oJxleTdr&d*>maC%{JaB z{2n&6(187r%0AmNex#%OX5yM%-d7!ljciJ~aPEzF-%Pyv@Ir9FsCruh-$Wq3WXyAD z6s^E&k4t9X6aL1th~f#^*$b)qI{Sp(FUW0gd23yO?)E@i)nx3f>M-G!@tsLEYPr6-w+l0f7{u;~d?HxbN;pTO-Rg50-4(0 zCo-lR>cp}l21taw;5n-{#e3Kx?TmHnbQU(U9Yr3=;>0e}tc>fW=!{RaB3ZK7{0I+< ze2qrAAvF6Mx+1Cxz4MHy_ydU7g$ zWuA4m$aPs{M;YC9s{|H9pf1k?!?#NkVQJWKh?Ga2r63ol1;k_%dNwe*lhv_WTALeR zGak>%(@}>Gt+gTWR6#lqs8HLPph#Dw`(>noK%fGDIMFo)hN&QGL}im2op)G4GIQ$N zMG}qfPzrmu_RTZ`RV@{w$>rXmT4N|L^_C?D@4+V{%Kw&`-b#vwbsrglMJ~PuDq-|NlLuC8%&PI9CFk8#4O<4vtYxa}}0Wj-w zUv}22*;8B7@)l_n+KuuVG%zz-W@8hMYdw?nLf5*Zar}}UBJW_p&dYMYML6wdQ;AEY z@h%TI$OI@0+_|&OK^AS!179 z9kL4mYCG}`GYHOrX$srzd`()3yM1>`@FGGAe=Okv&7qyBN>b=83lyd+4`*%qMu*ci z2jIFX$O=ziwqWdY)fCLs7m4jHe`Ua3ePv;b?@B|%*rl0p#~)e;DSk-gR0mj%YAOBX z{b6GnUWUc2E}+x=b7AXlPNf>7HpIGCQE6>7sg{-2I?`x76clk~#i`#Z(1t=To-fjv zBJASccVkh5czpB{I+Pm`+~YUGXK#KI&c%F8(VMVN&sVTp=GwT4%(y9z-C>pE_>dGG zR4#<0N-EDf)+p5@Jyvl~%6VDoVjXC~Dr{*qMsheYJyEow^)DKY?_8+=wHpf3mD=wV zJ@3PK=3>!2J^$v}tE4rOH-Q0uRD?5h)DTPAar(s?p$puvw>Pcx=k845OwpO@Mc;8- z^iYnv3xh$};%EaFrqX8dzzq*+z1>=Rn+886^A`EG%ib3DzOyb?bNm>!2d5Ys8!;Oi z8&rm-w;S@hMuw_Pi%W`*=s~%e**NL89u$y`Pig^JTjJhM60MU#u|OTFF-Nf^#R<;Y zH$C;UV7DxFpl}kUO{h(}T~D7x>ZMEh98+UZvyp`YM73tBkzm+JU9_QKnwbrpi}XMm zVX{cZ+yD#Vh8Sl;c$b7+0NHYSA-X2TD=ijnwDWVk5WRvy84anHTGK)4 zHPEFlYDDS&KyFsL^nfvf2pYf>nhAGB10!*3bfbjIytXzP5hvQ~W9Vzbp=uCq#UOq$ z0kJwNp+jLbAl~=Z_hTuA?*~MN=tH$|Du%*<{gJ{?|$Eww- z09pt9U@gd(zVwSYY`rO`&r{m_O%A{tDM%;27tI|$J2{tMp8guRa4UKY%!74&FfD!% zD#>27v&`%nvCIi+-h6UdNd1xpeuxaQhO7c zr5&Fd4S?CBrDncF*_e$wxeIiOZ&49S;_H%-ATpr95sOSj*c8P_f(HM*pDVU znXQ`|kXG3NqMJy4pp4DqO`*Tg@$qDj+jD=iN2$MfKTaIeSANXnLL=Vu^}*mQKLBWY zTc_M=onr0sot&igJ5d+|=z20FH#fuSFM5+09wWsNzI_PX9uGz13@~CsGhrusJY>yf zt5BT+YtjmMWs?~L1n1A|g2^a}2x0rs<>&mO%a5*Fm!BJOUH;zkMtb5`cKN}5Br4qc zf_TF-w@bp`1quExNbq+-g1-wA{9TaX?}7w>7bFoXT1le^2>e|@;O_zge-{w=yMVyo z1qA*sAne|@;O_zge-{va0zyX(ox`DHi5`C! z5X5%@fxim~{9Qoc?*amU7Z9jAW6Pxn2>e|@;O_zge-{w=yMVyo1qA*sAn z-vtEzHV}|Y8IIxgFP4Cn`1p+Y5BmoBbUlj?=d}9h6qgSKS0A_~eOCItBjY2TR6Z;HXT*PGqm;mw|1|wa7RxQ4eNe6N`Rt=-T8PWu!jx4Zd|1xb z2XVeWJh7^ew6plE^q&#`!KRb~rMJwd=|5bymd{RZln;$j<+G1Wc;drekUl(HtPkc$ z^pTZFKGLPvyTi_Sw8!Wc;B%9wEPFWRT6ZQeLnk? z;Nf7WvXi5hMBQ*g@Os(%gxc}5bgWDC=8s&hWNqdePB!GraB@NB+NcL|z!H>BS$^~& z8&A7QFCvkR@QsRd$vSaZG!4y>z(A5rUxz*HF#s8vemv?^8hYNi#PnxZ1S4mIyj z->K(nkigs-!!nt)LwcrSfjH?iAq;+F(9F*m;x`7!{BUCU&6J<{sT03x&YB-1efTRy zc|3QFzgqaK=C2k08eFCnWKnAn%$x);e37t-9hy)|SX4ojK{!rY(NtcTuES<_&|P3| ze@!C3kd|$b5K0E1_1UE2H=Uk1AAER%oyzeOC(ld=N0S|wlr*bl8N!*HTP$Cf+n1us zk#8-w%@H?eFQ%4?Tc@yD-99wp{R+6K3p;Z~$_2`*gkHCWGIp5S=X6Ge45LI`CuI| zSXa%2)h=FGzpk1S)^?fD z32Qq|25VEWvb6W~s}E zj?)>esDf8W4(uUNpG4auj2N=nn^=?@zsj&f)(TDMP4LaBEOhIfk_cj_G@k%>ZqVz zB#k5fsz4oiN~<+4g6d^U@=`5{T(eT?ifXi@*zQ6rXbgCY@@Utb$_lf}^RgBOz|%Ja zKr&L}31GIn0Dwczqvi*|3NrxmvK9uw6DY5&axCa1ska^Vn09auLKwj2t z0F;@6?P=&|w*i0-lm}qF2f(gv2?;CA_bjR#0I&G$-+zug9kS|+-!!W|tUK=MuM3bc7ENOS8!lgk``t*&JKU)P$xr?Sw?3wc&~W zC*SaRH0oEYXPi#v5>1=w0R$})vrEBBru`4VD&>}IU4KN$4jJs#Zg%QT& zhu&>!4^&ux({}{@9Qbbpx?= z?KES(beQ0GyzIlY1{m9KX$ErkzMUphBG0&de|}(d4S=)awPN}ryQ3Uz^fcT7&Dp!P@Rdeme{QpS3B<+9bv9Y^XbCtF9!{6ysbpk+pDV z6FF;v<})MW@A%OIdx1DB%-T|9;F`9W5?CnlQGEhCe*jDe2|ta&CY>^DNy0JKX`~p< z6l-K6(KG?#n4# zJ4`0ZcKBO4V8~7uo|w3WHu+kw&?P3lHd1aRt<${fn;Rdm+zny>z9YmYCF{|gEJGCvW2DD;4#Gms zt^@UQkn}(n&`(JZW^SJH9s@wyjaG1vk13!8OyCfsw(QC=fkP7PD zkBEIFwia>*b#Zv^k$_`El%N#K0P2LTB69|*4tXjZvSZjF4fiyZ_$3~ZMhS9y`c6dW7PC%%rE|yxv(*n{p5J%W3IEfe%D;sluUomT+icr##}Gp`h9b~jO!1~HT`Uu{-L?<#r3SY zuydJy*<4t_O#jGS*tJZ*Vy+i)J!dX#S*HKNTo2&-V{@Ir^&ic39M@TM-HYo_%r%Yc zPtEliTwgWUNnASUEu|0Q`cLM%AJ?Cm>poon*<3Hv8!wpaC0u`Qu5-Bl!dx%n`Y+~s z0oRM>dLGyRYp%1n{;Rp3q`bd0*AuwTnd=O$zcSb3xc=H)kKy`n=6V#@OXhk6*WZ}y z1pV^g&BeHNJlm2!Zze)Df$upQhmk~G=bjZULaR#npg#<3NNvwsupu}~Uky?Y7!|kM z+q!xcTf|JX%SzJlCgZG}j}z zK4Pw?aQ%?Ep2g)$c@Ecc3p$<1n%RT{vQ;4T%7o4lXG5CDR4EW;>)JhBaQ zODF@4xBuAsrkzEf@A-_US}>gz@9Jce~{2r2{(ohVHQxIid;I+QtWqhf@Tu^MMSM z7Dh{;Ws?M;iW2Am3?FOS#o-ysmxo2|;_wNp>~ThZKl4hsL*0*cdmrufCeg$_AO6UF z4?J@A%ss~>=I-_*dQ}-cX$X6KMwr@t5}LCyd?eGbxHvpzniyQP2Kp(j#3v147Tu8E zbKq)vybi-Kh!6hYh4rAsnGVEx%)4u)7?vP?qKKg@4i5aDA>g+(0{j$=JdnFcVbLMh)7Hcfzn5Dl$?B6Sw8@g^s)M+CZl1rHT7JW4(qDRxp1;|;V4ZrP{MI~@YP_i?u^kg zh`im-9ndO)wiHvCD5hi#xXdFpMFfWM{j@A{lH#>V~fO-pXgj?s>KIfs(yP85+LVcX=@-=3s077x*+igqWYOQR|F6qf4#Z9pGN zw^HGiBK!e`M|pUy2!C*!08od~y(`8rIYstE?CZhd2e+}=;`_ihND|-sx6z$^Pi$ky zqtfD)45qazE%BBgYK+$M+{0knSgwFSAfX?1%t_Psq}3iR-8RWai?PrFCr#tECqG(! z`SAPE;wemFq^@E5AsOR=3`T40E-dQO3LC9aA2sSm6*YPnPq%cA)~e3Y5|y>l;^vnI z1v^}wqlGpa@F}9@M=Nwocf}VAYqfM-tOb$H481bF0kuv$rP3-u%Z0TNY{>h1fpsUf z-l@AU3?!RVueuL-c0YllDhYZ|Qw_FGTxIhQpOW|94R-d0l*G=wth|@jV|QESwX8gb zoEf1KJMTf*!UoXHr3y^~gX2DpnjY|`e<}KSR&>=LO1E!Tr8kQ;>ESMWMuFS>hv45) zx)uTa>A-7PTgq)1Q^=ATjT8uM?R#o7!bmSLdN>tb+FII~DZj5c9|NGsBIjtHq(<3KIwv*akLZ_|K@>%nEP4^(9~e03{#8h35#=;8L>n2 z#lqyxla~|tIg9NRob%+R2Np=s>dqc$f0{R{icrbaCBe*-+tRXalo?~z>)Z$R-WWcd z`#9C`k3T5%ltRbMUYw>sIA9_pkONO9ebERVKq;h*MJIZ}Ai=V}Isr6f`q>d^hMu-4XX(B4#s+r&^dPzD04&9>_!4H4alMxqFW=9c z>a5=8gBGZ~demsGL;dVf^>$67XfX1u77`n}hh-rIxhZW#EXr<54zr~;#a0M1gg7Fe z>(WK`xf|GLB$M#beL5*9$HH2%(!Z11Is%S|=mf^4fY*38Wpc}Rm zD~|MykIAV+z8V2-yMoRlSS!%e@n~YIM=ZLzEEIiQaMXoYkD+}YM|49#^Yylfy*5%w zA7?Mdw%PiDP`~g|RS2IQXdy>K0qr-o&hU5C@;B?Ulh6*vXFG;im-^Y5FZMdisBTE<(3(`k( zei^l7E!2PFui{2^KRc4GV_Hy$K5_{UrRTSp}iP?i@FSb z1nx62UQ?$&Z^_)5za0OW_*+4Rhtbwr#`iei6?|VntqTi~>63gh9GO1Mca`G#@(f@4 z0uy6Q@qAY+p6?pP^L2`kCgWJ~d=tgl6$&)sCWkOLdEly znb(K;Zc;qo5ydn7n-$M@3*U{C@m8Aa(s*wgK!W=|m%Ph0KbO4Qp}FqfO(*Pe@49I$ z*%R*rVL~mpphDcFEBAi%3p+pYQ~K}ASAG|LS_a8A#0W#LlID`k9i6LAvcImmJ*^)L zCQ9*62O99bioYF{X9*Akms;P+Y=h-$-3fAo@*s+~_bjS>VP-)58VKVHd?%F?a$im4 zHe%By3}Ceq|C>IFR#mlif!hkTLo@=a4$(YgM^CWj+!(%CjNqC3!MOi!Gdjg%b zRN7)>6y{KBURLV@tNmP!MTyK$)#4>i{btp4Rlvh^MZr&H1)t-)F??E?Huu2Onf&Rl z+rlb8Vqo z?rqm1rM$V4=e79c&u6t9S1r;zoGaV&8F0s~mKW3(sZ`ELo?{-(exWN%UekT5X~hCr z^V;rf*M=$LxocySX|?fH7Ljd;D0hA?j7sq?eOmF=`i#W8-2fyS#pBlX$nqL)hud`| z-r=rtS09P5ay#AbBXaF53b~Ha)E+cK1QWkqAIX>AZadMdTy1;k$Ol2Mv%@|r!k-D; z5>r41br^q6*JLr~veH*ZC#KE5dd)?r5@SqQACl^+yHWo=>UK;gJ041~XZ;lk6n9L# z8hkj}G4XeSPURj6$V%AX2HzoGj17XWy>rc8Mi|fjW=SSl*+ln*zzXRB-gJ8Lu+^CKL6>~TQl}z z9el&J4R_Uh5PpjvxoYAboh-h$SUM9}9C0YL5Cv#ES`^RKM7GIQJeKNnU(!z+-tG3@ z=k~g5-M8E^=K5)qaV_}YbDJ9YE$-S+x%cq%X}8bq`H3(5%r7^Rea70HOIg*$B@X_rQk7k`co)+ir;U5>5%O)N`o$_!V-U^Tx;W zoH^r_GF+3}!%};^G)NjEc)cADHH<~oiH;Wy*3z$x!uv_4YHV0*f?bn$eZO!8bqO(t zx!kniIg$XbBWQh2`yp{?!fA16tmVd`iBS-T)>J&-e#P@0P&}L%E2ME~LyE`GE6>KE z4J#f_OdOv$G;w_5(8TeHLleg*4ow`NI5cs5;?TtLi9-{|Ck{;m!&V2q#Rm-%l7f?WZZj(E830)(l!1weDmr0*!?T?1>u5`5L1H zcaIY;3XyK>o#MIcFpzwP;|ug@#=4%5jNw3XVVk2uLT0Q^2VC!6w zfpu;%tLc0-*eX|KV3k|!;(0UJ8dqds-L@9Jq>OIfjCor;69b3HI|Q?5@GFA#ZQdTA z$=b7e!AyCZd?srXo93R8v|j6|DQ}n0l(*|;fhpC9ZZzo4oVV>|P{Fw0#k|wEP^P?X zK9jYLQ?mtX%G>5MS=*K_m?>|Y&y=?fUW;cT7R;Qtt>Cs6qtmw#n0ea@erqub&I@JA z+g5N~i?QCnP^P?XWU?8KY(+DCv7h0aj1jXbsgZ#ZV@4VyHX<=jPiIGN#7{kB+RtfL z^DS7h5j&aa#)Hlb#wHaRV8*N_m@!>Gdo48;?3ix3&6gpssbI*gCKxhZtD7&QF-d?} zuw=UTH*1D`VvyL_q#_ecnbihUrpty4WzK6X*s>AC`txSu%-U+?OC}pqjuAAZoY9GB zLxkNXPP|XS(JaQy{-M)Hk{#&>Q6)XaZs-CFx%)`6laqfIK~{;#f{Pkuh5-_643F$nxAyIbv-OW(7Mjq{WNMgjz9`A z6bwk71!X}M7`A>CG1+AVKfMkyoV(2GL8t~x6J&C-x|fql2(>~hDu$aR#$rYwkdows z@B1bE2$4+n@;#l*Dc7iag=`8z#>Tmzu0akVQ=*XJWLCk_P$pPniAM*)1WZk&r4lf~ zWKs}HXYtb6rF56mEwBoKyPP8mY|qRkrK@X1RRoNrI7-fGsDg*n)URi;eh8>FY01E~ z00P{JSSv(ua4$Q$#awk`qDGODiitulW=zy-zG9-*@D&r~6wfzSJWNxfc)n{D&v%{T z`L0(y%+dzM^Swavd^akd?}ds7oW+XgyGikUnJmUcZB{%zuto8Fw<@0R62MCrr{M370FISlaTLj0;@cBb7kv

pSmY?rOag)*Xh3lMeY3ok9+IThO z)h$W8@O4SM6mX&r+sgOFny$E}$j~XnSSWb4H@i-%1BBw!j4CZP_wg2J4l)Z}ax}OxB*w3uemO|Y&tz@8aKTJ@+k7T#8#+?2v28w6 z-Zpr&0lN*{<~uU%=<1lfZ7@N3+cqp%W8OBO$=cSv;hC+bylp;{wQb#kH9ec*V#kM+Vq2s|j|j-*syDxCzhc-)N}yM zQAeh{HrO%lXD*mIuMy5Fud#b`leMi~qi4t9*^C`Cl8uy%_4-Ar&+#pe$#h9x!n3RN zL3joc@6)#2=ebV2Nk;L-@`Pe}La{vPfx+@zf#*7Rh3t1>S_m22Rg$so^pZ7SgmFDP zofn|(r1&99->F6A)RFia6XRehri4W$g3 zLAZ7odUS<&O>!1Ag}l@#Fxk;HJO?(f9Bojm@SJkAaGZwI?HoBtb47BqogD%-Ewo;Q zM&}Q(#%fX3$t60m*U<_V>Py1skuC=5i@6pttfVwSjw{quLoE6P(efc(Ngv4FYIYxT zxfO`Mx}q9hu`yfRU3WVJCrif>c;T-FqR-siC^G3pxx>cp@8nz%4!O%5ogQ!;A2)^R;vvI zun4B%MbaZjHtdboYUYotm{Jc+JNGFQKg=e^eby?PsqV;8Y{Pi>cQ7S9@BR+m#WCI$ z(CqYFFxug{$wp0ExllBGx!9OO77;!tx zUY7DMrm^z2Mc9dOPX)sx!b?lUnO>^v;)HF~&z7mQHic!a*2U_4rR+EyuFoP`Y1CS4J;wY7h@!hteaXFPDJ{3w z`t)eIsj&o+&yM^(h1d>#DDNMv1f^0*`lF}@TpjBufqO*E0d{R^n3sX_L@jqefg*+P zy^Z0M9qy+(+)sD7pUK=d;x^~dU1p-!nNnPwN*k!yq3y3K`tSzx6{0Isf+lER5!=?G}87Ir{uvpyzUWk$B3H(M}Ew(5**VQ;o@mTa{d*`nTT z(Ja~OGqRO?vz2Gb);A+tr8iq;mTdhqvQ>MtRcFc8n31j4o2@oWw&sj%_1~zV@ZE+w*D*|_WU(d(QeRNZgw{a+{4rF4ex+|cp9lGFo9K4;`?|; zfHc!1pPz}kPeK9?2#^i%*%^;QM$hnU^?(E_oCUHa7BN6JAo6H>=9mLp$1IjrFs~o9 z63nf-A+Vach^1uI^z_VXpl6$KLpq)vZLMZn3-MV>j0$n)QDozplPuv^NI1&u&dQUZ zskAHoagXNQuSunVD{VY#`Uf5HU7bEiB=<8N&S@S647hbj8Ct?^S-OZ9xMLPlyJ5}3 z$;wA|?)H?78LIP=W$Y^?rvRiwnVrgQ&o*-d4tvya2K1+aFG2=lZgX;CEDUJn7@9D09T0sL5Z-W zXfCqxw+p}4ouNh>1DLzKzzoYJ@B;|HnhJ0F@QzLm59=^UWHsV2FfJ6NPihB3ELfrY*l* ziu|&LfJ-5FADO5fnTU?RGh9b%yCX^{U6F|}^Vp5VQs^t<&b8=s9aCH%%{JAwMhBm; zFR^&73K7SxNtm=zS+0>DRYkllP8yha{As4NFA=+#=4AwJS65VcO9jc= zL6+cQ0-EWW4!0|UEjrZGzUqJRTe`V{rX=PhH8fn4rgMujv*eZ*>6Ro#3>UjmpO)5f ztwt9l>gnpVsaC%P{$ia52{CAsj)`Bird(f&qCs1&Z?~b7=hLVO zWymiE8%s!Sr8@S=7lR8+@W32~>L_5?_#qA&d0&loH|cyh>)k^YtPPjwFatzbf}_lE zSJE>S5cvYqCo{JSMiQli)s|JGCv<2bPt#vk(#y;JX84$cQ(Q8z%+acnfU}l_lhiCp zTqJRHJ(^8Q=E3oYrgpzJ2WH|+4}9rY%f2y$31_gsmukn?osA1~7T*)Gwe*U5UhPAy zeOYM{AMSih3fImL2R-ozC;#N0(AUEg+_aPNlga4i=8{oo4wHq;xO9w6XX5GV%#;lo zr272%HG6$`imq1DO+LdXqsvQ6C<1T}k*dNIBYOGeveIHGgHDC@s>@|1j8cWf!f++L{znrp@_gP{M$(gDidiy0&32ci|K}GREwju*dY-gwXfnC>3cb3 ze`fo#R{&cZVXlPIQ(QnhL1{$Nr~}+Yqa_$I*e>E}s^~JBoWh^`@EJCj)o9X}**BIY zDZmZW4xe2%q>WJAWfLW{2>AIlQS#<)u*LB>bpG$v@Uv!(5Y!4 zS5CX|^wEhmM_|rT$@bB01?5FT-Aj4qoQp%0qq(_e5?ce@tmg{8)&#SGV1PDJ4x#=_ z(H7&=0!uA;7)5XVBQRUq*rBC62 zo?);$4|y~Xc^1czqMpIASdJ%gERo}hJnBpy^%xE=S#mKJ$5J_{%rSe|!c4e#s(7$5 zsSPztQ2IV8|6@Ok^DKe6lBd1sWY`HQVD+(-vSe}C5lLHw?Z>1w&D!ZmN{eMAL+mC0 z5I2G+zFdrUw2PEDfKn+=dNNe$EjteG(b5G{VA?_#bfDqV(N=e=T>a61S(&d_Ak2ddX5n^iN8uz?V>4S@*%~X2x0z-5Mj#$h&lQF&4fk$jfgP|z zO2})EQEn}d0@%#HgH~~+ZSOs#jnEhy61pTkRhW3UAhYbwd?6X_-)=wg7)BwWp&q(CEDpXgs9%7=Yz%t{-N3wlBP0%__|F4IP zlPbZsrH|kiQ^XrRfEK2YWquYZu)Mk-+Es%K{s8mRFii`IR)6sjoO|K2wccEQo!8z6 ztUQpA4>Qn}%SyVd>T^(gmV^BfF6F3bAk(F^kIu`MchDW8*BKyVw4v59&1uopA~9o+ z5`-;bE17qAL#~O_3G|Z&mA-nu=qr!=*#N6YR_b29sT6qOBnu(5jl$oX=*V9MvMTGN z>LC8e=i4LV_ z{w(A^i%NLnFKC<`o+fA@L27%6Gp(Z5*_sYY4Ha&=p`z)R@`}=xnn@}_gkIJ+!~}*` ztLijQUKy#Z77YSCf=clvrcFK0p~TE8**XZ)Cj=1RC#_^GKg(rMGVgg1wwJnOf|*^mdoKOQr7?<8bXSW+N54zbL%NUc9)e_SR^*NcYkTF*ps*(zIfPnW_;GWGD09DYE5)Wg0AEj5e zP$Pz72q(o6-8HPxG)+n#HD_PjdNXE$^cKujqDTUBZJ~F$)r-X65Qe2A0=?F&IUeczk*jtnmUcEe& zj$mO6<6&v#19V{Pu&#v?Iz7$P*#y`tiwEiJIw?5F;9>eR;u$K3byM(w-mj)u#uY5H zt#zY806kcu`x=8FU8yBy4?Zg!euF!jpqh~;bU}R3CffH;Ku_FJ`Qui zvy9gsd?VjMnf;YNQX2XDwY5t>G!16=rHc2K&-ad?-|%ToNJg$A5&$+L@Pt&b(R(dHWXi-us^o-FmOw_J&8;V<_*QL6=@K+Kx2-D;r6)(Pd_iG*~#c+ve=c} z^2yFl(K`=ze;lgk?~!ZN;cc=|%pF*Ig~|kA6UkS4eA-QNcb7d(=y1X<25t+d zLx+>0Hij(n7}8f@hy^gpeQgX`j9!}_K8NKQEHH%Y`-?n=bmsLKQsfP}0XNJYf*eBz z+ZeLQV@PLak0C{7$$DBTCTyr`gkD+J)hmm+-y^N7ymdneVu7d^PR$9!YO?4s zL{qxQY0wQ|%DX)>uM?!9Zjk7Yz8ssFm#+mbU&8C@!v>P^6}vc*VRq_nN`u|;02^gY ziDWx)+j>`-)XZ7TBhI{*9*EFi7uDhvo7=lSt@YS0vHTdgPbl)RLXwQ z&$}p}cj6LkAUpH=Sy$vWVB} zyAZJONN&4bL2tV(pu1fa$XS@Ti+1}JM+|#UyDXqHFB>Y$o3$(IXjjnNt{_9ucDovl zr@|oWU@Elzfe3SwA|XWrBWL{o`SU-(`yOyYY`Opx77dxIo*okudVuf9VS9F!;{M&CZ}xxmeOA$@!N^#a73A__)V(fxZt1F{}(G!-DuyeOu@_ z^J(&CFQ0O9q1?+IpL(1ssFb{2)`4z!Z&%Pe+!Be>%lb%$zSu3fFl=2CZNwEIsk|g| zJ`73v2;#=uKf0ronV`M>VaX9;j;24@h!b|UQ8>=~T_rn$Fu5LwAUYt!97^kZ{WIB@ za&qLQbm4xu9xs58-wFGR1^5Z~j;rFe?5AErm0|}H#9%-64i=@K!CK&(`NF`)Yxq7# z^i}fneG^tiFN2wz;A}-#>)t{GV@bx5v~59{F3Ay`b9l83sdI$HOWzlVS6D>lYGUt} z4%5K|kuArX$Vmb>KE~%An4!AJy{Wa?UDetQOBkp<{-65oMg$yRm2R-)=~vK1tFI|> zDFK(Z19-mH4&+?wmbY#hsG$@IaC9{g*?FxBi}xz1ZaPu@8mUVW&)K+zfTEFO3&9OG zJCl{szEQU~ow_rw(chSeE$yaR{2sW9Z|Ki-$*5yLF}U2rLcm9qNz%;tzaG1g4Q51o zI=!QY?N)6bP?3lfiJu+hVbiZC)u0csRJ2I4SIi8e{N|c%)ft@=EK~>hqq*V%VB?Wi z5Ztl2)lOK(RHoB^tmSW)drK&QZ6UYHF{n$c001X!X&};>9`OZtu>uR zv1daQm9MyM&fQSKTVow)r>Z)uLa=C}J3E4pB-mph88CslIDMog)lvFUy!%1!T+q2H zh91$19!Xr_xLTX+*=VV{LF`W>gPT zD-W8AOrg}~;qJ^s$%1ho-mwPw9K=lJ2+5MGNmR;+NQ*2xwU(@H5IOL(|4~OrLzHOS z6OPDr96zklWCCYQLoC`k#OP=Wm)yhbd>xyyfI&bk^=m;P*VlAul4xLBYl}r@WU3MUQw(&o&^8 z6@AaG4K&CEb5k;VM9~r=(MHm@f8>59&>dHopR-Pkkr+Q ze%ATdgnI^-F#%CI+wMeEUjq6UBf>(V{_7~FA-e<_zC+a|)6fAdCWeh1EE6JjLMY?C z8H5m{nW*O>gn)KHh$OtXrxu<)oHBo-yRsX@-*{inSC8|8-Sdh$lf2Riok$Ag}{hkm+5)GP?r*>piSHz)6s z(Y3(=7$pQ;4{F(3&VK7SI@e zN;gx9Wx>-PfwNNaJFqRxKF@4v3rLpj!d$=D*0j<{5x1gAt0~u7!2vlA(wQzAwfHdd zwnHhQA|jvZ*`YpBoM&5l^czg06RV>@v>kfS$C0beRYOAHstJ~E_429oVb2xGGBbg; z7xFX6a+)&eMsB+(1B)V`mT%NBDUkUv>y z9%6$${imFBZ(3JM1GkFTy>tY&KUqKNRvnJT!#p8=wzuEm?Cvq&&EmNfRi!0oqa(%{gcxl6s_XW4kdzaf4#@w?D4mH{KGx| zksklb4nOx$qz@WOfd$F2r=V<|xk175QBxzPO6SFggW!w_%Lt8PEo6Sx74Rd3}`mp&Ywir-4y=v0E@@Ba90&MB0u zJQp)8I^k|9A3Nzi;0lAna|i&>r6r132{RjS(9agvqWhPU_-(Qy&oM7yJPVKozO@M4 zfYud{LMO718}P9&^lm%EEqKpYdy7Mm=h>Bl19@9EjHg#{j|#T+ylqT7Q5ZjDI!tLZMAUH zhA8zCcR4Ev$L=Wa+SVA&4Vl`2+7G+syVVMEf^4f(+iQZt>UZL}*W)gscLv=qx1x2c zl;f8Jdev=aaTs$~)7;f=Bi6G3*iE*6N+9w&c3ykG5BFORF?(UU>~PAaP{zRr2>=A4 zY(KyZ`iNB8A~Pb<5>c*nnoANhB01_(-=@r!56Ig*}wUV zT|eN1F%v=XMuPwQPxU1~_1z!#!5Cy9cpbqn|H9|~>X}U^eDGNdb_8E@@R^Sd{Pib% z@bebDlHhmTQvKOm5B;1Ee!+rA2)_B+AN=9>{PO2~@QW5aOz?l(_QyZ=l{bCS2cNUx z7Qz4icfR_yi~r#_eDF&a+$8wem*4TvuY36SeelZ`TqpR-x83~tYnp%RgI}@WGQq?D z`>sFvUx)vz4=(-6$?pF$lhXg^7k}oLzi<+Kt-|f6PkLg#sPu)C@%0(W$nLS-?ympk z?b!JvS?_@C2dJ6|MD5rx$gKX$W3{jz_ z85)73HCS3gPUlLM_t;F>$q!<99fxmx6e{ipxB`pKrdq#1&z-A@F6 z^ZN-*=@>U#BDULV0J~C`>Y=HHmP}D2X}M8hnN}t#qO9}u2!&KF=v}K@=+@d>0NmX|nh*hXiP}p}RTER;R($|@6Ln}A#LK!V=?A**ybO^v z^)z8UTMhadX40`9uyh5Ou%+=KTvSDTApuqPQp?o~Vm?=64Z&KccP!L8mKzVA7zL$l zw{0H)F*7>al6M6#+5)AvsH%NpBeh|ox;kq{UY%Md$-P7a%f*zI3CU}wt9{LZB+Ipq znq}UC2W#8$@T8PeKsIV%QBU?H1T~;`snK0VN3}~u0lJ;XYcGQZbd$-MH0TXD$N(6X zlT!BP<0=L)MTaRpTS)b|Lo=C{+VV<{D=shd_07qk)Bb`At?a zlR*~6phPx^k7uO!7((_&G&(;?N4~C25GY&1QanJ^~ltpjZU)34YnQ#;@jzn zic8X;IHohV+uiLf-Q#CI=G<7)_Kc4CP*UGbS{YdJb_?&`H>P`M>nWrfji=644<{Q@ zv5YrUxt>pFhy?Zk%(_9yiFFPVPpuRn1z>H#RA}=CgU7EJyx+R)i}80oeKYI{0Wf&{ zioyHE8`eDd^QZq89}I&>uo%2WKk)tkY~Z^;;DcfC2o{6)qnEyAb>sK%@xd^71dG8- zZ+`W;?|JM;eJ~6j!D8_KkoY4C(rs|7(9Z-;C=bGzxHik{n`KGgJJLp7K7LSho64`JNm!o zgJJLp7K8Uz`!5=|9^_`#)I2=i$Bb7K0^H#oOQV!{Io#+7#Xf-iPCTB{4aozlxI1p< znmhcQZZ_l4`m|Y#tS`}>>VooCH;Sz~vCnk>$9X#0PsY!1O;3rzey7xc}@FKrrH<<`aizS(s^})Ta zG{)87;@pnuGG@mE<&>3?hF8*4ex64qEqwb)z>+9XtV3vA)s1Qy3lq4Dhm zp#H6BK)|{R=>eFv-d1-BUbIV~%LvewZ9Ujlmn}4!Xr8h>S2Mm!EBfMpDE z+2ZsJJ>b=vO86f0K2)3VDIC=%R2&v#BO$uThHc|j49Kv4>`ZG_>$~KBGmvg(vMq<7 z{%PsT1L{_H1-JrWTM$LEEki(Rx*}qlGd(DWO42Z~!9G&ruG_peg^K!Q>wEE83QkE? zx7p@H%%|PtD(#=P^WpgTZEQlgLVhvoPLh6a0^bD5X7wJ{BsXD$U^3YNo8Y!OK6Tp> zEKVQ4XtMRc1xaKZz-qH5b)KOt zr$L*sWK@u00$O)k?IYi)Zd#&l&m+Q~kV&OL6le%I3ay25`WS^imgtE(y~)f7^wC$k zdJWNGmhl?%Bo;69bS|aR(@X~wR58b%U16dl-3UWO1Df$P$Yhq@&N;L6Ep19jl%=QW zNgyaw4hFqA7PWo9pJLK_pii>;!*>0gJ^A{PWvH|$D^1ITTBMhR%eqzDltra7A$8ip zVGp+_4Q|^Qg+lsA^g082J`eMC*uwaX{Ew}eR2*`+^i13NWZU^$<}77EK(=Lv2@&)+ zu0&2%zQHAOF7u5lF?)%Vk(LZ46H9P~@c>3ZZT-?%TYrB8tAypQxI8>l#A{&U-ZSWo8cZf>`9h}G~6NiX^t(D0N z-80uDT4DE;HG3?mL`~q7cJMkgvuVWF#6FnE@l&XO3~7d*p3N+y81iBMB%eaM7wuMP z3Jq~X5n#ZzY)TNIDYO!GHjXi~Db!!24`DczzCTZ|Lrl5`6)jDnF-;+EGUlt4O(6tr zhWzdNZ3A}NF>PsC9MsPy_*5^3)Dl8pIq=e$RMf~MY(2KecSr@BQ}g?uxH(J8x?{Z-~UCc;qtF5=nN^=IF^4$&Kz7$KM@e@hu8D zvm&|G-RAhaeJs}ZX8zrZ`)0*Hrr7KGcPr`nbvN-(u{XIJ+>Ljr)Ena)RFQS5*M_{w zUH_^0Mz>bl!?(B_K1D@0yW2h$ixcv^gpl6DMUtBfj_8i^G31v96zO;V-Ncjs{QUVv zNPBMnbaK;A<(-+{PNtiFL4r%Kdrx6VG_VDd0!_OxfWuC-+5kKqh21!RVP!a?GUp72 zFji)pWmAK#%qLgSu8uNqnYT=|IZ+wy?j_-R2e8JU&eAyr9CNhfhVE{;p`%-7tI{xv zS*p_s(}ZUpWh62m6JoMTk>?6(gZm(BrXMqlXQksn+{cp<+gMs$q(+mi%G6jP$1^r0P;|Dbs1aux5*3q!|Yh_RA*3iDrjIv+-#9k+&L$wqucf#)d1^ zXI6+|&;+rl`1%H=-}ota!|m)9sTNZI@CrZ#q0|=dGn=DrpF~Iftm#`BqyznI^ny4SJ!o zVqGkZ8`hz%y?T(r(r?R>PB2mA&c@ZR-z-l6tLxA-I~zg2Jn9wZ+}XqY2*h3@ZYirBsgu1RBKZ3230u*mW-bfcCsDiyC0|9N}a+H6cA{0^RO|7{nY;Y<|S=Eyy zOoK)e!t!OpB3bYQ00Y8>YLz;Jb7{jVky4b>kg{oKf&jsT907)&@)K+zvIZ4+G%eY` zd)lQ?-A4}%A_J%@QSz;aGjGaU}SN7Mmnw(Bg^rs_8BU&~FrqM_j=M4;L zpx$9DRu#1hkDrklm9uf>+%^L^@;Jd#bZ2}yQ=$xBP&-C|jasA+uoA78mku6FgF+#+ zDiI?xSv7miUH)#|mGTkS+8os@1;fw~ZIeakd+8ZX-27bza9a$Zv>IaO5++7Wz@QPT zpPu-!zYUL0n5O!N9!k)Uet#0XzV8#&r9FLM1=CbW=GzH@Z@L(i>6_Y5!qCO<%J(Ch zn64jYFy`ez)cg#y2to7;k-Cp9U%QmhXz>jM#YMpubfYKF50H=2Ae-)nlgSMy-TKz{ zQEg#1M?~H5spN*YM<*12!*>Co49H4`MWq)Kd`Tn|fjE!j6xOfLj4M-X-8xMi7zd%e zKO_6Y=0ciihoj!)AVubxh|dc(XI?0wmfLFbf)=GzIhx_N1G}LZ97uo3-GCCE7!7(g zLNPbea7J#(V=*flquOBi+Y&L*h7AY1cZL(AOkl-K8muY_JsEq z!yXaPuu53qM0au;%+`igk%GEtuo9`KTed1{cKPC%J^(uBCa=9tRY6XO5oqkQP@a+I z_9pMWw#nmpXd_2xs?tW}W>6opw%|q#BSe$9+;cS~(b|*5S09Y4|AW0Zfs>;s|G2wn z_L$u{c6LcZE|Qr^fN+Fx23W34!Wm8x5CkRMxEqlWK>RDP+!3#cr~y&J9Yr)8N)(kv z0VASDK?M{EcT~iPSN?$Vet%C@_jFG-1cJVP{_krxzp1XLs=KS6daCNF>Z+$qqtJ+p zgcFvnK&`>7KsM+kF=ZabtGn$XSuYcevg0!6N+k`GDTXTIgdJ-28u@Cr9zbOZ)NS-M zIs;|x;>=g86d%icROwq$NwU>e6%!BEBn>5`M`YL;T>Rp%{Hrj=B^ z@S8ieTt)j@C<-S6QF?vUwrFCtEfLW)j3^=x>!UxVG}ZTejrdTNhCM=42)>-j2=d`y zW}0904A!DVieQy*ePoE$g<2FJGNrCgOmFX$8lu)j{fs(s4PG+js!(H^gs}{_>6I1x zvInzFBA6;EFx}9}G*VU%wiwZ9OJn40Ri8Bp;XnhXlt^L`j&umF?YG{*Q|KR%a(V+b z+CE#6W{yZiq^N^1Wt}D;_Ap{^66t)hQ*Z*UP9bh|PmB|%Dq(e*W*}vC&fVDLZ64W%KE_14Z9bz(y z4Fc$fi2;lvDXWR5npKQ$8qSq=fR<(xakOgvl~%edlL3i~WJhY^P^~oNeXEBd9r?;( zw9<$gx|(G|RaZx8Nltl%>`|++)|45^%SnQ`Zb9f;b&WPF2LUqE1K6PEF}xCkPTW=S z#ekIhLb5C0I&0d&mn6clwt|e>ccjG^vt3z{aRx>Fe6CCgjHXa+3_@^}!Af5CzQrMB zn2dH1=DQ`zn*5Rx<;N;FU*EmRQ`ZP%L|oJE^0ibU`WmVbVjI<$yzdkkJ4B?_t5AOR zD%AO}t3sV`r3ytiuTvHBypCq^@~)de)Xeg_ObpOEMSoT@>IF1giX6?cGU1}p{A*Dm zL5b#HR)tjlvJ?ORrJ_thMOb265rb&=y{y*2hQ@#QlU_gXeI7;I4+z{WOx z1Yl&s0`EY>Va9$;R1=Xn(R1`7O%VTZ`g3NjV~osj6#Doi*X=&Zb)#bPL7PJ4`PB*~ZX7nI&Z)kGhQxiA z8)YG0Iy;owLi7=#V+>;g`#!h1xC07VWZIe(eR><^zq^^BbW3v?<-fbd-{~MApzb@} znCLql^H+R}Q2gjS-Kgk09j%onOGjZDl7qte{;nNoel^KEC{q7&PEd$m&M`Xi!wTx9 zNS^yhD4`prgp-HHM>?$s9@EH%yM+@Y>=PWH#O(`kr9to?=^6z8k(Fvb$kO}YeIx}rO1$jPA!olm9i4s4Vv8!Y_@NE)+(k?6IMXM`MqiROT!kj4-R zk!6U)s;uM?$&C>k6V9ViR>y&2ePKpRaw>ZiZAwK7Ybz(=-GZU=Eo+P^w4AA}{ArAs zi+`B{qfMO5 z=416&*`SswWip|eG;F5{Q9CybH=0*s?U^{EAhrZp1&?Zv=69I7w(!vE97)%ArO>Jr z9zGpa`EVzh(uZb*sim^5<2W_GvYnd1AzsSjZ+oa)v9E{nxe29zy~>Du+e|m6Ah`DRP%V{|E|d$Tt@+LHKs>cO z5L|L8!DU~E-BH(2J-kH=sWchiuF1jmDlF|a9g4)WX;~9dY@E{!ooRVow^SJ_xcqa2 zKFUuH0we{F%&Z|QGC5E>Z5r8 z+W_#SV0llYPB+1MTtYb#$KGGKEn&a{t(!mNe`28t!S z$L_}rkKGxa6cO%AF5qfEY;v}%c>AvX)qU8{&BB?@-D`Lo3&${VP~MNeoygh9(ACUJ zSS?WwND{iY%;uw9R3_SrEsi{zQ$4~bXkz6EDyX)AkikuDftbs2{A5zw2GjDEZWA{c zAR@4CIqUq&mIb4d@UBU~*LPdoRzAL>p+1!|` zjkOML2eMIP67g~~ucOT-8&m9jN-|o!i(EwdjRsN6=tRt6Bk6M58++KqshI_#yPPyN z!#uZ9H+N?b$-0v$Gciykcb}=5FUwVd*ufV(j%J@{WvadTinm49!>K40t#Hd@Fbv-A zR@uST4ORk{_k&lAlzPgOD}m-zcpi%f?R=>09{HZ2er`Ri1e1`=ke_|VJYo)cT-_>Y$(cuPm?JNx?RO)5NYC)7 zkT7OVi8U;koAej~bIhHrH{j@iSbFp!&oda?@&5b(dw@49>KR;;edosgCOzU7(+yn4g(1PM=qQf1;)!4jd8BQr2XR>0eF5=Je3Grg$r)apoe!@yX25 zrMirz%dm?P7WNwc?`DkM#4-iHfoipu6z0+CWeR=+DN@!hcvJ8+23i-4CeCW{RN=k} zQ}8BxO{U-_d!{4$=5U?Ny4QlJkV#)u$WlDxLXNG<``T)LYCzy>yOUt2NRvx;PB!II zrqAA>VR*}BlVNzvrOi6I`n*ntQyaO|8AiTM(nI51#x~}CE}KluE0_8Fc3OUTE;F5G zCDjJ$%zy67hi$rjCOz1fGTN&ED5)C4?>#1;f3-_Tw**vcj{RWiq6VZ{Im~&;VNOAg zzMQ@mx?Z;!cbPixA@BPD=E&_Tb*zgo{J4RQ&vR&;uo6{E-#hEDJ=r7daSZK<+jcg` z_=Y8UZ%Q*z$1Zc}@lgvjm$4?|86@0e;KPzm~L zBh^00mQTgDXJMk(AK`+?_@iDVEc>{ zr@9&Uqx9hF-F?T|-KZREKh7n~Mj4qc*Dj)lN~f;NPL1iOdyWnoGD4#Vl|<>pmRN_Q zL5(G9?MK06XjQGtghM(MhBdIfbcE*ywhUr!puZzr4Grln91A1U0Pa{A%kMfK4I|?K z4Q1mE9S!5OYR;4~IblOh1+8H{pINdOXI5vcu#_#ggB z#tlTQp(pQk&4X9{RG7MV$ok_?eoEflbX1Jy8eCy2Ym}pQC96f$YX3;8)grFp*qAqx zHD^fO8{gK+K30Trd)631yly((Q{tmz{ApUrTblVYlsR^t1J!hNOu#g;+5nBc%(RLQ zk?~yMFqxPOoENL%OLV*!Q(P`1?Cgw=O^G}1sOB~G+$v~iV%;~CiQ`&K)##_&Y~1TI zP;wC-(*hG5AfSJr-%3(K4BQ{)M3qZd=<7z)(GWJOEFh zShmuQ-&5mnj!ASKwVnDF*Wc!$zrQur!Pi%!RI0OR93>IA#_`c@ooCj&Y}B9X-gzfQ zy85V}Aw#kV<39b(XNa?hNg0y{ahBpH$$I72$xw7?S0iVQnx3z(IYYije?y12vB4&J zc-wIG=nVHyuZ@xcfaX!`x*y&)IyKU_UOPVCtfx``ZCLGlUgJzO&W;9&PD;9It&@j| zQ75AzzIEFERwpIVt&);q+!#qoPovNFGYTCMQ=%E$ls0DsF-AGlWxJRjS1=dA(XtN!O zTHy8eYshwEp`2ttGFizx6p|Ycm6Ea<+!<*5A5%&e$UpmF$qctd=q2s;4P1}H85^yr2mq!Hj5Bw&2`+X^#pHftj)q8?p?>RHU+)Lv9<=r zjePz~#@bpn%0i?lpKIv+?a1+_nSM9)U+1wl^YgQrpXb$DqQr;#Fsr2)tSzwf>RI>Z zR|az6yPc!NqA;0EVhwxh^dy}JpFIt3uXcKpH+$sIsDG2w`fpOz@M03r555s~!KoTv zVT(^wcB+Pbg-lLerzQ-<`Zb<{`Ud*q)u;8>qH3&L_T037a|XqlwP(-W8@EM%VAmM_ zBzcpX)?g;({}ZZ)R~X*Z3GZt-HPxo|jpfN{eJ4?Vm@kQvsy|?|WvxBIO>OUJVc9L_u}pny=pu}?)uG8G(h04EY`dfjqM-pL6htMibTu0h7rJbXM8 zcBInJhdS*+rb*+t5EE>zwE*5FKuO4bUo-|;kueaEzf7F9cgB>00&UnB}?>KkhUw^Bj_dB zK*J^;%>q~~-KAm;Wdn|FM0hzr1`7dfyvu(v(|n-Q4Pszcthtzf;fm3io81Ixd-ajyo=EgHtu$>JXhm#H4i9 zb*(TpL-vNE8YXe>$C}GML*zALp_uDLd<`)hO!QG5`_>RU#Y6Ect|$J6H^Ra-H#&a% zP@`kbnng$38YJBYrK(|lt<4(JMNcFzEcfvzJFyNX709toYYybtrlB7TgJiA`nUgx> zjfiHnKT$1EDpCFzt7M{N-hsQ*V*hD%wwY<9*S2%P2w7dqYCCf~52U^E)xdL$Y{ti1 z5gHZQP@yU=Hs7KEDz*M7LtbE|<{zBpkQB$aB>z}w(~`}d8-6G}TMKWss#c41S!UXT z&5{h3>g8aER}NW}ArrQa$&pWn5>J(B6INA`0&jbBI$PP%hO|cI*I}Iuuap8tF zh^_!l!y~bKsu6Z(mU8qz*ha#y7MF>zsTnpj%HjY@D|U@2Zr&_^flV5m5UQv&fBWkZ zJi9*l$*^xz(q7`tP`>3XWv5_w)JFo4$}b^nyX^-T_*@6i{4TA;)nXX zrtGz)ve)*Ove)(ovPUtId^#Uxj|$qz9zss`0t=T}TFC>`=*k|6S81@k&2e3k(p(SL z%=Nn#!teY;E!j3FZ6;>))e<;?n;Dw z)Y>IfE!B1tgGw7_W);J_@d`Wqv3{n$8=2;`0kWm89zO;yJlEC1N~qN8#M!g`=q-ut z(RxX!*w-kVSd_SNy;DNP)2KKSDyppsm0DbcN~)o1D4U;V(nYAN6JHTaZ4|+*xrNga zbEy=%=2{ks+N*5w_ll>T+wLe7AS2B+Wv?}rz1Fvsz1BC7J$FoldXKbFY4ht)LZuW* zs8kw53zcy_DO62dcS3bbCew;gS*z>^!Em-JQ)xjokD&6TXP}j&OtiN(+gBxBnX_T~ z>cuV5NfdVeu4{ z>O>d7Qj2T$U2iX&rOy67$+P~P@(9ngCrD-Zobq5w1E-BB4-E6s7RUpBmj~_B#pm*X zXxfJ@R?sRB+EgS}rzU3U@w1nZaIPx>KDG+rCw&YI_rjz`wrYv8F5Qya;TjX&Y&Q@^ ziPJrZL;friN7_&9KmaOD4c2$yxtT_%VX3R zn#iv?eO}2+Hp))oq~6u3EFA8}o+ns(?p#`M6Hrw$E+nAzX=gbzbCOXu_B#TM@h`40 zKZ|fiyg?Y-=G0JnKC`2uT)FH{1Y4gZ_ zznL+h=Vru~=(jaMDxY2-c?SKmc9hZ&nvcWuTF>n3r+KsUlIb`#oTdsX-^s}s9>%$& zbf*~7AXlAKu@=?W{FNCuz{t8(`NWZ~cElRyn}vDGz@-waIFte%HgyuIM@uKAYB8+A zb90k9#?o}-F1eP#M*8Tt6Y1l=hOHsp#elq#t;St$7~yl3E*C%ikV&H`8EUgwNYCSR z+LUE+MV2#Uob7^A!trBb=(D=&K<(NZ=&G(!}w?T_<1=>C+V>?k2!$F#OH*No{(vndX zu^|#QMMEU3A8jN-8L*iGDl0mJY-nVdp{~<9%wV)lX50{BT$`Ssj2&j*>53R*n)Ax`)zkYP#z*VyT1@56$OW0_;mX*`j$v zcug(kyNc!7%)VH=0`t{JUf;jv9)VN-+tEhq7nd5X}As8xf!cB}Zj zS8l)iX2WB!4Xz`@I((?P7OL7`)lh&;V)M<4qEZy&QJ98$o>U%8A!|sdmJ3JvL)`{@ z6t^a6#T>>LB)~Fg@9`NUDP)W!!v)&Kf>kdnvRb;Kk`5zMN#|hLIAe&UXzB%xOAyoLEM@R`XA?$RP*8#vNAU`%xoz+LPMIozJ%v%bLp6wyavdlN@=Y z_t05tc;@ZP$YiN6<264lL&n5gjp|%=`eTNExLL%cELlmYZ>J>GG?Q)Sm*z0|M;27& z+9R>j%mjkZAeX_2<(GoOwTx-L&6SPDzb>>YIQm zKPF(LFfCweqoiERD2s~5>WOQprRCcjnp3NRy-O_JT&ztNy_K1X&Hjy zGUb$HI7e^9bvkBvT#uPAiTD#Gay5pxC+o3Q87mIYaMX2~MT;2D+daQmd!FiXXs0+! zMPc6EAJp9t@it?kFK@!tXU7bwwG%)KN>Mmn0~zXvgr?6cJNisc5G<;7J;1z_zG%D_ z9x%oy7D+|*m87o5$^S!jQXEOv$#jz!R^g56WYl@&e`{ZD13rtYkwA9y)gZ$oT#uJk z6--&*-CO7M*NNVN<%AA8ZamOJ=fns1VfSAwrl^ zwb8K}AOFKicwYsr_FA|2{!^FLWv zH&kD0%!M`Gtp><_LiL}-=-yN$a9Wnr2vggm4{2(9d;yAsC@Jnxnfy08GNaE8&*sR) z`SgStJ2FuQVbP!$X8g-BZ&j6vK0BnaI;{TkKq#A(!|SWu#R$R%s019VUSApXajIsf zz8rT{{UsM+bbY0}kP$_e`jn5*^G8x^(00qa$TL<$8m}bpCnyvB-ZIN1G{oD zJ%~RZL1&e2nrW$yRcsl+UKaG#AACgWakqN}V?Msvj9QJD>B9;_b4=>?`UxVBIYb)& zZ0XwvDS5LwNMTaua52ifV=#VPFr=C10fp%yWI7KVXa&#yX$!&`yjjB^+&^6Po-ye9~>I{ zkr_b{9QZC8m$8fJN;KvjI18g&v+K_U?`8Bn+gfbt3Diaem+4kiV-C>E_hIM&%MPsl zWz#R_A}|J^rHJAH&9N(~I$s{>IWqKBWFn zN~!g|nkQ~NF7c?*Lq2MakKx0d+7GFZEu36{nZlX1R>YLPj_Ct-(9_n+%)2F%AD`DH z&3V1o<#q88d9}pp5M6u5h`xHcu394jPG*(rA7vLkKb76Kp|Tr4arlr=bU7a4Ny@S6 zAmXe#_-96xWOi?xKB^a-VK>=~(0{Ro?#`ANIPM@#^~@RA+lFasXlf*zOSL^3w9@V* z&Ih&^RkB+2N*6vUvw#UiW;1Zidlla%@Zu0YDYJaT@;hso9S&J};LZ%p&``-3X*T}{ zTXsOYN0M$8LoFj4m-G#8UelFOnTnaISB*}kBYRSy)lq2joA2q^s(T>N!8!UM%VS!Y zjt|6Yt~mpWWM$YKkex;=`aRlL9_H)+>myFNaIoRIDZ*+=M_Ss8Z9KUkQusmBHLf;9m);>6P@2 z=~rgzrTwUVT3=7Y{9*tTLUE*?uaDsFaL+Mfi{0fo(Z_zuJZb`6Ma-T2!(kXwr|ajk z>Z9J}zA#J)$1yr9X^wYFh*^qy(Or(_vfwU9a+!CRBe?8zm&3U1aF;z?=G8F$H?S3Pu>87^U>;s%-|uV6nuN2X}6bh3r> z=Wh!wXp-t`#Aj^tDj@^GfO`+^fO&Qb^T1!&jkI{ z^i$POML${nWb_m0C&U&|@}K6iLIs?ppA+?Sf_{$I&tCf3Q$Ks?XLtQZe^l49h16)VRq(Yw`tL`x2WR@GW36qbz>jqo0%Yv#)+;>SrJQ?5&^8^s}jcHqp-{ z{V*3eIq1|+PCty&QvdWh)bjB@g`T3H_v&Z1eh$>n0s7frKl|xtihj1x&t&~!z&CSSn?VoPr2f@~D{Lr>=2elq2h|-`gI!mq2qYCgn#WVzj3xyjKu4{W3#oS1P zng)AD{+8*lg%?ae@B9nr&0jb;5S~+OQ&nPS3SsSV?x1%UdUwFP%P9!O8}#nNTn1i{ zF|xafs^kF0;OVPP|2pp!#-v}#CyR+K2^*L(Qb9%RDuk zqOSDRmK1e9dC(JDQ`E(t+Lod&^VIefbtSr%4zfXGf6TrtYWhPufQcLGvV>OsN^dY< zrE3J6mhBBb851%t#$_?V#@4;Tr(%K)XnKRoV}cEVdxKBM1RI6+2A_!uHZ9Z}d{zWY zj}3Sl=~*1d^y#@ZCiwK+7887WZjT8*J$J+epPsM91fQO-#{{3AJ4J9+QvOX@)Hvx`4Pd=)2?A+qr6tS00@!%#DqwGVnQT8 zF(Hzlm=MWNOo-$sCPeaMCsELRUU2b87c5>rc;30&2eeXYf*P|_jK$4_`OO5ips8Eb z(548Bn+fwfedFl+BWnR&k7kXJyR>@mF0IPBOOtjVS6TFN8<#6N3i=G z=*I$hw=^7nA`QnTTFMN9E8!SUQHXVi_0?F9(9dxFFmRt7tf!wI{dBv+Ew4d$V62is z1JE&0^j*v&yurRpwS4uy%Tt^BE>CUhyTpps`z}vy>bpF(sqf-D#N^=hbB|$VSm5&> zD?1ufGRT%1l@3-FdmpG_R3mH<3m*Px^$rT-3N++PGZNxSR)zB9Q(2{MB3OsCt3OB0Wpum_9wIVSk@yb=?9dR~nQK0W`42|hjlj0rwH zuZdvkL3vE3XMv>82$B56gh+m3LL@&iA(Ee%5XnzWh~y_GMDinor3d9PnVuza%t(G> zLL@&iA(Ee%5XnzWh~y_GMDi08BKZ-)(u4AtOwS{6%t(G>LL@&iA(Ee%5XnzWh~y_G zMDi08BKZ-)(u4BIEJa-3SGfQPk^IDjNPc2MBtJ1BlAo9m$xlp(OX@?*_WsR_ooRRX874x$oug$?S`26eDOUD2Q}Z&2qk*&aRDU+TFH z>cR$fX@ff0psr|8m)l;Wv~n#*r?hRcJ4F!FQv|U-MNk2x2r7mYL4}bbs7O)-6-T_&r=g^aMe6XP@`Tipx9Ku=gVbWpB!T; ze2EWV?8B3zErmbg!BDo0d31X}#boc7%lkW;!k75)#Xh{VDf|&1zRZW`o5EN5@RdHi&=kIa z^0N2K<^9E`@FhNcu@5gbg+JoMm-+Cnrtnohd?ha3lNK}-t?x{aRmBQzOvDLXLYf6( z2baz*U1+ly9PUC7a-q#aaFz=_)rGDm0=}!7FLx*r@ZlT^XyL1gfDd2h!&eglAHLFu zuOT3y_NONHalgKq|(nX2Jq$X)4D2W`f#-R17r?DS}#r6hTcxilDY2MNlJ=BFv|@ zrU+^#QUtXJDS{e`6hSRQilC+H<|9F7;f0iK@1wLA4s`pWC2XJ@n6QP=}~}@HfSNxSaCC>y#gk zr~L3e<%jzzKV^{eQxYk^$|FTksiX)hn-oDMlp?5{QUsM&il8z}5ma(1!UDLTBB&Ho z1eIlqpb||HRIVw4N;gGN8K(#;=@dcbog%2zQv{WLiXaI{5gutKNE%WxRy7kO8L991 zw$zwimlYNm>l3{eTQm6fAM}~}l~~48H0sUG?`LROx$XRZf<_A`E!@w~u&&bi{q&5? z|5~`8oxyOi^ZUse_E9>&?ZfFcHNoQBwvJv#>^|HMh3;h-@BMkVyg-&MEPlcH3z5I* z{Kd#$a{f}}?{a?5-l9+g~eruU1C1 zVDQp=S!!cfb&N!nxr#n7we;1qW~QpnGMe1%TF2C2d4Wgc4tjT?cL#9eqN;UFc8f0b zdd=&FazSr!VL@4Tvjj%CC?@z)x;Q5IV!A|xY(;5LKkNE9rk|6$Atv}|-53-6vu+Xr zlOvOxpLK5>(?9FJnBbpve@yVt`o0L9YByQWvJcKakI%ROGVP!BY)tUadM+mTXFZPr z6`rI0u5xV6RA{R_@!Nb(rp5*=ZRLQF)%L^F`&g)XW{oAQzt_{yQ5DW-mpCZX8~jc| z$gyZFt=0`Ky}@rq?UdL+%^Q_X6e~pKaX*yHy${GG_7CI|zSM``?8Cq0!@uam7y0my z`0z`8_=kP?JfFwbio}9%f+|t1gtX$2c^73*?9>JrOR~<$GSQnFyr8F`qbpVpi!VO^ zQSgHbHggD3Mx&4~D?}%8D6=dLYdrF!1$$eSt#Z5+Zi}^5n{mrTMc~S{k;-;UyjCFV zNF3#Wg!{DAx_g5^>1|YWh4*OpjW4FQ-ryw#5oMWN{6CeO;UFl>YE(9V_MwaA!u_9l z_g1-_)WD*AJya#hGamAx^X1~dO)gd(`dofVg(6azxBCd6l$+JEdMkYwfrU+WUvF@k zT-eLLFqd-O-y5tfxWeKzqsefJgUsZxX-|&T<}6%ABJy z{6zumuTRv3d~fhqQJKS5boNoNBvkqn%V4A44j#*r`pRUV>o6 z5LQ%nHGy`y~>APDHs2v-uG1_R+RW-r!pbaAH9Hi&*s!QMv8ga$!-T zgy8i*MTMc?k&FLsxisN%`=-bA2Cs?S$-}J>pgHmrzWr)(wGxv>lLH;eE5V_1ic_u` zbFHlEtQsq|pVn}NmVN5RcZ)n<8-~TETyHR7{@&nPx!QB0dm>&vB_cO1l#9V8(R+jC z^1-=5xk^6_;)xM^YTR(0g4l(sAT#ga1iLplUjf=f9#`U8M{n>wQMv6rxojb1B~K)R zoxQ=+q7v&GcP|}=HSiH@o)npA_sC`Sa$JUva~Bj{3&ug$VwrEqT_uy2F|aEvlW@Y7vUP!M!38@nX67Z*)=E z<5X~YR5EJ>+@OGhI7a8Gw?sU<$lbx-sF*9H`ab`>ODwcExT%=m%x0~SoU7vfK5SOd zZTw{FmA*zme)A~qG8eZMKQV~Q58HquD#BA4!yHY zJY5H}b*CR;=&&6=G}>&Un7vad>2WGfRvrxyvSXYHJ0DOF6u|Rw>@yfk6`j6JPkh<5$XxTbP=W}2s1>Oks!^tNf#LDf+XoeBVCvzU1X$-lBA1`ba9e&iIFZzk`@|iVUl!>k*-OSt~JuNNz!#j zx-Ln&-bmLcNjDhjh9v1mBi)!J-DISjlB7W+4JJwV80nrQ>AObyZj$spBYiJPy4Ohe zCQ0`h>AocCek0wVBz@mV-%pa38)9D8tK_2 z={X}kmn1!Jq~{?8*4W;e!D27XS7yjw$08?hUwb$7uV{&EID%R6Sl&&)>_`wgRY^J% z1k>d634&?(7%h*VVe4Cp34*P9DJ2ND9Hq+>G+sglsfMPGRMqRCKxFII^j9+Z|1z$@ z+Bd{Fn<<2Gi@L&{&&9~XLgcEA-OFv#2ZQ=RSRQLu*Z208pcpluUSIhGSz<)JLm_17 zMC67_sTrG>sW{Rl%+Q>> zuVo$YYg@v&&z9q;Q|$NPq@<9#F6@xGDkc;D!Cyl?EAz7NIL z>d`oq+jgr*cH%@_k7Tqdsz+SM^`VkctH>O~URY_-AZL7iTz!N3*!r0I==!Mo$ol&A z5%uBqVfFRuJ@sx(J9O1c^uea4P*I!4cmm%bdvN$laR?~F_BW%Hb zr|EK1EhF-TG4gCqD~xBNdA6hlz_X!wwq*hk&qn6iff*Y-8=Gh68pF4lwMpig#*74> zP0X`<4ZC?WYnz&9Zw|x5vzdAJ<8UrKo15n#jzGsV**u5Ty5!lyJcrlH@=P($QMGP) zwlvSIT8}(indkW0dh%>-o|9|C%2@e!G9TtqHjr;;^UV)yu@zA~<|L1k=Z3@6Tys*L2o_Ys^}H;hwNdpLBo z%p7y6!juP7OPx$3$ap(;BBf{0uNtt4LFZZtXO5w5uZ@vHQpxN+hTjR!lQqvo=V>?3 zhR)M!o{gL*XP%9nr^7sxoTt+~n>bJ2JexXC!91HePtiP^J5R|xlbxr_JX<(V**sI6 zr`tSRI!}*zwsM~J%(J!g3^UI*&NJLR+d9t(^K9ol>zik)^Ncjl_RcfPJUckgX!Gpo zJY&q$>pWx4vy<~|V4j_wXPkLXIhDO4xRX{l}@XLNOnoSy2IayqM9$;ni=mNT-t zjhu3ITRFMvc5;I1)Ouhhfy2u1zUubK0?rQ5idpHX#me@yHp~_9(FW%j%>vlIzhgDK z$FxJOtFJbq5BoxRCSW26r&=4;SKConwHgWrb0oFyzFIGzO8RPJ8ohYRgrPQn#%yJt;kFAaDuMN}O8llzNI5`t^p3it)RhYoUp#ki#?bTP?yRWv7 z{PkK@&WswfH#2oLtu{f<^crLBefw(r$rIK#l#{LP-(NdGS3&JSIef+IuN~A^ds|=a z;J(^Mm5nqvw$a?mM*WqoXHz}b>m#XIj!&%R^-Zz8GOn*Sk_wA<#T5!rj{08ft5qr! zDiix^)jm?UVP*e5C82VlzHHPWZ>Ze&5rE!~(Wl1z+cr=qR!BHTiz|E&=D+nO(V<4$ z60WIMn{Fdz*}253YzK939Xgb)ysfeyAC)!jk~j)!E5Zx*I27~vt}US+T-nFj--)SH zpbq2wAI51Y#aDw{U$ zp?9??Sjtj(er_e-U)h9kj-<4~il~{nSemX(f;v*EX4KQ5ZallMpGMh+OM6syn=NK{_r?aek%5!-@MTOpU zkDp5Jm`h%*(0zDM}qR>-PAcM<{Y0C9r~?PzV4 z;q`&+KGj3yGD|tUa)^kT{D#&am%kEL>7y$dE-Hb|8Yn%^>Qd{O`Gqav25h3P1Y3m5 zX=vmw%&1xJ(B)tT5yu_SC$m~v-`erXKpaj*a?-7L$oAXOl(){O>8!&)v-^6JB7?~@Rlx@24*9o zG+y{%Hx^V;PGwlA=m(nqVnyF5JzT9J2Cl;rx!6h!i!j(ArDhF=xfwv9Xd?4 zqd96pc4=HXsE1T(8q8Mrka0w%kQJ3LB1Cm$HqJMm&AbZlw@;)yg>8AFIsy7Bue9B{ z_9e)^?zHrkzshl-m$plYc&>~yh4v|+MV?vm%!18gIR5Cv0a7I6O#~i8@gZxh89E*Q zL(Pgx8Nu|%R}}b;fYB2wka9H3MA6(9QVGMkpAthF>17pbhMFoo)8v^()2;Ry|8)6j zz=q3Hmxrn>IkZP0g|Zt3b%NSHJQaB=)&e4rvL}VV){n}8rz%giU+o~GMiS_SD6JOC z1l0w$b;~l51du)eb}LFiSAw)~6^bjvkYIV#s3G56(Yp|?+jPW@Ns~MXaHXI=AY1=p z_iTD8B(uG~;4nUQE%|sB8+pXR?w$&=pFxb`xkb=y6wUGMnC*NPYF?k7KD1 z3-q0p!d`u-)Q?Z7C{Wvw08S!Y!gXd}Mk|HetSQWTIe%q)JKB%BxuFv=AIkrl}ci z#H0W?lq@?fer8i~v``#?VYw8kwG_utk=IxpLq%R=aSRoCjm0rkjpea=WSNL=E|IKC#D7A_=N}3~nZ8rOK7p{;NA>#}a<_b=Bj45X zjfs4$7O0PnJV)c%AoA>nXI$hNk7vB|)GOX~R@tKsvd(pO>sGUp63VzDNy8oV?n3Vl zcz2cyp5~m2bAtR+xv)oReE4Rp(UP}%Rd1JW8qip9sV(kwoajk-&@A{>t(Vj)$+mhJ z4a>;(D#+v9vSIW9Bdcdr>g+Zb3*spMUX9@>xOLt=C#fI58e{@l+6waE~LX930`h zj-X<2gzq_mO2HBCbp#cHBi!c*Dg#Hj-w{*J3=Et&p1LOLC-ouBSFtOLL))XhxxsIyGbj;cA(n2H&%Cq0l5pd3dSe)X*zoV z5O+%vr@5F%r--v0@!S+~KuPBQtCO2H&C;!r?@p5kee5UFM_cW6O^)Qo3pnhqsCkIFCXE)ud zHd>zXsSO$b!XD!DQDUMFFY4-|PA=--qOL9K)#8rKI<|jT@-CK4Odp6?j^R8NMT#)k zOjy`V7-%NUYI?-9CV!>LALKvL5=nV?R3uNRY_i1+G8C1T$x>8gPNuvff=uxQFJP`P z)5^$dK4-yWDA~(V#i;ibl^nPyXOeT^t$cesXO?qLc8&^0f%Ck((7TJgJLuh|-d*9{ z<=&kKyLA76cNckgp?8;hchI{lyt~}H^C%{}-@A*vyU@E!y*udL72aK*&EJ#_*Q2i1 zyLD)rFT%0RN^-+zsIZ);*jmF!U<~A$Qs`LiN zgi53Nx6IkPaM#(8A?|N@$8d+-EbH%sE=tYdoxFH*tNG zF(;N)aS=J1<(z@gxeL8J=-uUVc|cB`oaHW-^1a<1Cp%}JzhRMgmwIpmYINwP_>?$72gjheJ{hpW6*Ts9`*H1)g+ z^~_S12~Bpv3Z3Qd6(Jxi_Rba0N%q z9<(QH#b_?kV=ID{0`77j;kD)nRx(5wPz_NcGfhueOy z@DZ#WiSSx;gn7Q;tbmnZYK>Ki4h2DHSH_SJph(O%yQ6lN91qoFl2jH_bVcGJLa~V?u>@ zKn07Nk|q2p$-tiy1pKLT*ZpKu&#_|0O_eJCR3YL|l^On25$S$krctF#6u>pvCjBDP zEFzsE(k3E3BGMot-67H%B7Na4sd4`;q9Kat$`<4@rFk~{D^20kn*6hx{F2ku0~aizz?VC*`LCrTkQ(lwXx7MNlnD5mb#*1l6MyK@}-QP)$k^RHae` z)vXj^u$iFRmWr{wnV|ZYiZRekP>oE*SlCQZ9ZkiMB%}zcwJ8Ga=Pz`CU}hSchd(G& zCkEoPy)v2P;o2xHeY7fBt%04yI@TQ9!)Rn6aFQOM;xy^IT97*`aL6EcR^VzueuIoY z5HL;P57G9A1rD7A60rJdfuC>(BdVR>4ULLVkz}4R1ye8@=Gu19XqPq8O+E-6&le_Q zD*t}7S`>u}QQ-kjS=BRa%N85mq6iftNP(_u2(I%Gn*-(F)Aw9I<)5P#ncLWoB`ETJ}?%Z#Rr&>Qe3-H+hK zx$t{L#UV;hxwjpmwrg`1@!-B=m2K!_f8;R``JgQpB{4X)ML&UY-4xu=4o z2{7BS&4cV&?5;fyIji!xA2K~n%~#=Y*x#7>8TMi zix57!DTIC5mPgA#1-f!=l4e@~&ojalOJ{4{SCt&y|ac6iWE+wj#HtSBX818F> zp6-M`+Ij2pk|hp{@|tp(fvOM4l0_cvtE;R9%pinE^Eg{Q;CM-?NKTH^UC|sn+W?|k z>IARpeG0vIgBB;G^wb)u2;{w@NzO&@UrYNiqdTG=LHP3r5 zw8U0U@YVEWJ_1DYWl{sZ3cVp>jRY%ydY-BBKiq(m({4!`+0J)jR2R8 znTpK z2%F}@Cb+Pg3#;M~rgG;#Ua9*sE{qaVSdhO_=gHzxwbIXc7UjF#xenSV+`XQgedY1} zaU<(IOlkLNiQ6M`YE{E(4S~nHICbYJY3iIED^O#MQK~aUJnVzkZYbSYwjU1FMnOcCtv6$14_Gl zt5h&A9sWj>24&Fo%LH34 zGx

9d-QV&kVj)TFaXwGR-7gWtWOoR|k{0tDfH}eirApz(xw2XKBp{5z{1=V5La; zTUx>b%>eIZ5?L|;w<#$1m7g=om)Yn3YDfJ+cTucA;x5=}W9#`@dInob5X(}tG!iw< zx}sKSGL`jeDoKifNT>$(HG%+QSu5P9BS>Y~tk}0XrPI#BCr+M4sk2V)3=xqXIIT!^ zl$xy3V6tn&)t+kcdC6Ww0b3U030q@9m0dvp2NGK7tFqrIPAH1Laa7H2P4nVTSA?+% zj>1^uD6O~nE}nRfwt0?fRjYBdEy2+i%1az=OK>zBbJQ$lu(r>0IL*=g-7R71+&c1Y z9~;!fXznW&EeOm5OO*adBx0{ zQUqH}G11b|D7%bhSWGJcVmFe@E*sAxVX2l85cLzSiR@yqh`ZGysG00wiFlk{+DQqZ z+tk{IZ7XH2+VX!Pp=^swB-A!uz)^iQVU?_LwC(jcYHJ!yfHcr_9EAanqiQ03^`i&w zFpjn-IGRs!R4bW>>HZSNJd&C8EK1TBp=C0JFI6-HgBZtX&kuMFD9}b zHAyj%l`dB$v}-2W$jI7aJ}o23Mn>D&WPvH!$TVa`0)_#eMvk(Qk*xnJ^kf(oeU+e1 z^wnU9wsiF@#%-yxSgIa3_jH;Wm0q&XqVA?iZe@5fR$U2B+*Qx_sLu)$y;D8^aScy0Ln;sqH>E(Re9;{` zsmqzutNB=kXsvWQ6++qqI)bEA?5XEY*S0sWLonX8AZsWSK`0Sx3POt*DoAr-r~qnZ z=;=BlwSgT)rZxTL?4d{PaPp)jw+~zO&x>a6yX5hGKKtiakN+L*E?^0$CtXE-{!A# zAA9lWlb?F~X)>%RD{W(GKKz|UNcw!J-d`u9m|1MO5BLbci1iyb<5Zrq}5InYT z5KP=B2)?jq5bVBt5R|8L|Fj_J+BFDv-Z=;^pjUW$hafnDuY=EShkx53*k+p`_%mM* zzqe%&ESwSqAK4-Z&PTp3qSN`*W~67+Ao$@XLGaf}K`;p%yKxX)zflnUVMCq?E}Iwx zFHQ)81Hsp8)NF8BH3)Lx{0i>}=Zz17cJRq@K`;({Wdr0FJTf*2=719T@|Ykv0K7Ch z2o``kcwtl!Tmkk5|2vX6;21CxEL%SaE(Lpl47g_m?*Y?6EBL|iAow^q6l?&V9To&% z1^)x~1jE2n>jlBB;5=|Jm;nCP!@b}OU@q7Pj0b=34uYS6o4|SCNU$B~1}~Jk2iyoQ z1jm9psDJ=0?+SuJa4on1oCx*?n}IIyQYi?23GM<5!Np)UI2h~z#)Ee7VlfDQ0loun z0`tKKz_DOIFcnll9{jBk1W$qo!4hyim=8V#-UAK;Gr*Q$94LU7^Fgoz`~utuZU@(b z%fNZyR4@x11g3#4K^1g^4ES?r5Ih5Z0lp8GfG>foz{kM=I1QWt-T`KUUBH%L0vG{0 z!9O~J;7{Ng@CbMi41znr7s2PjC&9(wgWyzfJa{KK5bO?i1XI97FdB4$R`3c{@lW7+ z@Hlt~JOBp4o!}O5J-8Bl63heVf-}K;!SUco@OCg0Ob0uHt-vHu0V6>f<{(^Gr+E3N3boJ0yYC1fhyPlj0Ed}F3<_uKnVWP z3SYrrz#qZy!E@j#@Eh&9yl9(0GtU<1E+v~a1uBU%mPP&!@;58ZQuYf6YK?MfN5Z7up^iXwgywcW?&N7 z5Y)gpFb0eS!$3DEfjr28RuF=JwjkSJ75FQ73H%Yf0DcRe15bnH;BoL6_$7E4{1p5c z{17Y!_k-_&LGW$xO|S%f4crF43T^>k0ylx{!L{IOa24PiaPV1hIk*gb0(=Zy3N8T` zf%CxtI2(KroCVGVbHN;N3YZPv15N@bfMdZd@Gfv9I07674gm*)1Ht}aU$8gW6YLJ^ zU^lP}*a_?irh;w3)?iC88EghN0ULu2!30nRo&isR<=_eMIQSKK6#NqW96SVm29|*z zg9pI_;0NIQ;6Cs@a1R&+-vQqO-vr+PcY?2hJHTyVG589&1>6k22o`}G!S&!ea1FQ` zd;weqJ_oJhTfWOTmZ1JdaCoF9sKZ3q3BtJs+G020YHiJqMia z@gdv~g8u;@@Hh+i{oqWGGjLA_b3IPOodZtwcpvU5;JqHRar;4^$9r&3_BaXmL~w$~ z@wmr%9E*DlnB{Ra?z=tSg?p68k+|;!M|d2L`wox8a1Zr31o!P82jjlY;~?AvJr2O# z-(x@AeLZI4?&GmH?p_{y;_l(GJMIjR>9|52O!L?ccUO;HaCi3D30LR^J9_MZD{K#@ zdTfWgt;aUF!q#9bk1cV9DPRka$+*JiU^9)*hC|NWN(|K-4ch6CrF zf5C+pU3|&B4`2F`kACdqpP2v2%RY7ar$6)A1y@}8xvM_^g{v1{bM1B4-*Dqii@x}! zo4Zc?!E8+?=Stq13!H5M?e0_vY-C! zp@)C|i(fwS=wrY7_2a*JV)>I#J^jqH&pp55x4--S3x9a=k1PN5(x3nG*T4OJ)&IWy z%B%nQ=W9Wj$+on%wdXoI^MzumtK8kQ-mu{#)*m@)^q8?5j2mC6)+S8caHEYUZL;ZR zn@`?i%9dMgz0J1UP2GNn9ea1$d6!*xn^vDbWA{Dw+-vWBX70P+{s$a*(Ay4v`yq!O z_Kw4kc;}Hvz3bga&pPJV8GAt{={z{|MjmPd-RcC z{^I8kKlHPoF8j%kfAruFANax2@85slz2E!pJ%e|D=iA@9>zm(La_85-cE|0v-MaXz zU%BPWH-G7ii*CB{hU>4p_L_xPf8q02eeTLD7JT+IpT7K4mwj^nCqDkMkACFR56`>g z;)^c4;QaFj&OPVs4}I`|K5*9i&phMwxu?xJ^?j$jcXof@drm&-#1oD`?$~2y9sTZi z9d+b8k2w4thaGyz+Yf%*K?feN|9<<<+-L8-_S|Fl8Pn_2cH4EAoph2jfeEpH5$80dJQk^hyqm4J&bo0qmw%mG~?WXRq z<4!y8y4&jiQumj;*Bdrs{ZXUGZZN)5o3PKhzew|sCxi2%Axh->ZW?|;a%qKFJ zWCk+t&zzDuDRXq@u*^Z3nVD&soip2JrerqDOvr4I8IdVxm^goEh#J&IqT4JBK@j+lE_(TZEg1lfn(dN;p0o6OIgrhdp6AEQFn5 z8_kXWUI|tOe+^y=RtA3veiy6=o(Y}`o(LWf9t$1`ei1wrEDL@V{4n@IaDQ-bFc{n& zd@HysxHI@#aC@*g_-b%7e~W?}g6o2X!PUW4!Ii;+;4{JH!DYex;N!tZf=h!-f{TI+ zD3O8S?BIjJ2ZHwpX9RPDIl=paQ-c2BJ;6!AiNW!~vB9k1-N8}8k--tcVf?*4I5;>c z*gx1Wm>KL7>=o=0%m}6j(}LZCU4os09XTR-YOrmv4SR5>1X~1~2b%?(1e1b|f{DR| zfORCnxL|`|OfV`K8H@;q2kQkrd|K}cibz#w&_SWMQMj6HaXbjZ#bICO%*?MSw}H&g z*^9DwWdD)fzvVM6_qCK-ds=pBIkM&AmfKn$Z+WF z?P}eyb=%ehTHn<=myoZte!KOd)~8xuZOyk;+qP`0w;j}WV%r&QpJ@9++Z}D+Yx`r{ zKih`2PiWtzeZTf&+vl|3-F9EwkJ}z@d!p^xwiny}(w1v4wXfg4LHnfkE!wvy)?w{O zwV%-5-+pHMhuSY{|494Q?KiZ4rTvcfyW8(;|8e`n?Z0pTQ~S&9K`x)`&W*;#@3y(# z+>G2lxkGaA%pI3|PwxEOyxb>qpUqvHTa>#scW3U0xu519%Pr6SKKG~G%ekQAtlT-d zOL8B}Ey#T#cT?_`+&#JP=a%Juk$W=td~Rj#Z@I3H;T_{TCU#8e*sf#Oj@>&B?|65| zNgeO)IIH8Fj!QZ|)^UBumpX3m_(sRQ9S?Lo)bVJ?A3FZr@oGn=v)H*_=h)6#=T4pV z&Y7JDbspJyOlM!`sht;gUfTJo&MP{v@BC8d?VaD~e4*o|j#oOu&O&ET=a|lF=XTt& zJ9iw)9mjLW1)U%6ysUFU=XIT5?7XdWN#}!|KkNKe=aZc;biUO2N@tiKnID(mI6pbR zLw?u%Uitm=$K+4SpPD~2e_sBQ{QUf9@?Xt=E&rYTz4@Qyf1dwM{+ax${6F*Ug<@f3 zVO(M3!sNmY`J3~14ekHYiLe>|B^$*thVu!cm1| z3;l&Tg^LOwDO_H-vT#G;=E5C?Zx()9_+?>v;km+}3V$yI#kS(;Vx_oAaZ0hbIIXx( z@xbEA#Z!v!FP>eTSNwSKv&GLBZ!O+g94y{n{Aux*#pT84uwc`c@5&Fy`te5jDf#X4 z`{WPIAD(}A{yq8k<OkX6xs@1h2e$G z3tJa&0&r?k+4X{J8LF;fcbE!i$AWF<0y^u3xMbCl$9UZeKj8cv$i1 z;t9o5i)R+kEnZZ-qIh+2QSmFqZxrt?E-n7J_-yg_#lI9^F1D8PrD3Jfr7cR^mUb!4 zC>>Bbr1Y-RaitHH&M$qW^vTjyrE5z!mu@ZHSNdV;;nHKJXG^~?{iXDBX>w_s($1yn zrTt59FCA4nwsavfIo!US5^HeEY+ zP47CQ>*%hNyH4r)K-all^SVCXb#2$8u3NkA?D}rk(ypI&{jzIi*WbEc>uN2R%OlF; z%Nv$=Ebms{yL>?Ti1N|plgp=+pX+*|>#tp}bhVWW<>BQqsoS9OOy?L9p`BYUbn z8~5B*yr=j;aar+K#V3ouE3PcIlsZf6l}42&mNtbmJC+VE9bP)7bW-WG(pjbRN|%&A zSGuP3rPAWkU8Q^A%(Bw+r9YJZR(iG6-c{@x0cW=Cn%cEn*B)I5bsYw0PU!l7*n97| zCZ4WucsJREs*v6Qv4g09D56GYfwf=*6>O+r0mK3bh+-px4J;I~H|zx!uwe-y+7}J|8YONB+PfebLPyPGc(!D+1+f^+pM=sZ;#$F zz0-P^^{(k<>OIqYp;w|;uJ;XErd=;cZ>?UqUW8tp-XXnHdKdIk^&aRw)hp0@tM?IF zrcO^spQSI>H`X`Px6~i0kL$bW&(U9`@1q~2zZP01LO)*rtbU^Y4gEA|nOta@ulh>; z7X40rEtVd%j1g-%Ycy*tYZ7ZFYaYvswVWkmZDmEV_OjwxXQ5?ouqyNw`pxkR7(>pClomBV_;ddsR{DOk;{4i=X!X7^^B zvWK!qvK`ot?0M`(?B(nL_6Bx1dnY@Voxo0J-(jb*v)TFVH|$b&1N%Fh&e7sf3LrxCoIp;m+Ge^N`;AnEYa|K*Ot_gQAcQ|)6_Xg)KCxi2ZQ^YCe zeBxAcIyo4(8<)d1;`ZSV;#zShai?+JxC^+;xdGgD+)doQ+{4_{+>6{B+`HTi?i20@ zZaKGx+r&kA8a#a-pErPK!5hH?ya_yK-fW&bZw+rFZyRqH?*Q)@?;P(kFP)dk%j3P^ zec+YzYIsdNQ=U1`hG)xj$X@#gaapu{F95ep?wK#4ToBVI1Ah*!${!c+1Zd0Kou zzL0OkH|3l2ZTPl)SH2s6F@Gt46@MLnGe44ljDMPcnSYIckDtMR#xLYo^XvF+d{m$- zU<)LIo`PY5Q366RLEtKI6D$@i6_oKS__h3IK24x0U5xk5u>Z{c9!P~m8ygK(yBp3qCU zT)0}eLAX`8Q+P(0AiOTTBYY^#7Cslg5h{cY!VV!_)Lq0C8H##~{_ptzzvKV^j{pC; z<3EL)%6-Ir%6-Xw%l*Qw<{~^MPmjmr8T0zVnQ<6z3eSZ%kGF{D%M0Rd;Dz({^N#Y) z@-FdGc&Tt^e9HUC`^u~1weaYCEj}C0j05>Y_@nrC{7L+2aAsVBcNd*OKDbm45_Lg5nOdSRGwhcHHXM0gU;jLE`Jf=WTXpjChgwS^p^NH_>e zNTI}JC@~jGtP^e$Mhc^ahlMAE7llc}4B-=Dq42fvldw`)FKiX+i}<1*qP`*vk+lej z#)xK%+(k=7zM>FOsA#)rx9FVcvgoErF3J==6TJ|Xh-ySlB9(|C))(`|J;Z&*M@6SZ zmqb@ZsiFs>r=kMU7g4pSQPd`4igm?2u|zynJW}i+b`-ma=ZF`HeZ(8Y;o_a*Sn*Nu zDe)!oRqER7>h4 z9TK{Mt^wPipTR(bVFsfN#u`jAa5Zo<2r^h}5N;4*5NB}6;FQ4ygH(eD22TwN4Bi@i zG^jSHGw5qzW-!!Xq`?@2i3TnPa}0c;#0Ds_8%i975^{t42H6Jr1|N1`IuCeAK}GH9^~DMq>zE%H-xwU`T@5SELbMKE|C)zg zWx6m2X!K(4Wco20&`dNJ{m3}Qq%jPbFX;A~_L}juaN1nPM06N4oOziMtMQ4xoc;vW zqj$ri=w-Al`YuetaHDHsEvPxY1r5X=V7at1#%Qbo?vv4A+8M@6%uQof_a1azrlZCT zS`@mOR!OsE;2L8YMGQ|G&}gRn(!SAdU>>vqn2e##*vRNb%ceJ=wKNuXgqDL%WwIDC z3~z=GEfO`Q>CoVn?93wicxEsb#@wPAMZ1EoM#C9nG%~PVOh4?728($Wu5L9VCpGw* z7qJ$`3;K19TbkxHd-`YEBKk7yIsGx_LMJeN`c>L8Iz}VuCuketJ=AAmUN7tuErl*a zJFtUTHEPBT$E-EJG8|A1dOxg&*`)Iw8$>^i&1FQ(KH@r&sa_8V{5T%*ln5*;z2*jsHN}Lu+UI4WEv4n zGbW#AiC(}GXv-Nvn%Wv(8Z}rfW{EOsE9fp*EF(%chGBx4Fy6o%CA4iCC8NYKfycMdSkN~HMAG>3WkDFOmAW;P#SFr{R;gdeLZ~wa}q;{O^5w- zJI#s4##(9b>6fr83`0f=BLVuHgPo>1(t{W)umEf~Edlm}$(R>bM)yI7K|A$hte`)@ zR>QF}n;yX2L3@kBcZQT6iAU07Fav%y$>0g*jd_Sw1sw#?!~O5vuM7| zFh&|9K@*`VPz7x}Mq&$TQ{W2bTxJX=rER5Eqq{Y3VQ#d6%!ybqBU^(_=fT#Fp?!zz z=YW}l71I#dubS!cG;3@uT=zc8JjQUrrs^Q{dTbP}NTV2QfDgG@%=ivRQwADN@5b0h z@4+z8%}0AM`ZESWUml0$Ibl;6&e&D@RN8cgD`rmn24{~JdMs@()cA7RipEdz|3O!VeU57LNBiJW>QAgSqdLJy5@g7@F_r+Y8Mpya1EM9GpAp`vgyz0GFm!zRuhMo zjHkWD9BAJ3WppN-CtEQ(c7tvLXBV1g3v)4ZLAN_-ccy`60c{5Qf?fqjj}6>?X*RUs z8U|2@2_}RdtfT>k6=un>#uRYHJ_=(n_F>*kZ+L@xj;4^&0oV9*X)4+TjknAu>>bvR zR>1Vu{D|(N-K2eHT!Smm_pvr~twtSIfi}`e^pp-yqX7$MN@ycAMr&%*9N{|lbh;~J zCVbyQPp8j=QH!UrpS_}$(vsGSD^I`9q#ni-t$Y#5`k3vf1iMkAPGDSyDRyIOnafrSLt${trMe`x^ez&0*7uD#d1LyYnjLDcc?F8+ZRt{Z4e+Bp6w1rqd zY#=?1kwOo`d}$5X4%!*y1-%e@#u`Rl)-eY#Gw73;&a|`WQMwa75SxW9V>D>YqqDF* z=ooqljRxzsmRW|G(nA@c3>keX-5lG18Z+-Ok20b)OHmz62EE%r*TgQ-ycmO+BQ@h; zU#9wo6+M>z2+Bt?4#2q0Va9Q^60YHU(L1p=9UAnc21A>+4}C|UO{=BXVzpR3)=X=q zcVJocW6%p+SfVcD0`n>}8(GIFfisQ@dx>tLM_^ja?u>d`JB4BvW*C)&F*y`NHDNqShHgf;qdQS34r41Y7y+X!+6Y{thG$RR;W?B( z!h$gv4g$a2z=(_h#$`kZJk3N5V4TJX=>a1)J&|7U%&HI47e;aV!&r_fG5|((2Eu1L z42Cft3mEAc0?)mMBEw+hXE}LtJ14X%;dE z#*^m5xY9xxU-CkhAWM{hbJgM=&5}`d4RG%Wqm`nyc0-48{Pr z!)V}cBnHL?_y3!flVB|ImfFgXV5Bh@d9Jo`8S(|Gf>Fr^wT5_^u5jfmB2gPJC2v{+IZ$5wsBp_F@UN7nPF(-*urybzoW(_H!0b zWY`V9X~8!JeA8eu8F0gXZ1jKI;A6A@aYO%$8xk5yh8`#1hejPwBy-;@L$^ikKYlJT zh0M%-`MzA)92&lDN7SDEhmW5+mymcZrVet4CoT=P~OD9L-Z+Gp)FJ9Y?Gt#4R`mInYh?l~^Ag^4 z>M|_%3ht1a2+K~wEy-k9{#96)Yf#5^JZ$p~sOKhbJTV38x`ls1ZbN;yajkQApw7Ga zQCm6Gn~ERGN`<=b;UC73P=6XeIwcL(AszQNybtSfAJ+_d0PB*0-+7V&>+=xT;XHzM zdW5f^mI>>XiEoa`f^~b0$KHAj>-PlO=LxK1Ha;DB3hVh4zbkqM>-r2oFfa$!HwPa! zA{W*<7cT~Ru-lNM{_X@V{HD0{zHEiE&yu$VkY~vf;u6r?TXECnvrWm%h1fPAf z1h)4r^xIq5=C?T4^c`&XJN$b2JJ|O3_>@!cVf#z*R<}}UgHrq%>jSjI2fQ@n1GGgM zK6X_Zv_~1v?fntj@Qa3@p?yB%`RSjbjlSS1i@rcReZhU{ z<L9v{yO4MOp!ER)N!BR6x6Z#ka5c3T^il?@h0S_N&C-@2iA1ti-cSs-PXK z@UOS3pe?KMDdVc4J*#1VtA;lHhU>b2gLeIfhg5unwpHNM{1wo?3Ov3^0d1_rm#tGm zJ1g4YJfgz#Qi2TLccWPlkYV`-!$U7mQBzp%yOtyT^iMk5_+N!;P(vT+WpdQNfJQR?FG?!24B zkhKdPrn~q!Xb<;y=+|qt!)o3}hb7y?9BA5G9fG4G9Igm=IUG0>?O<#j=V1M0zeCo7 z!w!$yk3oGW9Wtb6q0S2qw<0b>y~z$kK3<2qZ#g_3FNgZm9K?4Xz&d0)WLam!dgM54 zxK{w{^1`9q`3ZMC;k#r|AdHMv0#U?zvaS6FLpWtW-i6xq1;~)Qa zV7*?%VNM_7im)GX#mIy>(02ggGiV@TY(1E`3oHoh2}6h&*P%q#0&Ak!*M@ksek8Gd zhm`1X*p`S$z=;gGJ&~J35a&LOB_=kGCvIs?B$P&ziK?Ma#N~-oi6M)o6Cvwd30d4s zV(gXK#N#YCLgUjs0zo{8WP^o-c;sTjW|kMBvw8^;y>BUzb#pn9^wO6Y*XmE~lmrqR zY*!KDg{ujVts#VS!aAZnZv)Y%Ih4TkHW8VSx9fWBp@^vh90_tP^oW^PRnf-}8OM zV8wpITJs>Wxz{0R&%;FH%p(Lp@F=li_c6ls;&DR!D4uXCJ3(Z1o`m*2O>D6_Lu9(1 zB_;))BRDbV2}$Aw!t>chqNXYV+WRt*X?lg=I3^OumLw5NwkH!S&tD~OXI&$}*Xz*! zHwnxvg|MG=i@3MqHW3_khgh0?mpEJ~Cp4N;p+86>W>gw+Wqvxr47*PpIP-v5{5XT~ z`Sy@F&&q`U$s+RSJSOgjJ|W(o&L*s%JSDP}&xjaaE|klI{>mq;w-*q_R|<(6MbC*x z?L~xcpO?h;iLZzefv=(e-Vh@m6cZ6uC4?^b9g!h@Pb7Ml61lrS5It{|L4STE+;u(^ z6Nh~vmbjM_w<0QtQP;l`%6FB-bFFIV-*3cF4+U{~hmx3;QbP>+SWDRI)e|A38i>!{ zjnLms#H93QVyvQt@Rxii9*=J$rUthY8mBvmZ~2|j|J1cq@H;-dKo3J1aA(rGcDNp> z-Zkm}x@*z@b=SuJdDp@IdDmt9*Y<9V|JvT2`QN+iG5>paeU1OwJ4@q#@=lF^Y6gHi zjsEjR-L^)h|NQ^+HnyL~|AznlHn)Gz|NoT#Pq)ear}F>5mjAEbruSd1|9?@xhvV@6 zf^H1-=M5~LQ$`LD>%$wO=~^s_*(fKk8McFsx!O!jLx^J&s|& zVdLC<7frLb=xro~q1--}4$~J0E}uUMA2QISm+2rYyUFe=f>(Oabta@X)+0ubnL2Mt z!0I5sr3+@cOc+1Wb@sw#{;Rt5Dnoz%M^p$3{}6~#6#nV!Yhv)rH)2spGF6kVq({q~R*s)ZOnPcpoXE@tT zqSEH@^>e)kh7e0(zSDZL|Fm^%?^Jy%R_99HRHyn_q@uvmjUU@z``4_BE@jOV!EAzOPi(U(`v|vrSdomEq!! z+V<+Ma{C5l)PI6zfmzU}ovOyJ47u^&RSLC~%*(r6RhZCK!hv>GO;?8GZS|_k59*`N zn+jF;OS>|lT`UAmzmva?$z+due|w*P_hfv`VcYOQkKSHNDmmKz7A4GM^Y)&5ds6jY zhVHFZy)9K&=hm*uj&~)hOjy{|MK|h_?zKLF$I(p{9WNf%Wx(X3kb>`zAE}0pnpBltDpy>sRh2iY3mX{rxZ_!xI*D#pwiV~A&OovG+ds6uxu-tLUwozU z&Iz?P^k%E7q6*S7+4`tj)yGP8viIa0ZRv%oXAq!Ap?%BMVj;V#R3AR7lYm@n$vzIYh=HY=+^e1DvE5s z|4a^__bUTcrGMO>2#c!jkR|aoiK>nLZdP2l_34W0u59$+$m0E1Yc8r@$x#0<-!sYP zMS)QT#3Nvus57wW) ztjdN-^j(YURS`_cWakr`+N+*HA(_lP=%uRgxjKo4RChdop-%2{DQbWGL_Ht}ILFtV zyxrAdejByncT({?S-!?%cHqi22mB9Q!#7?G9z51PaZHr6>$LHQy=_KnC%j2zbvqCs zW}O=NfTw*qMCklLY&#HljUK1nFQF*9m-yn~;hgR9J#)qZu4X_$o~~BeR1+PKn=Xd> zeYU2|j#%iq^i16NyNkn)`Wa7jw)Z->Xo9UtrOb4g*45fwV$Ed}%*3&dXDtOs?fUt| zTMg|IC|lyBD|xM&$tU*Z&7U=E&%ObJ2W31n zTadEKwO{XRqx%obnknX)RV3K-vRV@0WjJqge*@Qqk!R*C#C!3Bas<81&N?o$HWpi< zQ_Xr1qNRL1q0fhaUL2m+X1V^P^|tIO?ye(-SXiZd_CEg7Z}wn6X#h-X=co+I) z*K4YNYXVFLpc#$%+M*S+%nWy)E$VA_Xf!Z7>@bKx^A|g7njJ!|#N&2PnWC?f^?I0K zYQpd;Ou^8%Rzq0l^V0;PX^}npBuLKo8~E8_=Ew`v0>z`Qfl+g=k2*Wg@sNoLFDNR% zSN}wFJ^hqk?=1(V3}*FAVJ_4&P8l(nFO;FytiE=}j)4X;f$W(HT`SNkjm>;Nv#(a* zsL43be97>EZ?vq3g_YrR#y&GK6^KVzkMO_6Fzt7?$f%ci%Yh(mEsTF2iQa7O(UiG|_3Dxs_~c0y=`l80R%&n5kvIp4~!5IEqnMQ*DRH$-Z;U0|I$8 zZ7cur%#ntO`N=Be!uhHZB_8QisK5dM2TtCOv2JiY3 zgJiu>bDhQnTNY<*tm|;wv3S<}=s#~k|XD|&IxJuN5 z+Gw&iN2rDe$wumNr)?V{4ly}Bq({V|Eu!9Uth@(?hp+3wJT}7w-xgOoC`HB>v%+f* zbw~3D>GRz1cN*wJ8(#mz(nx_<(RAHz)@drj+`v`r>MD~N$0o3KG(dC$hBft;Xvbbj z&=t$>Irm<4-Fc(+AlHrNGn1@LxyGIoWjlgngJiBYrg}-$u6?y^#~HC!2dh}@NY8%K z$l+tn#JgkraEuaE3nbjgL8EPp(W!FW*p$0!|86etls`vz^aGg%CPeI_Q(#C-6Mh)} z^On@~i+^7WXTYwlwWH%_Qq}P5Xk};T&!fL-m8$92Q6+q)!;h^~^((1r`IT(@YUE2HKbx?Ht zPXBI2>+ih3i-oQD1)Beo;n(3`CjBL%PW)E(yR3i70qyW(gP%}8w_m0HJn#?y@3j3A ztZZxeDcROm4_(lOe*2>Oce1VHw;_I4vh#QHPnADQg+~4(`Dcz_>EHaXL;wFI;Mu~@ z?R#hY&uX-Ew*E5k?-9`SJK5g(yMuQAa$?JGx4?e-voKZLuT%0RKGN+T7PzWD%T%5ewFactv`$T_y2zg{XzYC(odc6!xR5mh+P4R>YVL$Ic{gt z;ho#AAKkSzth2NJOGfg+om;{-4H4>VX)vf~J#}q1-#hIGe*qTWnR{l|4<1d0h+(*d zbhDW1>grkqqQ_K0eYqqHt?hH|;A3z+i}`t#>qD|jxRhKCb5Z%S)lJDIb>Hqico610 zH^v(te@I%qBTn^kybnA_+n-jcNb<>x0VbPQ%7JQ0l0((O+vJwK#OAO~Dd5?d{8gN3 zH^}4fN*~k=Z3am6mypn>FUcNX2QFR1ff(s_U*Y$XjKA?+)1$5lAf;0|A2~0{4LdnK z&gMhB#>B?$)(bNK`a>PZWD3ioUFW?Z@93Iajf;U85eDbcUXZ=*dkK%Pgg82S>yz_E z`b5G;8a9r^ohDS!wO=2*@NLt&q;2{(Ph`T6o0)uZ-wN$Xt!+n9f%3G0Adc>D z`r&In`9Ae(aW6fHTgIEM*qcwjd^dDlRDA=)w-0&S<&(I{yIhA?5Fb#+<$cQ|vrer^ zvrUCqzgT$YP#ziCxAZ~iNr-PPn)YQ}9yxUL^FEC25Z7!S)2k|%)EOj_aK)IADGTr71Sk#;S6?@pz;AGNL|gB;M2a=!H*#7M!^fnzhs z1c~lig9{W6mq#W&AT4fiJp%Sn*m2oG$pfs2uBNcfnA)J5}jxYc-_$Wl1_kxtONCc)0*cdc&pgBXu7<9Vk6P+qMF zZ>)mzPi)whap@p^U-7Dr42UhBJoD{$ADB$os%x|tV&{ivU(z3dfwszrWu6f0TS*_h ze*kuDf9ySeIK;BG%dGEYfC(0cJtt~GT$67yV$VacQCYX8qPP-bVV`G9AAysjJuD3q zA&&N{ZoxCbxmktaOBltA8`F4MU`L>q5}ygNtjWdnYZmA~F(G=uK#1`cn)ThsAir)8 zCmw|u8EEir#}got7WX;+@++M0(799HvO#omCZq2ah|}axy-lA2^PK&4gSSBJF}`S6 z(^If&;%UX5xfDNkXlnX1U^Bk_=%b+!m*(C=cjkaE)4a`{x+1>o|HlGWGlLG0n6A0R9Q_xtYmzIYg7VfBiBs|&$Qrl3wE1Y(QCHm9OOpv!qt z{A32irREI>-TK6_ICjqBy|hl@0jq%Qz{Q!;)@ zdZfH5eXbFb_XV)_I36_s;ZoZsMwLqW1xz1QCdOnN<+AZ1k5SkHI%pZaFa6u}(8UCX)w?`+Zd@%fXe_qbp3( zc1bHv!AFnlR{*O?pQjdtMo6Ou?hzms6<|}n#m%psk@6#fR!qdX0?3DXE+feZ>7xjH zW5mA#tXjva_at}7v5>|pRa6C-nLYZXFA^btkI8!>NfkhQVyVr0WP?0XqWf8uTLBoy zRby8o+vN_sW7<{93Si^EHgDagaA~IdcOyjqE1+M09~@&FA-%nBEC;dp3W8||CQgxs zO8qnxUsO(C!Qh3e*EJiXR6~+;;GR zx2nXiVECRnk)`-HxmTMbY(Le152tJ90O`~twZ=%zSD@{-z5hiJDQ6~)VIlgJV8)wS z2gj>|q~DwFY9JPsK)AvzGU47%X^7!|eZ;vEScI&3`=oQbbo}5(L&U!l6eqkI9c&jR zpJp}N0Ew;y?BM&GY2mrxU$sa+ zX0Ba7 zx{DbeC_U7(Z%-tt8erXpi+6V{kslcw_g0l#4FW1N4eo8+Ee+1-s8lJdLFe}4mq*;& zEj4R7#7FeMft7P^pO4wFN^01w*A21w2Hs@)`$VTlNHg?8DpgM3fNtlkhr_$il7HS- zG8pmy1_-_M$uDG~@{3_5J(1{dVD8+GxTy6(@^IR+SE|HsVB>o(6kzr}WpZHCOnEoeF%}Z70BDxZ{9Urmazb$C zy(&=wZWuchF_AUW6QOJ|lBWQ%b7y$8(46HNa`>|qH44D`GHf1!Z;{h>t!-54DFGu! zIl{8dNuC+`*$A;v0#{aG-K9;D(zu~vjVdQ4aL9c5+zv!amrc6RuJTiYRcj6yG|(2x z?J`X@}qte%his1ZP3$8e`{Z}K0q=#I4!uhWjDBgW6Ywg%2?dQ_JT@_Ue0s}^s zSRgUd+0xN$B&il`N9nSV(1X&HW2P;t+*;th^LWCLR!=$dJhDNhtOZqW=Z=!0d!(ng z?$AZ_>p(BJj+kY#<5IfA7C8Uc0W0!&)qT|->ESdIouU-vX^RQc6` z1-hZZciTgy(vf?(NOT=Av!h9$&;sO~MXp>VsSeP3)LDheV&$Wzbylfz>p)$Jlg&oe zcKN=`w{(!2I`GiW!g;D{i#)MxZJSE39vn59zkMaLNgnEc36B4Iz)ML1^HeeN8Qy1g z5$Af48n&ZXSm<79&*nB3;$IJ*7In+GgUF<}&1XaV*Mq6&t`0g1;^g)PZ!sjP9(=F~ z_FopdMLP5G)kalrJ+Nex`Xgy;rNZk;aQxMSq-n`sD?$%Q8xn``5d8+wXN$;vc#F5x zbjLV2|2F`KsU-nl&~WLZ>wC*pP7PpA#MN6qst9T6Dh&4j2H;Y6|8R2JUU_-CpHdao z00IV#tkc2|OR;nJKC2QNz?co)$P`ta{9S*20g~4MMlUT{xj5~hyv(*n52#x1N&dyvDyK&9@&tnsK#P!H zaB)|v{2Bp!@#F4a$iq^${ucof-3X$UiJKm7+%Ao^eN0D^8bO*asjX>uTrL+m8X|d( zz;s;SwgHa$? z!4bY7>&t>E%^uRM!>fd2GL_(9p_SXGQ_<4!`bSS}?Z{Q9@;O}i)dXw>xL4v zD?4JvH+D;##|4#FO^FQI}^PQD?#^E^8wRl z?3GV-W9OlJ;0#qcWv5c+EPrabJS{a+3HS{~w|hU1k(Um-aOF^#5+u6L{ra&`CY`$b zOxA(5N-%!UnM$5SCSNyogY;H_5{w@5&b6jTl)Q4+PMg-HN+ve&+(u=p3SZ;Gsf}=KDv%|`x5f?W^J z5_W!((ib}yZXY#P2{vG#k{D}c(tRZxVjO`I#GOC?v19i>sm;PwzH4nDKR&2VIDeZI zoW1IlW2ppnTM44Fb0T87zS0@ywign0mEdMV z(&SZ>!==0wOYKgk5=;uZREFAbm0G@<)b5We!GxB=c_ZFNNmcyCS2f!e0CU?tN_J|i zy!Lpk`@<#$SmHeK>9+~7^6U#Eho7refZc0LdXo@52Mv%lDsme%+W4Kd~;|_xQHRK{_a6frn;}0w@m8zu7%efDrnLHy@t*O7o=YH%>lM01LJr*bQgUcZDx&20T!Jq{Ov%bE1Q# z{RdbVy&)A~b*W2Ls^K1Kx3?V!ugYP2POU_S#zo1`4Lllr^|k^yp4wCL^xZbOy;ttZ zH#Zf)-9|6<(YrPBFsGw4%&sdy)7*8{W7%8fda?7KoKA-FFFS;cVSA)+`roh~2S0%s zha=5X4y==QWbS{?zN`RRE(T>E7DY=Pi`N_&r53P2}x44c>+IU(4u6#9%STlXI z-1x!Mp<_=ez^qv_*1XNxBk$YGHO%HDJcAHzlwH)HDGj_Z>AC9(1u*F~pHyDkBY!q3 z)azKh0)*Wjy6rN1shoVHvx*I|;=+nsO7BH-bFruN>T!6+vAxt~bcsy9Ic{p}28eTQ z=WJZuV~sq>y}Du*#7P@=q)kw4l?QD)GyV|7kzZVmhKRPxAA8%+sDilgxz_ybBhgYY z@12tmEZ^|VE_1;p09E(#u2SD-(`M;o2%p|wZ;NEM^w2K{Ynw0y^{3-jckA3jSOo&wLn zZbz?g?Y&&CH!UlhxT63UTN`>gIK;}Gr@T8JmZ|^~cYD2D{$vY0-+JO-o2CH$b7IWe z6IV*3Yfgp5WGKMhKnal%)WRdM)gQJ=`Yu{5)@+*HZ;3vMl?!)nJFz zYS4u0!|)7_cUNARe>X-xudnS@dJ!CNmWm^mPot%?u32!7y;gv0a{_%g`)rny9U-pE z;P|?Jboc&e@5AJ4>kG+caQtnv%8p$v-YLCYIOpK;3I+K7I)6gcx@fuA&0VG%3I(`x zrDVqI2d?rqp3|+9^$LJDogLl%bhLcr?9aObTA}^-T()U=u|z&@ep_9z3ij8?S^uHSk!u;fbh{7dqiec}7FT=&rAMZ1 zd3#s{=fjTUbBBD~EnSq1>E=S4NM`%nKG)@T|FRZe; z(k)tE7tu{~o0Afp(-?hr%c&sgw$p7T!dXh7*9$j37852v5dN6|(F5v_O)qkuvs=1l zNHP734?Lq?hF+RIadL?+=ZQQ8a10v+6CmOk9 zw<S_xJL9GzPIFkBiwDYI?rAtk7ZDU4z_N6FtrpFWv*8qWVg zy~_?<*(I;_-aTkMJY&{0zGx?Zuv^-H&H{zxjuH&1y6_;*Y_oL#on^z#9x8!iOTOiW z#qb-~7+<$w_<8&7&&5)^q@{GTtAatS6r2XDXz0&MB^)1d)ice{Og$Uhus|O$OoX` z4l{&Wxr19gj1bu6*P%LstlM>A17DD`8N*HbT>marvoeaUrC7~bWNLm9Y1~};O7o0C zs+#qn*qD0A&Ke_F9b81NaK2e|dSUM_7N^)`iftLR?XtLtEb>k|_G$AMxmwm(t(Rig ztlsN>?>Sj&Yr4lrf_2FvYP}TeVQ_!Pg6HJZ&6CEPzv7Hm%a+0@f?Z4lWY2HiYJoi` zN9u%qtG6%ds&g8}CR6NqAJ<7|3rUZ-saqc<8+XaZQ*1uP$_^ZQJFbw7l|6hud3N6} zRz|V46l?t9PFY0(`N}NipwYU1U95*%ZzE*4zvIk_C?G*n?oI9!-XCo8-&kC&mtxoC zw%M5$kil=JoAjB(PwldXS}(;O@JTXlq*yzBrKBw}??(~L@ieAmE*4korP!JQz8d{=NPQJ>aWWTl)ykM+V_G1a=CrKm+-Ia@$&HveyIDU6rc)lzKqprEbyv&pEG9hON`L|w9J z6dTh@>6J}+T>pghihc$bO}W$6ui_~-nPQX5ddPb}AuH3zmMq@cx2w)-Hvey|Os$t< zog0qKnf93c_&gnZoj;&U)x^ONUiV1p=9b$TdDO@Y^gpiA|aEUHDP){ zbn%~T{@++*wO)0}qH?_#k4UewtEZNJ((lrXsP(qNlB3W0Tc{qABb@b*I~+6mgH8S$ zTM8pLcKH;WbmHUZeh#Kb;nCyiojDYkUN$Q7}7$gGQQ6~jjSn9I~`jOs6JJSCewGn8CK2a|BaQY^-`?I=g5K@7)uMZdOUppj~T~ zm6}cd8;eu2`4n3!+4s`!8u^~n`t;5Gfj@kp*84ZsSgm&xl$D)QSbHXuTBo9d=db7f zFf+v_t65f>g?1ttv)elS*z7@nu=#&uOW|jwU9FlGt$b^rKu+?1@p)~SL6@wWjR~Xl z{%_bcN;a8d(}pz73OYwBPSgz@+deS0Ya~!?{@>VmwO%#bd3)QjQ{=_YevK)##vk($ z#m0nFCI4?&8O2_OEPqY+!(qqCPg)z-_mi1+sa2B&e<3~8TB&knMH-UZ`^gb!zwdF` zWzr>zQ*7*JSZ;gL`LrnV$l1cC^+xZzJ}}he)xVI&lw<)#>Mt8m8cKe`-*f|IqOM}q zWZhp#gpxeF1wN05N<4%KdKx?pvMYcoe#9!Cz6?~D9X+@#^T)gFam^4Aq@8 zz63N(UX80;BL2~QicMCt%rwi&D`4HI$4<7a?p@3>{89Up!Qo@wX3QJ% z^OJ{SYbmxg|6F70HSlsu@tOHqKgNs)#l~!hZ2bPobH3gHMuzjGOrIZh#wj+LV$&+M z3y~Bs0szV z8)EmlAJ&Mc*kp>8ZPi_ne;=H(xmR%846dSu6Ht6lA%Z)jJwfn9oujiAlf)TY^ND7j!EjKur3oPF2KB>-@ zbTu~(hJNkxDR$Om51W;FAZE%pe({l(u7cw!ww7W&7I+WJ$OB(1rTiVjA19SEij9ea zYz5Wj@_|9knMK`u{uo3a6q`)3Etj(AF3Sg-_-C4*9r}5Krq)ZbOXe&(Nall-)Nxb4 zo&C`vjn#T7_Ez^5W4HyN^3K>h@3#Fo=_rNaWxJSY$VQi}uenzM8ZhSx-;ew_b4a7u zWQz4D{7}m+1h=F;3)hzYa9}*e=2NWxyY(-J;>!Ro2XlZn{^(W0P7FX+~*sPWJcddL5R=x1n%IR;O+VxdN zt(Rgg1jkArKL@8@X-guE2Y0cES}(=M+h|l3g z;km*uAOvys@eQ)E3kX;cf~*SkbPrszAi&=}WK}S-$~Vx*+t+ikao`fafFQ(Y#R6|n z_a!hlGShRRvm*t^Q|MPd3ivMw2=WQ?@$+?G?z6%t2=QFAU{Mg_wcKw3%m_1B4|NYh z0zJJ~c=`qfB3?ergFFMebozP*1|q(m3j*Ai`vnFrr;z^w_1ljU1Ca%*g8aHfek)xB z>x%>iEgm`2bIl@8e@Zpd)z(FREBpgsG1QS@&j9uRg?@g^5ziHYivoQ7gFJmljtpL~ z90~LdbPo&)@bvW#TJoz(Kk={DE%)>FMqq*d0e*|9QXx{ST@6Jkuy8@3&myXvU(BEB zRhHKO0#QuoGxCK}ab>PmRQ zXK(C*oR4}+N5)6P9|4N$Iz}B2qU6*Y{DF4JrNP&f=|NWR?n5kx{Anh~MN_7`TUt`h zcMl3!;1d++xMg()bn+C!#e2qFFm4Pt}2v(*#RHE64)JTk#%Fv-wkj;kkd4}(3pK`>fJnTcj_?%^~qkYyQK5N511dPv(Q+;OY z5u=&;~kUBZ$b8u-3^pb{w1zQyXwsP&y@ zd}O^+taaTPwZy?aQD#hwoXz>^lg%gRl=gvR&*|R_2Xnq(1HOQ-fVmytIlK(&?6f}TCO$I$ z8|WYZo!39WPmo00)aR4A{vx&yeyhyZgTzEmep9q98n6R)!F|vIe8Go@WGenfP4TEq z#UmVf4}mtv{w0-KKCjf@3*Zu-#Jb=Q=z#+;`*=)cHd={^vCAscp-(g)smzfCUi=5Y C^7hgI literal 0 HcmV?d00001 diff --git a/codecs/webp/wasm_build/enc/webp_enc_simd.d.ts b/codecs/webp/wasm_build/base/enc/webp_enc_simd.d.ts similarity index 100% rename from codecs/webp/wasm_build/enc/webp_enc_simd.d.ts rename to codecs/webp/wasm_build/base/enc/webp_enc_simd.d.ts diff --git a/codecs/webp/wasm_build/dec/webp_dec.js b/codecs/webp/wasm_build/dec/webp_dec.js deleted file mode 100644 index 894b02a1b..000000000 --- a/codecs/webp/wasm_build/dec/webp_dec.js +++ /dev/null @@ -1,2997 +0,0 @@ - -var Module = (() => { - var _scriptDir = import.meta.url; - - return ( -function(moduleArg = {}) { - -// include: shell.js -// The Module object: Our interface to the outside world. We import -// and export values on it. There are various ways Module can be used: -// 1. Not defined. We create it here -// 2. A function parameter, function(Module) { ..generated code.. } -// 3. pre-run appended it, var Module = {}; ..generated code.. -// 4. External script tag defines var Module. -// We need to check if Module already exists (e.g. case 3 above). -// Substitution will be replaced with actual code on later stage of the build, -// this way Closure Compiler will not mangle it (e.g. case 4. above). -// Note that if you want to run closure, and also to use Module -// after the generated code, you will need to define var Module = {}; -// before the code. Then that object will be used in the code, and you -// can continue to use Module afterwards as well. -var Module = moduleArg; - -// Set up the promise that indicates the Module is initialized -var readyPromiseResolve, readyPromiseReject; -Module['ready'] = new Promise((resolve, reject) => { - readyPromiseResolve = resolve; - readyPromiseReject = reject; -}); -["_main","_memory","___indirect_function_table","_fflush","onRuntimeInitialized"].forEach((prop) => { - if (!Object.getOwnPropertyDescriptor(Module['ready'], prop)) { - Object.defineProperty(Module['ready'], prop, { - get: () => abort('You are getting ' + prop + ' on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js'), - set: () => abort('You are setting ' + prop + ' on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js'), - }); - } -}); - -// --pre-jses are emitted after the Module integration code, so that they can -// refer to Module (if they choose; they can also define Module) - - -// Sometimes an existing Module object exists with properties -// meant to overwrite the default module functionality. Here -// we collect those properties and reapply _after_ we configure -// the current environment's defaults to avoid having to be so -// defensive during initialization. -var moduleOverrides = Object.assign({}, Module); - -var arguments_ = []; -var thisProgram = './this.program'; -var quit_ = (status, toThrow) => { - throw toThrow; -}; - -// Determine the runtime environment we are in. You can customize this by -// setting the ENVIRONMENT setting at compile time (see settings.js). - -var ENVIRONMENT_IS_WEB = false; -var ENVIRONMENT_IS_WORKER = true; -var ENVIRONMENT_IS_NODE = false; -var ENVIRONMENT_IS_SHELL = false; - -if (Module['ENVIRONMENT']) { - throw new Error('Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)'); -} - -// `/` should be present at the end if `scriptDirectory` is not empty -var scriptDirectory = ''; -function locateFile(path) { - if (Module['locateFile']) { - return Module['locateFile'](path, scriptDirectory); - } - return scriptDirectory + path; -} - -// Hooks that are implemented differently in different runtime environments. -var read_, - readAsync, - readBinary; - -if (ENVIRONMENT_IS_SHELL) { - - if ((typeof process == 'object' && typeof require === 'function') || typeof window == 'object' || typeof importScripts == 'function') throw new Error('not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)'); - - if (typeof read != 'undefined') { - read_ = read; - } - - readBinary = (f) => { - if (typeof readbuffer == 'function') { - return new Uint8Array(readbuffer(f)); - } - let data = read(f, 'binary'); - assert(typeof data == 'object'); - return data; - }; - - readAsync = (f, onload, onerror) => { - setTimeout(() => onload(readBinary(f))); - }; - - if (typeof clearTimeout == 'undefined') { - globalThis.clearTimeout = (id) => {}; - } - - if (typeof setTimeout == 'undefined') { - // spidermonkey lacks setTimeout but we use it above in readAsync. - globalThis.setTimeout = (f) => (typeof f == 'function') ? f() : abort(); - } - - if (typeof scriptArgs != 'undefined') { - arguments_ = scriptArgs; - } else if (typeof arguments != 'undefined') { - arguments_ = arguments; - } - - if (typeof quit == 'function') { - quit_ = (status, toThrow) => { - // Unlike node which has process.exitCode, d8 has no such mechanism. So we - // have no way to set the exit code and then let the program exit with - // that code when it naturally stops running (say, when all setTimeouts - // have completed). For that reason, we must call `quit` - the only way to - // set the exit code - but quit also halts immediately. To increase - // consistency with node (and the web) we schedule the actual quit call - // using a setTimeout to give the current stack and any exception handlers - // a chance to run. This enables features such as addOnPostRun (which - // expected to be able to run code after main returns). - setTimeout(() => { - if (!(toThrow instanceof ExitStatus)) { - let toLog = toThrow; - if (toThrow && typeof toThrow == 'object' && toThrow.stack) { - toLog = [toThrow, toThrow.stack]; - } - err(`exiting due to exception: ${toLog}`); - } - quit(status); - }); - throw toThrow; - }; - } - - if (typeof print != 'undefined') { - // Prefer to use print/printErr where they exist, as they usually work better. - if (typeof console == 'undefined') console = /** @type{!Console} */({}); - console.log = /** @type{!function(this:Console, ...*): undefined} */ (print); - console.warn = console.error = /** @type{!function(this:Console, ...*): undefined} */ (typeof printErr != 'undefined' ? printErr : print); - } - -} else - -// Note that this includes Node.js workers when relevant (pthreads is enabled). -// Node.js workers are detected as a combination of ENVIRONMENT_IS_WORKER and -// ENVIRONMENT_IS_NODE. -if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { - if (ENVIRONMENT_IS_WORKER) { // Check worker, not web, since window could be polyfilled - scriptDirectory = self.location.href; - } else if (typeof document != 'undefined' && document.currentScript) { // web - scriptDirectory = document.currentScript.src; - } - // When MODULARIZE, this JS may be executed later, after document.currentScript - // is gone, so we saved it, and we use it here instead of any other info. - if (_scriptDir) { - scriptDirectory = _scriptDir; - } - // blob urls look like blob:http://site.com/etc/etc and we cannot infer anything from them. - // otherwise, slice off the final part of the url to find the script directory. - // if scriptDirectory does not contain a slash, lastIndexOf will return -1, - // and scriptDirectory will correctly be replaced with an empty string. - // If scriptDirectory contains a query (starting with ?) or a fragment (starting with #), - // they are removed because they could contain a slash. - if (scriptDirectory.indexOf('blob:') !== 0) { - scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, "").lastIndexOf('/')+1); - } else { - scriptDirectory = ''; - } - - if (!(typeof window == 'object' || typeof importScripts == 'function')) throw new Error('not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)'); - - // Differentiate the Web Worker from the Node Worker case, as reading must - // be done differently. - { -// include: web_or_worker_shell_read.js -read_ = (url) => { - var xhr = new XMLHttpRequest(); - xhr.open('GET', url, false); - xhr.send(null); - return xhr.responseText; - } - - if (ENVIRONMENT_IS_WORKER) { - readBinary = (url) => { - var xhr = new XMLHttpRequest(); - xhr.open('GET', url, false); - xhr.responseType = 'arraybuffer'; - xhr.send(null); - return new Uint8Array(/** @type{!ArrayBuffer} */(xhr.response)); - }; - } - - readAsync = (url, onload, onerror) => { - var xhr = new XMLHttpRequest(); - xhr.open('GET', url, true); - xhr.responseType = 'arraybuffer'; - xhr.onload = () => { - if (xhr.status == 200 || (xhr.status == 0 && xhr.response)) { // file URLs can return 0 - onload(xhr.response); - return; - } - onerror(); - }; - xhr.onerror = onerror; - xhr.send(null); - } - -// end include: web_or_worker_shell_read.js - } -} else -{ - throw new Error('environment detection error'); -} - -var out = Module['print'] || console.log.bind(console); -var err = Module['printErr'] || console.error.bind(console); - -// Merge back in the overrides -Object.assign(Module, moduleOverrides); -// Free the object hierarchy contained in the overrides, this lets the GC -// reclaim data used e.g. in memoryInitializerRequest, which is a large typed array. -moduleOverrides = null; -checkIncomingModuleAPI(); - -// Emit code to handle expected values on the Module object. This applies Module.x -// to the proper local x. This has two benefits: first, we only emit it if it is -// expected to arrive, and second, by using a local everywhere else that can be -// minified. - -if (Module['arguments']) arguments_ = Module['arguments'];legacyModuleProp('arguments', 'arguments_'); - -if (Module['thisProgram']) thisProgram = Module['thisProgram'];legacyModuleProp('thisProgram', 'thisProgram'); - -if (Module['quit']) quit_ = Module['quit'];legacyModuleProp('quit', 'quit_'); - -// perform assertions in shell.js after we set up out() and err(), as otherwise if an assertion fails it cannot print the message -// Assertions on removed incoming Module JS APIs. -assert(typeof Module['memoryInitializerPrefixURL'] == 'undefined', 'Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead'); -assert(typeof Module['pthreadMainPrefixURL'] == 'undefined', 'Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead'); -assert(typeof Module['cdInitializerPrefixURL'] == 'undefined', 'Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead'); -assert(typeof Module['filePackagePrefixURL'] == 'undefined', 'Module.filePackagePrefixURL option was removed, use Module.locateFile instead'); -assert(typeof Module['read'] == 'undefined', 'Module.read option was removed (modify read_ in JS)'); -assert(typeof Module['readAsync'] == 'undefined', 'Module.readAsync option was removed (modify readAsync in JS)'); -assert(typeof Module['readBinary'] == 'undefined', 'Module.readBinary option was removed (modify readBinary in JS)'); -assert(typeof Module['setWindowTitle'] == 'undefined', 'Module.setWindowTitle option was removed (modify emscripten_set_window_title in JS)'); -assert(typeof Module['TOTAL_MEMORY'] == 'undefined', 'Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY'); -legacyModuleProp('asm', 'wasmExports'); -legacyModuleProp('read', 'read_'); -legacyModuleProp('readAsync', 'readAsync'); -legacyModuleProp('readBinary', 'readBinary'); -legacyModuleProp('setWindowTitle', 'setWindowTitle'); -var IDBFS = 'IDBFS is no longer included by default; build with -lidbfs.js'; -var PROXYFS = 'PROXYFS is no longer included by default; build with -lproxyfs.js'; -var WORKERFS = 'WORKERFS is no longer included by default; build with -lworkerfs.js'; -var FETCHFS = 'FETCHFS is no longer included by default; build with -lfetchfs.js'; -var ICASEFS = 'ICASEFS is no longer included by default; build with -licasefs.js'; -var JSFILEFS = 'JSFILEFS is no longer included by default; build with -ljsfilefs.js'; -var OPFS = 'OPFS is no longer included by default; build with -lopfs.js'; - -var NODEFS = 'NODEFS is no longer included by default; build with -lnodefs.js'; - -assert(!ENVIRONMENT_IS_WEB, "web environment detected but not enabled at build time. Add 'web' to `-sENVIRONMENT` to enable."); - -assert(!ENVIRONMENT_IS_NODE, "node environment detected but not enabled at build time. Add 'node' to `-sENVIRONMENT` to enable."); - -assert(!ENVIRONMENT_IS_SHELL, "shell environment detected but not enabled at build time. Add 'shell' to `-sENVIRONMENT` to enable."); - - -// end include: shell.js -// include: preamble.js -// === Preamble library stuff === - -// Documentation for the public APIs defined in this file must be updated in: -// site/source/docs/api_reference/preamble.js.rst -// A prebuilt local version of the documentation is available at: -// site/build/text/docs/api_reference/preamble.js.txt -// You can also build docs locally as HTML or other formats in site/ -// An online HTML version (which may be of a different version of Emscripten) -// is up at http://kripken.github.io/emscripten-site/docs/api_reference/preamble.js.html - -var wasmBinary; -if (Module['wasmBinary']) wasmBinary = Module['wasmBinary'];legacyModuleProp('wasmBinary', 'wasmBinary'); - -if (typeof WebAssembly != 'object') { - abort('no native wasm support detected'); -} - -// Wasm globals - -var wasmMemory; - -//======================================== -// Runtime essentials -//======================================== - -// whether we are quitting the application. no code should run after this. -// set in exit() and abort() -var ABORT = false; - -// set by exit() and abort(). Passed to 'onExit' handler. -// NOTE: This is also used as the process return code code in shell environments -// but only when noExitRuntime is false. -var EXITSTATUS; - -// In STRICT mode, we only define assert() when ASSERTIONS is set. i.e. we -// don't define it at all in release modes. This matches the behaviour of -// MINIMAL_RUNTIME. -// TODO(sbc): Make this the default even without STRICT enabled. -/** @type {function(*, string=)} */ -function assert(condition, text) { - if (!condition) { - abort('Assertion failed' + (text ? ': ' + text : '')); - } -} - -// We used to include malloc/free by default in the past. Show a helpful error in -// builds with assertions. - -// Memory management - -var HEAP, -/** @type {!Int8Array} */ - HEAP8, -/** @type {!Uint8Array} */ - HEAPU8, -/** @type {!Int16Array} */ - HEAP16, -/** @type {!Uint16Array} */ - HEAPU16, -/** @type {!Int32Array} */ - HEAP32, -/** @type {!Uint32Array} */ - HEAPU32, -/** @type {!Float32Array} */ - HEAPF32, -/** @type {!Float64Array} */ - HEAPF64; - -function updateMemoryViews() { - var b = wasmMemory.buffer; - Module['HEAP8'] = HEAP8 = new Int8Array(b); - Module['HEAP16'] = HEAP16 = new Int16Array(b); - Module['HEAPU8'] = HEAPU8 = new Uint8Array(b); - Module['HEAPU16'] = HEAPU16 = new Uint16Array(b); - Module['HEAP32'] = HEAP32 = new Int32Array(b); - Module['HEAPU32'] = HEAPU32 = new Uint32Array(b); - Module['HEAPF32'] = HEAPF32 = new Float32Array(b); - Module['HEAPF64'] = HEAPF64 = new Float64Array(b); -} - -assert(!Module['STACK_SIZE'], 'STACK_SIZE can no longer be set at runtime. Use -sSTACK_SIZE at link time') - -assert(typeof Int32Array != 'undefined' && typeof Float64Array !== 'undefined' && Int32Array.prototype.subarray != undefined && Int32Array.prototype.set != undefined, - 'JS engine does not provide full typed array support'); - -// If memory is defined in wasm, the user can't provide it, or set INITIAL_MEMORY -assert(!Module['wasmMemory'], 'Use of `wasmMemory` detected. Use -sIMPORTED_MEMORY to define wasmMemory externally'); -assert(!Module['INITIAL_MEMORY'], 'Detected runtime INITIAL_MEMORY setting. Use -sIMPORTED_MEMORY to define wasmMemory dynamically'); - -// include: runtime_stack_check.js -// Initializes the stack cookie. Called at the startup of main and at the startup of each thread in pthreads mode. -function writeStackCookie() { - var max = _emscripten_stack_get_end(); - assert((max & 3) == 0); - // If the stack ends at address zero we write our cookies 4 bytes into the - // stack. This prevents interference with SAFE_HEAP and ASAN which also - // monitor writes to address zero. - if (max == 0) { - max += 4; - } - // The stack grow downwards towards _emscripten_stack_get_end. - // We write cookies to the final two words in the stack and detect if they are - // ever overwritten. - HEAPU32[((max)>>2)] = 0x02135467; - HEAPU32[(((max)+(4))>>2)] = 0x89BACDFE; - // Also test the global address 0 for integrity. - HEAPU32[((0)>>2)] = 1668509029; -} - -function checkStackCookie() { - if (ABORT) return; - var max = _emscripten_stack_get_end(); - // See writeStackCookie(). - if (max == 0) { - max += 4; - } - var cookie1 = HEAPU32[((max)>>2)]; - var cookie2 = HEAPU32[(((max)+(4))>>2)]; - if (cookie1 != 0x02135467 || cookie2 != 0x89BACDFE) { - abort(`Stack overflow! Stack cookie has been overwritten at ${ptrToString(max)}, expected hex dwords 0x89BACDFE and 0x2135467, but received ${ptrToString(cookie2)} ${ptrToString(cookie1)}`); - } - // Also test the global address 0 for integrity. - if (HEAPU32[((0)>>2)] != 0x63736d65 /* 'emsc' */) { - abort('Runtime error: The application has corrupted its heap memory area (address zero)!'); - } -} -// end include: runtime_stack_check.js -// include: runtime_assertions.js -// Endianness check -(function() { - var h16 = new Int16Array(1); - var h8 = new Int8Array(h16.buffer); - h16[0] = 0x6373; - if (h8[0] !== 0x73 || h8[1] !== 0x63) throw 'Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)'; -})(); - -// end include: runtime_assertions.js -var __ATPRERUN__ = []; // functions called before the runtime is initialized -var __ATINIT__ = []; // functions called during startup -var __ATEXIT__ = []; // functions called during shutdown -var __ATPOSTRUN__ = []; // functions called after the main() is called - -var runtimeInitialized = false; - -function preRun() { - if (Module['preRun']) { - if (typeof Module['preRun'] == 'function') Module['preRun'] = [Module['preRun']]; - while (Module['preRun'].length) { - addOnPreRun(Module['preRun'].shift()); - } - } - callRuntimeCallbacks(__ATPRERUN__); -} - -function initRuntime() { - assert(!runtimeInitialized); - runtimeInitialized = true; - - checkStackCookie(); - - - callRuntimeCallbacks(__ATINIT__); -} - -function postRun() { - checkStackCookie(); - - if (Module['postRun']) { - if (typeof Module['postRun'] == 'function') Module['postRun'] = [Module['postRun']]; - while (Module['postRun'].length) { - addOnPostRun(Module['postRun'].shift()); - } - } - - callRuntimeCallbacks(__ATPOSTRUN__); -} - -function addOnPreRun(cb) { - __ATPRERUN__.unshift(cb); -} - -function addOnInit(cb) { - __ATINIT__.unshift(cb); -} - -function addOnExit(cb) { -} - -function addOnPostRun(cb) { - __ATPOSTRUN__.unshift(cb); -} - -// include: runtime_math.js -// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/imul - -// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/fround - -// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/clz32 - -// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/trunc - -assert(Math.imul, 'This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); -assert(Math.fround, 'This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); -assert(Math.clz32, 'This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); -assert(Math.trunc, 'This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); -// end include: runtime_math.js -// A counter of dependencies for calling run(). If we need to -// do asynchronous work before running, increment this and -// decrement it. Incrementing must happen in a place like -// Module.preRun (used by emcc to add file preloading). -// Note that you can add dependencies in preRun, even though -// it happens right before run - run will be postponed until -// the dependencies are met. -var runDependencies = 0; -var runDependencyWatcher = null; -var dependenciesFulfilled = null; // overridden to take different actions when all run dependencies are fulfilled -var runDependencyTracking = {}; - -function getUniqueRunDependency(id) { - var orig = id; - while (1) { - if (!runDependencyTracking[id]) return id; - id = orig + Math.random(); - } -} - -function addRunDependency(id) { - runDependencies++; - - Module['monitorRunDependencies']?.(runDependencies); - - if (id) { - assert(!runDependencyTracking[id]); - runDependencyTracking[id] = 1; - if (runDependencyWatcher === null && typeof setInterval != 'undefined') { - // Check for missing dependencies every few seconds - runDependencyWatcher = setInterval(() => { - if (ABORT) { - clearInterval(runDependencyWatcher); - runDependencyWatcher = null; - return; - } - var shown = false; - for (var dep in runDependencyTracking) { - if (!shown) { - shown = true; - err('still waiting on run dependencies:'); - } - err(`dependency: ${dep}`); - } - if (shown) { - err('(end of list)'); - } - }, 10000); - } - } else { - err('warning: run dependency added without ID'); - } -} - -function removeRunDependency(id) { - runDependencies--; - - Module['monitorRunDependencies']?.(runDependencies); - - if (id) { - assert(runDependencyTracking[id]); - delete runDependencyTracking[id]; - } else { - err('warning: run dependency removed without ID'); - } - if (runDependencies == 0) { - if (runDependencyWatcher !== null) { - clearInterval(runDependencyWatcher); - runDependencyWatcher = null; - } - if (dependenciesFulfilled) { - var callback = dependenciesFulfilled; - dependenciesFulfilled = null; - callback(); // can add another dependenciesFulfilled - } - } -} - -/** @param {string|number=} what */ -function abort(what) { - Module['onAbort']?.(what); - - what = 'Aborted(' + what + ')'; - // TODO(sbc): Should we remove printing and leave it up to whoever - // catches the exception? - err(what); - - ABORT = true; - EXITSTATUS = 1; - - // Use a wasm runtime error, because a JS error might be seen as a foreign - // exception, which means we'd run destructors on it. We need the error to - // simply make the program stop. - // FIXME This approach does not work in Wasm EH because it currently does not assume - // all RuntimeErrors are from traps; it decides whether a RuntimeError is from - // a trap or not based on a hidden field within the object. So at the moment - // we don't have a way of throwing a wasm trap from JS. TODO Make a JS API that - // allows this in the wasm spec. - - // Suppress closure compiler warning here. Closure compiler's builtin extern - // defintion for WebAssembly.RuntimeError claims it takes no arguments even - // though it can. - // TODO(https://github.com/google/closure-compiler/pull/3913): Remove if/when upstream closure gets fixed. - /** @suppress {checkTypes} */ - var e = new WebAssembly.RuntimeError(what); - - readyPromiseReject(e); - // Throw the error whether or not MODULARIZE is set because abort is used - // in code paths apart from instantiation where an exception is expected - // to be thrown when abort is called. - throw e; -} - -// include: memoryprofiler.js -// end include: memoryprofiler.js -// show errors on likely calls to FS when it was not included -var FS = { - error() { - abort('Filesystem support (FS) was not included. The problem is that you are using files from JS, but files were not used from C/C++, so filesystem support was not auto-included. You can force-include filesystem support with -sFORCE_FILESYSTEM'); - }, - init() { FS.error() }, - createDataFile() { FS.error() }, - createPreloadedFile() { FS.error() }, - createLazyFile() { FS.error() }, - open() { FS.error() }, - mkdev() { FS.error() }, - registerDevice() { FS.error() }, - analyzePath() { FS.error() }, - - ErrnoError() { FS.error() }, -}; -Module['FS_createDataFile'] = FS.createDataFile; -Module['FS_createPreloadedFile'] = FS.createPreloadedFile; - -// include: URIUtils.js -// Prefix of data URIs emitted by SINGLE_FILE and related options. -var dataURIPrefix = 'data:application/octet-stream;base64,'; - -/** - * Indicates whether filename is a base64 data URI. - * @noinline - */ -var isDataURI = (filename) => filename.startsWith(dataURIPrefix); - -/** - * Indicates whether filename is delivered via file protocol (as opposed to http/https) - * @noinline - */ -var isFileURI = (filename) => filename.startsWith('file://'); -// end include: URIUtils.js -function createExportWrapper(name) { - return function() { - assert(runtimeInitialized, `native function \`${name}\` called before runtime initialization`); - var f = wasmExports[name]; - assert(f, `exported native function \`${name}\` not found`); - return f.apply(null, arguments); - }; -} - -// include: runtime_exceptions.js -// end include: runtime_exceptions.js -var wasmBinaryFile; -if (Module['locateFile']) { - wasmBinaryFile = 'webp_dec.wasm'; - if (!isDataURI(wasmBinaryFile)) { - wasmBinaryFile = locateFile(wasmBinaryFile); - } -} else { - // Use bundler-friendly `new URL(..., import.meta.url)` pattern; works in browsers too. - wasmBinaryFile = new URL('webp_dec.wasm', import.meta.url).href; -} - -function getBinarySync(file) { - if (file == wasmBinaryFile && wasmBinary) { - return new Uint8Array(wasmBinary); - } - if (readBinary) { - return readBinary(file); - } - throw "both async and sync fetching of the wasm failed"; -} - -function getBinaryPromise(binaryFile) { - // If we don't have the binary yet, try to load it asynchronously. - // Fetch has some additional restrictions over XHR, like it can't be used on a file:// url. - // See https://github.com/github/fetch/pull/92#issuecomment-140665932 - // Cordova or Electron apps are typically loaded from a file:// url. - // So use fetch if it is available and the url is not a file, otherwise fall back to XHR. - if (!wasmBinary - && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) { - if (typeof fetch == 'function' - ) { - return fetch(binaryFile, { credentials: 'same-origin' }).then((response) => { - if (!response['ok']) { - throw "failed to load wasm binary file at '" + binaryFile + "'"; - } - return response['arrayBuffer'](); - }).catch(() => getBinarySync(binaryFile)); - } - } - - // Otherwise, getBinarySync should be able to get it synchronously - return Promise.resolve().then(() => getBinarySync(binaryFile)); -} - -function instantiateArrayBuffer(binaryFile, imports, receiver) { - return getBinaryPromise(binaryFile).then((binary) => { - return WebAssembly.instantiate(binary, imports); - }).then((instance) => { - return instance; - }).then(receiver, (reason) => { - err(`failed to asynchronously prepare wasm: ${reason}`); - - // Warn on some common problems. - if (isFileURI(wasmBinaryFile)) { - err(`warning: Loading from a file URI (${wasmBinaryFile}) is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing`); - } - abort(reason); - }); -} - -function instantiateAsync(binary, binaryFile, imports, callback) { - if (!binary && - typeof WebAssembly.instantiateStreaming == 'function' && - !isDataURI(binaryFile) && - typeof fetch == 'function') { - return fetch(binaryFile, { credentials: 'same-origin' }).then((response) => { - // Suppress closure warning here since the upstream definition for - // instantiateStreaming only allows Promise rather than - // an actual Response. - // TODO(https://github.com/google/closure-compiler/pull/3913): Remove if/when upstream closure is fixed. - /** @suppress {checkTypes} */ - var result = WebAssembly.instantiateStreaming(response, imports); - - return result.then( - callback, - function(reason) { - // We expect the most common failure cause to be a bad MIME type for the binary, - // in which case falling back to ArrayBuffer instantiation should work. - err(`wasm streaming compile failed: ${reason}`); - err('falling back to ArrayBuffer instantiation'); - return instantiateArrayBuffer(binaryFile, imports, callback); - }); - }); - } - return instantiateArrayBuffer(binaryFile, imports, callback); -} - -// Create the wasm instance. -// Receives the wasm imports, returns the exports. -function createWasm() { - // prepare imports - var info = { - 'env': wasmImports, - 'wasi_snapshot_preview1': wasmImports, - }; - // Load the wasm module and create an instance of using native support in the JS engine. - // handle a generated wasm instance, receiving its exports and - // performing other necessary setup - /** @param {WebAssembly.Module=} module*/ - function receiveInstance(instance, module) { - wasmExports = instance.exports; - - - - wasmMemory = wasmExports['memory']; - - assert(wasmMemory, "memory not found in wasm exports"); - // This assertion doesn't hold when emscripten is run in --post-link - // mode. - // TODO(sbc): Read INITIAL_MEMORY out of the wasm file in post-link mode. - //assert(wasmMemory.buffer.byteLength === 16777216); - updateMemoryViews(); - - wasmTable = wasmExports['__indirect_function_table']; - - assert(wasmTable, "table not found in wasm exports"); - - addOnInit(wasmExports['__wasm_call_ctors']); - - removeRunDependency('wasm-instantiate'); - return wasmExports; - } - // wait for the pthread pool (if any) - addRunDependency('wasm-instantiate'); - - // Prefer streaming instantiation if available. - // Async compilation can be confusing when an error on the page overwrites Module - // (for example, if the order of elements is wrong, and the one defining Module is - // later), so we save Module and check it later. - var trueModule = Module; - function receiveInstantiationResult(result) { - // 'result' is a ResultObject object which has both the module and instance. - // receiveInstance() will swap in the exports (to Module.asm) so they can be called - assert(Module === trueModule, 'the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?'); - trueModule = null; - // TODO: Due to Closure regression https://github.com/google/closure-compiler/issues/3193, the above line no longer optimizes out down to the following line. - // When the regression is fixed, can restore the above PTHREADS-enabled path. - receiveInstance(result['instance']); - } - - // User shell pages can write their own Module.instantiateWasm = function(imports, successCallback) callback - // to manually instantiate the Wasm module themselves. This allows pages to - // run the instantiation parallel to any other async startup actions they are - // performing. - // Also pthreads and wasm workers initialize the wasm instance through this - // path. - if (Module['instantiateWasm']) { - - try { - return Module['instantiateWasm'](info, receiveInstance); - } catch(e) { - err(`Module.instantiateWasm callback failed with error: ${e}`); - // If instantiation fails, reject the module ready promise. - readyPromiseReject(e); - } - } - - // If instantiation fails, reject the module ready promise. - instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult).catch(readyPromiseReject); - return {}; // no exports yet; we'll fill them in later -} - -// Globals used by JS i64 conversions (see makeSetValue) -var tempDouble; -var tempI64; - -// include: runtime_debug.js -function legacyModuleProp(prop, newName, incomming=true) { - if (!Object.getOwnPropertyDescriptor(Module, prop)) { - Object.defineProperty(Module, prop, { - configurable: true, - get() { - let extra = incomming ? ' (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)' : ''; - abort(`\`Module.${prop}\` has been replaced by \`${newName}\`` + extra); - - } - }); - } -} - -function ignoredModuleProp(prop) { - if (Object.getOwnPropertyDescriptor(Module, prop)) { - abort(`\`Module.${prop}\` was supplied but \`${prop}\` not included in INCOMING_MODULE_JS_API`); - } -} - -// forcing the filesystem exports a few things by default -function isExportedByForceFilesystem(name) { - return name === 'FS_createPath' || - name === 'FS_createDataFile' || - name === 'FS_createPreloadedFile' || - name === 'FS_unlink' || - name === 'addRunDependency' || - // The old FS has some functionality that WasmFS lacks. - name === 'FS_createLazyFile' || - name === 'FS_createDevice' || - name === 'removeRunDependency'; -} - -function missingGlobal(sym, msg) { - if (typeof globalThis !== 'undefined') { - Object.defineProperty(globalThis, sym, { - configurable: true, - get() { - warnOnce(`\`${sym}\` is not longer defined by emscripten. ${msg}`); - return undefined; - } - }); - } -} - -missingGlobal('buffer', 'Please use HEAP8.buffer or wasmMemory.buffer'); -missingGlobal('asm', 'Please use wasmExports instead'); - -function missingLibrarySymbol(sym) { - if (typeof globalThis !== 'undefined' && !Object.getOwnPropertyDescriptor(globalThis, sym)) { - Object.defineProperty(globalThis, sym, { - configurable: true, - get() { - // Can't `abort()` here because it would break code that does runtime - // checks. e.g. `if (typeof SDL === 'undefined')`. - var msg = `\`${sym}\` is a library symbol and not included by default; add it to your library.js __deps or to DEFAULT_LIBRARY_FUNCS_TO_INCLUDE on the command line`; - // DEFAULT_LIBRARY_FUNCS_TO_INCLUDE requires the name as it appears in - // library.js, which means $name for a JS name with no prefix, or name - // for a JS name like _name. - var librarySymbol = sym; - if (!librarySymbol.startsWith('_')) { - librarySymbol = '$' + sym; - } - msg += ` (e.g. -sDEFAULT_LIBRARY_FUNCS_TO_INCLUDE='${librarySymbol}')`; - if (isExportedByForceFilesystem(sym)) { - msg += '. Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you'; - } - warnOnce(msg); - return undefined; - } - }); - } - // Any symbol that is not included from the JS libary is also (by definition) - // not exported on the Module object. - unexportedRuntimeSymbol(sym); -} - -function unexportedRuntimeSymbol(sym) { - if (!Object.getOwnPropertyDescriptor(Module, sym)) { - Object.defineProperty(Module, sym, { - configurable: true, - get() { - var msg = `'${sym}' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the Emscripten FAQ)`; - if (isExportedByForceFilesystem(sym)) { - msg += '. Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you'; - } - abort(msg); - } - }); - } -} - -// Used by XXXXX_DEBUG settings to output debug messages. -function dbg(text) { - // TODO(sbc): Make this configurable somehow. Its not always convenient for - // logging to show up as warnings. - console.warn.apply(console, arguments); -} -// end include: runtime_debug.js -// === Body === - -// end include: preamble.js - - /** @constructor */ - function ExitStatus(status) { - this.name = 'ExitStatus'; - this.message = `Program terminated with exit(${status})`; - this.status = status; - } - - var callRuntimeCallbacks = (callbacks) => { - while (callbacks.length > 0) { - // Pass the module as the first argument. - callbacks.shift()(Module); - } - }; - - - /** - * @param {number} ptr - * @param {string} type - */ - function getValue(ptr, type = 'i8') { - if (type.endsWith('*')) type = '*'; - switch (type) { - case 'i1': return HEAP8[((ptr)>>0)]; - case 'i8': return HEAP8[((ptr)>>0)]; - case 'i16': return HEAP16[((ptr)>>1)]; - case 'i32': return HEAP32[((ptr)>>2)]; - case 'i64': abort('to do getValue(i64) use WASM_BIGINT'); - case 'float': return HEAPF32[((ptr)>>2)]; - case 'double': return HEAPF64[((ptr)>>3)]; - case '*': return HEAPU32[((ptr)>>2)]; - default: abort(`invalid type for getValue: ${type}`); - } - } - - var noExitRuntime = Module['noExitRuntime'] || true; - - var ptrToString = (ptr) => { - assert(typeof ptr === 'number'); - // With CAN_ADDRESS_2GB or MEMORY64, pointers are already unsigned. - ptr >>>= 0; - return '0x' + ptr.toString(16).padStart(8, '0'); - }; - - - /** - * @param {number} ptr - * @param {number} value - * @param {string} type - */ - function setValue(ptr, value, type = 'i8') { - if (type.endsWith('*')) type = '*'; - switch (type) { - case 'i1': HEAP8[((ptr)>>0)] = value; break; - case 'i8': HEAP8[((ptr)>>0)] = value; break; - case 'i16': HEAP16[((ptr)>>1)] = value; break; - case 'i32': HEAP32[((ptr)>>2)] = value; break; - case 'i64': abort('to do setValue(i64) use WASM_BIGINT'); - case 'float': HEAPF32[((ptr)>>2)] = value; break; - case 'double': HEAPF64[((ptr)>>3)] = value; break; - case '*': HEAPU32[((ptr)>>2)] = value; break; - default: abort(`invalid type for setValue: ${type}`); - } - } - - var warnOnce = (text) => { - warnOnce.shown ||= {}; - if (!warnOnce.shown[text]) { - warnOnce.shown[text] = 1; - err(text); - } - }; - - var __embind_register_bigint = (primitiveType, name, size, minRange, maxRange) => {}; - - var embind_init_charCodes = () => { - var codes = new Array(256); - for (var i = 0; i < 256; ++i) { - codes[i] = String.fromCharCode(i); - } - embind_charCodes = codes; - }; - var embind_charCodes; - var readLatin1String = (ptr) => { - var ret = ""; - var c = ptr; - while (HEAPU8[c]) { - ret += embind_charCodes[HEAPU8[c++]]; - } - return ret; - }; - - var awaitingDependencies = { - }; - - var registeredTypes = { - }; - - var typeDependencies = { - }; - - var BindingError; - var throwBindingError = (message) => { throw new BindingError(message); }; - - - - - var InternalError; - var throwInternalError = (message) => { throw new InternalError(message); }; - var whenDependentTypesAreResolved = (myTypes, dependentTypes, getTypeConverters) => { - myTypes.forEach(function(type) { - typeDependencies[type] = dependentTypes; - }); - - function onComplete(typeConverters) { - var myTypeConverters = getTypeConverters(typeConverters); - if (myTypeConverters.length !== myTypes.length) { - throwInternalError('Mismatched type converter count'); - } - for (var i = 0; i < myTypes.length; ++i) { - registerType(myTypes[i], myTypeConverters[i]); - } - } - - var typeConverters = new Array(dependentTypes.length); - var unregisteredTypes = []; - var registered = 0; - dependentTypes.forEach((dt, i) => { - if (registeredTypes.hasOwnProperty(dt)) { - typeConverters[i] = registeredTypes[dt]; - } else { - unregisteredTypes.push(dt); - if (!awaitingDependencies.hasOwnProperty(dt)) { - awaitingDependencies[dt] = []; - } - awaitingDependencies[dt].push(() => { - typeConverters[i] = registeredTypes[dt]; - ++registered; - if (registered === unregisteredTypes.length) { - onComplete(typeConverters); - } - }); - } - }); - if (0 === unregisteredTypes.length) { - onComplete(typeConverters); - } - }; - /** @param {Object=} options */ - function sharedRegisterType(rawType, registeredInstance, options = {}) { - var name = registeredInstance.name; - if (!rawType) { - throwBindingError(`type "${name}" must have a positive integer typeid pointer`); - } - if (registeredTypes.hasOwnProperty(rawType)) { - if (options.ignoreDuplicateRegistrations) { - return; - } else { - throwBindingError(`Cannot register type '${name}' twice`); - } - } - - registeredTypes[rawType] = registeredInstance; - delete typeDependencies[rawType]; - - if (awaitingDependencies.hasOwnProperty(rawType)) { - var callbacks = awaitingDependencies[rawType]; - delete awaitingDependencies[rawType]; - callbacks.forEach((cb) => cb()); - } - } - /** @param {Object=} options */ - function registerType(rawType, registeredInstance, options = {}) { - if (!('argPackAdvance' in registeredInstance)) { - throw new TypeError('registerType registeredInstance requires argPackAdvance'); - } - return sharedRegisterType(rawType, registeredInstance, options); - } - - var GenericWireTypeSize = 8; - /** @suppress {globalThis} */ - var __embind_register_bool = (rawType, name, trueValue, falseValue) => { - name = readLatin1String(name); - registerType(rawType, { - name, - 'fromWireType': function(wt) { - // ambiguous emscripten ABI: sometimes return values are - // true or false, and sometimes integers (0 or 1) - return !!wt; - }, - 'toWireType': function(destructors, o) { - return o ? trueValue : falseValue; - }, - 'argPackAdvance': GenericWireTypeSize, - 'readValueFromPointer': function(pointer) { - return this['fromWireType'](HEAPU8[pointer]); - }, - destructorFunction: null, // This type does not need a destructor - }); - }; - - function handleAllocatorInit() { - Object.assign(HandleAllocator.prototype, /** @lends {HandleAllocator.prototype} */ { - get(id) { - assert(this.allocated[id] !== undefined, `invalid handle: ${id}`); - return this.allocated[id]; - }, - has(id) { - return this.allocated[id] !== undefined; - }, - allocate(handle) { - var id = this.freelist.pop() || this.allocated.length; - this.allocated[id] = handle; - return id; - }, - free(id) { - assert(this.allocated[id] !== undefined); - // Set the slot to `undefined` rather than using `delete` here since - // apparently arrays with holes in them can be less efficient. - this.allocated[id] = undefined; - this.freelist.push(id); - } - }); - } - /** @constructor */ - function HandleAllocator() { - // Reserve slot 0 so that 0 is always an invalid handle - this.allocated = [undefined]; - this.freelist = []; - } - var emval_handles = new HandleAllocator();; - var __emval_decref = (handle) => { - if (handle >= emval_handles.reserved && 0 === --emval_handles.get(handle).refcount) { - emval_handles.free(handle); - } - }; - - - - var count_emval_handles = () => { - var count = 0; - for (var i = emval_handles.reserved; i < emval_handles.allocated.length; ++i) { - if (emval_handles.allocated[i] !== undefined) { - ++count; - } - } - return count; - }; - - var init_emval = () => { - // reserve some special values. These never get de-allocated. - // The HandleAllocator takes care of reserving zero. - emval_handles.allocated.push( - {value: undefined}, - {value: null}, - {value: true}, - {value: false}, - ); - emval_handles.reserved = emval_handles.allocated.length - Module['count_emval_handles'] = count_emval_handles; - }; - var Emval = { - toValue:(handle) => { - if (!handle) { - throwBindingError('Cannot use deleted val. handle = ' + handle); - } - return emval_handles.get(handle).value; - }, - toHandle:(value) => { - switch (value) { - case undefined: return 1; - case null: return 2; - case true: return 3; - case false: return 4; - default:{ - return emval_handles.allocate({refcount: 1, value: value}); - } - } - }, - }; - - - - /** @suppress {globalThis} */ - function simpleReadValueFromPointer(pointer) { - return this['fromWireType'](HEAP32[((pointer)>>2)]); - } - var __embind_register_emval = (rawType, name) => { - name = readLatin1String(name); - registerType(rawType, { - name, - 'fromWireType': (handle) => { - var rv = Emval.toValue(handle); - __emval_decref(handle); - return rv; - }, - 'toWireType': (destructors, value) => Emval.toHandle(value), - 'argPackAdvance': GenericWireTypeSize, - 'readValueFromPointer': simpleReadValueFromPointer, - destructorFunction: null, // This type does not need a destructor - - // TODO: do we need a deleteObject here? write a test where - // emval is passed into JS via an interface - }); - }; - - var embindRepr = (v) => { - if (v === null) { - return 'null'; - } - var t = typeof v; - if (t === 'object' || t === 'array' || t === 'function') { - return v.toString(); - } else { - return '' + v; - } - }; - - var floatReadValueFromPointer = (name, width) => { - switch (width) { - case 4: return function(pointer) { - return this['fromWireType'](HEAPF32[((pointer)>>2)]); - }; - case 8: return function(pointer) { - return this['fromWireType'](HEAPF64[((pointer)>>3)]); - }; - default: - throw new TypeError(`invalid float width (${width}): ${name}`); - } - }; - - - var __embind_register_float = (rawType, name, size) => { - name = readLatin1String(name); - registerType(rawType, { - name, - 'fromWireType': (value) => value, - 'toWireType': (destructors, value) => { - if (typeof value != "number" && typeof value != "boolean") { - throw new TypeError(`Cannot convert ${embindRepr(value)} to ${this.name}`); - } - // The VM will perform JS to Wasm value conversion, according to the spec: - // https://www.w3.org/TR/wasm-js-api-1/#towebassemblyvalue - return value; - }, - 'argPackAdvance': GenericWireTypeSize, - 'readValueFromPointer': floatReadValueFromPointer(name, size), - destructorFunction: null, // This type does not need a destructor - }); - }; - - var createNamedFunction = (name, body) => Object.defineProperty(body, 'name', { - value: name - }); - - var runDestructors = (destructors) => { - while (destructors.length) { - var ptr = destructors.pop(); - var del = destructors.pop(); - del(ptr); - } - }; - - - function usesDestructorStack(argTypes) { - for (var i = 1; i < argTypes.length; ++i) { // Skip return value at index 0 - it's not deleted here. - if (argTypes[i] !== null && argTypes[i].destructorFunction === undefined) { // The type does not define a destructor function - must use dynamic stack - return true; - } - } - return false; - } - - function newFunc(constructor, argumentList) { - if (!(constructor instanceof Function)) { - throw new TypeError(`new_ called with constructor type ${typeof(constructor)} which is not a function`); - } - /* - * Previously, the following line was just: - * function dummy() {}; - * Unfortunately, Chrome was preserving 'dummy' as the object's name, even - * though at creation, the 'dummy' has the correct constructor name. Thus, - * objects created with IMVU.new would show up in the debugger as 'dummy', - * which isn't very helpful. Using IMVU.createNamedFunction addresses the - * issue. Doublely-unfortunately, there's no way to write a test for this - * behavior. -NRD 2013.02.22 - */ - var dummy = createNamedFunction(constructor.name || 'unknownFunctionName', function(){}); - dummy.prototype = constructor.prototype; - var obj = new dummy; - - var r = constructor.apply(obj, argumentList); - return (r instanceof Object) ? r : obj; - } - - function createJsInvoker(humanName, argTypes, isClassMethodFunc, returns, isAsync) { - var needsDestructorStack = usesDestructorStack(argTypes); - var argCount = argTypes.length; - var argsList = ""; - var argsListWired = ""; - for (var i = 0; i < argCount - 2; ++i) { - argsList += (i!==0?", ":"")+"arg"+i; - argsListWired += (i!==0?", ":"")+"arg"+i+"Wired"; - } - - var invokerFnBody = ` - return function (${argsList}) { - if (arguments.length !== ${argCount - 2}) { - throwBindingError('function ${humanName} called with ' + arguments.length + ' arguments, expected ${argCount - 2}'); - }`; - - if (needsDestructorStack) { - invokerFnBody += "var destructors = [];\n"; - } - - var dtorStack = needsDestructorStack ? "destructors" : "null"; - var args1 = ["throwBindingError", "invoker", "fn", "runDestructors", "retType", "classParam"]; - - if (isClassMethodFunc) { - invokerFnBody += "var thisWired = classParam['toWireType']("+dtorStack+", this);\n"; - } - - for (var i = 0; i < argCount - 2; ++i) { - invokerFnBody += "var arg"+i+"Wired = argType"+i+"['toWireType']("+dtorStack+", arg"+i+"); // "+argTypes[i+2].name+"\n"; - args1.push("argType"+i); - } - - if (isClassMethodFunc) { - argsListWired = "thisWired" + (argsListWired.length > 0 ? ", " : "") + argsListWired; - } - - invokerFnBody += - (returns || isAsync ? "var rv = ":"") + "invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n"; - - if (needsDestructorStack) { - invokerFnBody += "runDestructors(destructors);\n"; - } else { - for (var i = isClassMethodFunc?1:2; i < argTypes.length; ++i) { // Skip return value at index 0 - it's not deleted here. Also skip class type if not a method. - var paramName = (i === 1 ? "thisWired" : ("arg"+(i - 2)+"Wired")); - if (argTypes[i].destructorFunction !== null) { - invokerFnBody += paramName+"_dtor("+paramName+"); // "+argTypes[i].name+"\n"; - args1.push(paramName+"_dtor"); - } - } - } - - if (returns) { - invokerFnBody += "var ret = retType['fromWireType'](rv);\n" + - "return ret;\n"; - } else { - } - - invokerFnBody += "}\n"; - - invokerFnBody = `if (arguments.length !== ${args1.length}){ throw new Error("${humanName} Expected ${args1.length} closure arguments " + arguments.length + " given."); }\n${invokerFnBody}`; - return [args1, invokerFnBody]; - } - function craftInvokerFunction(humanName, argTypes, classType, cppInvokerFunc, cppTargetFunc, /** boolean= */ isAsync) { - // humanName: a human-readable string name for the function to be generated. - // argTypes: An array that contains the embind type objects for all types in the function signature. - // argTypes[0] is the type object for the function return value. - // argTypes[1] is the type object for function this object/class type, or null if not crafting an invoker for a class method. - // argTypes[2...] are the actual function parameters. - // classType: The embind type object for the class to be bound, or null if this is not a method of a class. - // cppInvokerFunc: JS Function object to the C++-side function that interops into C++ code. - // cppTargetFunc: Function pointer (an integer to FUNCTION_TABLE) to the target C++ function the cppInvokerFunc will end up calling. - // isAsync: Optional. If true, returns an async function. Async bindings are only supported with JSPI. - var argCount = argTypes.length; - - if (argCount < 2) { - throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!"); - } - - assert(!isAsync, 'Async bindings are only supported with JSPI.'); - - var isClassMethodFunc = (argTypes[1] !== null && classType !== null); - - // Free functions with signature "void function()" do not need an invoker that marshalls between wire types. - // TODO: This omits argument count check - enable only at -O3 or similar. - // if (ENABLE_UNSAFE_OPTS && argCount == 2 && argTypes[0].name == "void" && !isClassMethodFunc) { - // return FUNCTION_TABLE[fn]; - // } - - // Determine if we need to use a dynamic stack to store the destructors for the function parameters. - // TODO: Remove this completely once all function invokers are being dynamically generated. - var needsDestructorStack = usesDestructorStack(argTypes); - - var returns = (argTypes[0].name !== "void"); - - // Builld the arguments that will be passed into the closure around the invoker - // function. - var closureArgs = [throwBindingError, cppInvokerFunc, cppTargetFunc, runDestructors, argTypes[0], argTypes[1]]; - for (var i = 0; i < argCount - 2; ++i) { - closureArgs.push(argTypes[i+2]); - } - if (!needsDestructorStack) { - for (var i = isClassMethodFunc?1:2; i < argTypes.length; ++i) { // Skip return value at index 0 - it's not deleted here. Also skip class type if not a method. - if (argTypes[i].destructorFunction !== null) { - closureArgs.push(argTypes[i].destructorFunction); - } - } - } - - let [args, invokerFnBody] = createJsInvoker(humanName, argTypes, isClassMethodFunc, returns, isAsync); - args.push(invokerFnBody); - var invokerFn = newFunc(Function, args).apply(null, closureArgs); - return createNamedFunction(humanName, invokerFn); - } - - var ensureOverloadTable = (proto, methodName, humanName) => { - if (undefined === proto[methodName].overloadTable) { - var prevFunc = proto[methodName]; - // Inject an overload resolver function that routes to the appropriate overload based on the number of arguments. - proto[methodName] = function() { - // TODO This check can be removed in -O3 level "unsafe" optimizations. - if (!proto[methodName].overloadTable.hasOwnProperty(arguments.length)) { - throwBindingError(`Function '${humanName}' called with an invalid number of arguments (${arguments.length}) - expects one of (${proto[methodName].overloadTable})!`); - } - return proto[methodName].overloadTable[arguments.length].apply(this, arguments); - }; - // Move the previous function into the overload table. - proto[methodName].overloadTable = []; - proto[methodName].overloadTable[prevFunc.argCount] = prevFunc; - } - }; - - /** @param {number=} numArguments */ - var exposePublicSymbol = (name, value, numArguments) => { - if (Module.hasOwnProperty(name)) { - if (undefined === numArguments || (undefined !== Module[name].overloadTable && undefined !== Module[name].overloadTable[numArguments])) { - throwBindingError(`Cannot register public name '${name}' twice`); - } - - // We are exposing a function with the same name as an existing function. Create an overload table and a function selector - // that routes between the two. - ensureOverloadTable(Module, name, name); - if (Module.hasOwnProperty(numArguments)) { - throwBindingError(`Cannot register multiple overloads of a function with the same number of arguments (${numArguments})!`); - } - // Add the new function into the overload table. - Module[name].overloadTable[numArguments] = value; - } - else { - Module[name] = value; - if (undefined !== numArguments) { - Module[name].numArguments = numArguments; - } - } - }; - - var heap32VectorToArray = (count, firstElement) => { - var array = []; - for (var i = 0; i < count; i++) { - // TODO(https://github.com/emscripten-core/emscripten/issues/17310): - // Find a way to hoist the `>> 2` or `>> 3` out of this loop. - array.push(HEAPU32[(((firstElement)+(i * 4))>>2)]); - } - return array; - }; - - - /** @param {number=} numArguments */ - var replacePublicSymbol = (name, value, numArguments) => { - if (!Module.hasOwnProperty(name)) { - throwInternalError('Replacing nonexistant public symbol'); - } - // If there's an overload table for this symbol, replace the symbol in the overload table instead. - if (undefined !== Module[name].overloadTable && undefined !== numArguments) { - Module[name].overloadTable[numArguments] = value; - } - else { - Module[name] = value; - Module[name].argCount = numArguments; - } - }; - - - - var dynCallLegacy = (sig, ptr, args) => { - assert(('dynCall_' + sig) in Module, `bad function pointer type - dynCall function not found for sig '${sig}'`); - if (args?.length) { - // j (64-bit integer) must be passed in as two numbers [low 32, high 32]. - assert(args.length === sig.substring(1).replace(/j/g, '--').length); - } else { - assert(sig.length == 1); - } - var f = Module['dynCall_' + sig]; - return args && args.length ? f.apply(null, [ptr].concat(args)) : f.call(null, ptr); - }; - - var wasmTableMirror = []; - - var wasmTable; - var getWasmTableEntry = (funcPtr) => { - var func = wasmTableMirror[funcPtr]; - if (!func) { - if (funcPtr >= wasmTableMirror.length) wasmTableMirror.length = funcPtr + 1; - wasmTableMirror[funcPtr] = func = wasmTable.get(funcPtr); - } - assert(wasmTable.get(funcPtr) == func, "JavaScript-side Wasm function table mirror is out of date!"); - return func; - }; - - /** @param {Object=} args */ - var dynCall = (sig, ptr, args) => { - // Without WASM_BIGINT support we cannot directly call function with i64 as - // part of thier signature, so we rely the dynCall functions generated by - // wasm-emscripten-finalize - if (sig.includes('j')) { - return dynCallLegacy(sig, ptr, args); - } - assert(getWasmTableEntry(ptr), `missing table entry in dynCall: ${ptr}`); - var rtn = getWasmTableEntry(ptr).apply(null, args); - return rtn; - }; - var getDynCaller = (sig, ptr) => { - assert(sig.includes('j') || sig.includes('p'), 'getDynCaller should only be called with i64 sigs') - var argCache = []; - return function() { - argCache.length = 0; - Object.assign(argCache, arguments); - return dynCall(sig, ptr, argCache); - }; - }; - - - var embind__requireFunction = (signature, rawFunction) => { - signature = readLatin1String(signature); - - function makeDynCaller() { - if (signature.includes('j')) { - return getDynCaller(signature, rawFunction); - } - return getWasmTableEntry(rawFunction); - } - - var fp = makeDynCaller(); - if (typeof fp != "function") { - throwBindingError(`unknown function pointer with signature ${signature}: ${rawFunction}`); - } - return fp; - }; - - - - var extendError = (baseErrorType, errorName) => { - var errorClass = createNamedFunction(errorName, function(message) { - this.name = errorName; - this.message = message; - - var stack = (new Error(message)).stack; - if (stack !== undefined) { - this.stack = this.toString() + '\n' + - stack.replace(/^Error(:[^\n]*)?\n/, ''); - } - }); - errorClass.prototype = Object.create(baseErrorType.prototype); - errorClass.prototype.constructor = errorClass; - errorClass.prototype.toString = function() { - if (this.message === undefined) { - return this.name; - } else { - return `${this.name}: ${this.message}`; - } - }; - - return errorClass; - }; - var UnboundTypeError; - - - - var getTypeName = (type) => { - var ptr = ___getTypeName(type); - var rv = readLatin1String(ptr); - _free(ptr); - return rv; - }; - var throwUnboundTypeError = (message, types) => { - var unboundTypes = []; - var seen = {}; - function visit(type) { - if (seen[type]) { - return; - } - if (registeredTypes[type]) { - return; - } - if (typeDependencies[type]) { - typeDependencies[type].forEach(visit); - return; - } - unboundTypes.push(type); - seen[type] = true; - } - types.forEach(visit); - - throw new UnboundTypeError(`${message}: ` + unboundTypes.map(getTypeName).join([', '])); - }; - - - var getFunctionName = (signature) => { - signature = signature.trim(); - const argsIndex = signature.indexOf("("); - if (argsIndex !== -1) { - assert(signature[signature.length - 1] == ")", "Parentheses for argument names should match."); - return signature.substr(0, argsIndex); - } else { - return signature; - } - }; - var __embind_register_function = (name, argCount, rawArgTypesAddr, signature, rawInvoker, fn, isAsync) => { - var argTypes = heap32VectorToArray(argCount, rawArgTypesAddr); - name = readLatin1String(name); - name = getFunctionName(name); - - rawInvoker = embind__requireFunction(signature, rawInvoker); - - exposePublicSymbol(name, function() { - throwUnboundTypeError(`Cannot call ${name} due to unbound types`, argTypes); - }, argCount - 1); - - whenDependentTypesAreResolved([], argTypes, function(argTypes) { - var invokerArgsArray = [argTypes[0] /* return value */, null /* no class 'this'*/].concat(argTypes.slice(1) /* actual params */); - replacePublicSymbol(name, craftInvokerFunction(name, invokerArgsArray, null /* no class 'this'*/, rawInvoker, fn, isAsync), argCount - 1); - return []; - }); - }; - - - var integerReadValueFromPointer = (name, width, signed) => { - // integers are quite common, so generate very specialized functions - switch (width) { - case 1: return signed ? - (pointer) => HEAP8[((pointer)>>0)] : - (pointer) => HEAPU8[((pointer)>>0)]; - case 2: return signed ? - (pointer) => HEAP16[((pointer)>>1)] : - (pointer) => HEAPU16[((pointer)>>1)] - case 4: return signed ? - (pointer) => HEAP32[((pointer)>>2)] : - (pointer) => HEAPU32[((pointer)>>2)] - default: - throw new TypeError(`invalid integer width (${width}): ${name}`); - } - }; - - - /** @suppress {globalThis} */ - var __embind_register_integer = (primitiveType, name, size, minRange, maxRange) => { - name = readLatin1String(name); - // LLVM doesn't have signed and unsigned 32-bit types, so u32 literals come - // out as 'i32 -1'. Always treat those as max u32. - if (maxRange === -1) { - maxRange = 4294967295; - } - - var fromWireType = (value) => value; - - if (minRange === 0) { - var bitshift = 32 - 8*size; - fromWireType = (value) => (value << bitshift) >>> bitshift; - } - - var isUnsignedType = (name.includes('unsigned')); - var checkAssertions = (value, toTypeName) => { - if (typeof value != "number" && typeof value != "boolean") { - throw new TypeError(`Cannot convert "${embindRepr(value)}" to ${toTypeName}`); - } - if (value < minRange || value > maxRange) { - throw new TypeError(`Passing a number "${embindRepr(value)}" from JS side to C/C++ side to an argument of type "${name}", which is outside the valid range [${minRange}, ${maxRange}]!`); - } - } - var toWireType; - if (isUnsignedType) { - toWireType = function(destructors, value) { - checkAssertions(value, this.name); - return value >>> 0; - } - } else { - toWireType = function(destructors, value) { - checkAssertions(value, this.name); - // The VM will perform JS to Wasm value conversion, according to the spec: - // https://www.w3.org/TR/wasm-js-api-1/#towebassemblyvalue - return value; - } - } - registerType(primitiveType, { - name, - 'fromWireType': fromWireType, - 'toWireType': toWireType, - 'argPackAdvance': GenericWireTypeSize, - 'readValueFromPointer': integerReadValueFromPointer(name, size, minRange !== 0), - destructorFunction: null, // This type does not need a destructor - }); - }; - - - var __embind_register_memory_view = (rawType, dataTypeIndex, name) => { - var typeMapping = [ - Int8Array, - Uint8Array, - Int16Array, - Uint16Array, - Int32Array, - Uint32Array, - Float32Array, - Float64Array, - ]; - - var TA = typeMapping[dataTypeIndex]; - - function decodeMemoryView(handle) { - var size = HEAPU32[((handle)>>2)]; - var data = HEAPU32[(((handle)+(4))>>2)]; - return new TA(HEAP8.buffer, data, size); - } - - name = readLatin1String(name); - registerType(rawType, { - name, - 'fromWireType': decodeMemoryView, - 'argPackAdvance': GenericWireTypeSize, - 'readValueFromPointer': decodeMemoryView, - }, { - ignoreDuplicateRegistrations: true, - }); - }; - - - - /** @suppress {globalThis} */ - function readPointer(pointer) { - return this['fromWireType'](HEAPU32[((pointer)>>2)]); - } - - - var stringToUTF8Array = (str, heap, outIdx, maxBytesToWrite) => { - assert(typeof str === 'string', `stringToUTF8Array expects a string (got ${typeof str})`); - // Parameter maxBytesToWrite is not optional. Negative values, 0, null, - // undefined and false each don't write out any bytes. - if (!(maxBytesToWrite > 0)) - return 0; - - var startIdx = outIdx; - var endIdx = outIdx + maxBytesToWrite - 1; // -1 for string null terminator. - for (var i = 0; i < str.length; ++i) { - // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code - // unit, not a Unicode code point of the character! So decode - // UTF16->UTF32->UTF8. - // See http://unicode.org/faq/utf_bom.html#utf16-3 - // For UTF8 byte structure, see http://en.wikipedia.org/wiki/UTF-8#Description - // and https://www.ietf.org/rfc/rfc2279.txt - // and https://tools.ietf.org/html/rfc3629 - var u = str.charCodeAt(i); // possibly a lead surrogate - if (u >= 0xD800 && u <= 0xDFFF) { - var u1 = str.charCodeAt(++i); - u = 0x10000 + ((u & 0x3FF) << 10) | (u1 & 0x3FF); - } - if (u <= 0x7F) { - if (outIdx >= endIdx) break; - heap[outIdx++] = u; - } else if (u <= 0x7FF) { - if (outIdx + 1 >= endIdx) break; - heap[outIdx++] = 0xC0 | (u >> 6); - heap[outIdx++] = 0x80 | (u & 63); - } else if (u <= 0xFFFF) { - if (outIdx + 2 >= endIdx) break; - heap[outIdx++] = 0xE0 | (u >> 12); - heap[outIdx++] = 0x80 | ((u >> 6) & 63); - heap[outIdx++] = 0x80 | (u & 63); - } else { - if (outIdx + 3 >= endIdx) break; - if (u > 0x10FFFF) warnOnce('Invalid Unicode code point ' + ptrToString(u) + ' encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF).'); - heap[outIdx++] = 0xF0 | (u >> 18); - heap[outIdx++] = 0x80 | ((u >> 12) & 63); - heap[outIdx++] = 0x80 | ((u >> 6) & 63); - heap[outIdx++] = 0x80 | (u & 63); - } - } - // Null-terminate the pointer to the buffer. - heap[outIdx] = 0; - return outIdx - startIdx; - }; - var stringToUTF8 = (str, outPtr, maxBytesToWrite) => { - assert(typeof maxBytesToWrite == 'number', 'stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!'); - return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite); - }; - - var lengthBytesUTF8 = (str) => { - var len = 0; - for (var i = 0; i < str.length; ++i) { - // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code - // unit, not a Unicode code point of the character! So decode - // UTF16->UTF32->UTF8. - // See http://unicode.org/faq/utf_bom.html#utf16-3 - var c = str.charCodeAt(i); // possibly a lead surrogate - if (c <= 0x7F) { - len++; - } else if (c <= 0x7FF) { - len += 2; - } else if (c >= 0xD800 && c <= 0xDFFF) { - len += 4; ++i; - } else { - len += 3; - } - } - return len; - }; - - - - var UTF8Decoder = typeof TextDecoder != 'undefined' ? new TextDecoder('utf8') : undefined; - - /** - * Given a pointer 'idx' to a null-terminated UTF8-encoded string in the given - * array that contains uint8 values, returns a copy of that string as a - * Javascript String object. - * heapOrArray is either a regular array, or a JavaScript typed array view. - * @param {number} idx - * @param {number=} maxBytesToRead - * @return {string} - */ - var UTF8ArrayToString = (heapOrArray, idx, maxBytesToRead) => { - var endIdx = idx + maxBytesToRead; - var endPtr = idx; - // TextDecoder needs to know the byte length in advance, it doesn't stop on - // null terminator by itself. Also, use the length info to avoid running tiny - // strings through TextDecoder, since .subarray() allocates garbage. - // (As a tiny code save trick, compare endPtr against endIdx using a negation, - // so that undefined means Infinity) - while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr; - - if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) { - return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr)); - } - var str = ''; - // If building with TextDecoder, we have already computed the string length - // above, so test loop end condition against that - while (idx < endPtr) { - // For UTF8 byte structure, see: - // http://en.wikipedia.org/wiki/UTF-8#Description - // https://www.ietf.org/rfc/rfc2279.txt - // https://tools.ietf.org/html/rfc3629 - var u0 = heapOrArray[idx++]; - if (!(u0 & 0x80)) { str += String.fromCharCode(u0); continue; } - var u1 = heapOrArray[idx++] & 63; - if ((u0 & 0xE0) == 0xC0) { str += String.fromCharCode(((u0 & 31) << 6) | u1); continue; } - var u2 = heapOrArray[idx++] & 63; - if ((u0 & 0xF0) == 0xE0) { - u0 = ((u0 & 15) << 12) | (u1 << 6) | u2; - } else { - if ((u0 & 0xF8) != 0xF0) warnOnce('Invalid UTF-8 leading byte ' + ptrToString(u0) + ' encountered when deserializing a UTF-8 string in wasm memory to a JS string!'); - u0 = ((u0 & 7) << 18) | (u1 << 12) | (u2 << 6) | (heapOrArray[idx++] & 63); - } - - if (u0 < 0x10000) { - str += String.fromCharCode(u0); - } else { - var ch = u0 - 0x10000; - str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); - } - } - return str; - }; - - /** - * Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the - * emscripten HEAP, returns a copy of that string as a Javascript String object. - * - * @param {number} ptr - * @param {number=} maxBytesToRead - An optional length that specifies the - * maximum number of bytes to read. You can omit this parameter to scan the - * string until the first 0 byte. If maxBytesToRead is passed, and the string - * at [ptr, ptr+maxBytesToReadr[ contains a null byte in the middle, then the - * string will cut short at that byte index (i.e. maxBytesToRead will not - * produce a string of exact length [ptr, ptr+maxBytesToRead[) N.B. mixing - * frequent uses of UTF8ToString() with and without maxBytesToRead may throw - * JS JIT optimizations off, so it is worth to consider consistently using one - * @return {string} - */ - var UTF8ToString = (ptr, maxBytesToRead) => { - assert(typeof ptr == 'number', `UTF8ToString expects a number (got ${typeof ptr})`); - return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : ''; - }; - var __embind_register_std_string = (rawType, name) => { - name = readLatin1String(name); - var stdStringIsUTF8 - //process only std::string bindings with UTF8 support, in contrast to e.g. std::basic_string - = (name === "std::string"); - - registerType(rawType, { - name, - // For some method names we use string keys here since they are part of - // the public/external API and/or used by the runtime-generated code. - 'fromWireType'(value) { - var length = HEAPU32[((value)>>2)]; - var payload = value + 4; - - var str; - if (stdStringIsUTF8) { - var decodeStartPtr = payload; - // Looping here to support possible embedded '0' bytes - for (var i = 0; i <= length; ++i) { - var currentBytePtr = payload + i; - if (i == length || HEAPU8[currentBytePtr] == 0) { - var maxRead = currentBytePtr - decodeStartPtr; - var stringSegment = UTF8ToString(decodeStartPtr, maxRead); - if (str === undefined) { - str = stringSegment; - } else { - str += String.fromCharCode(0); - str += stringSegment; - } - decodeStartPtr = currentBytePtr + 1; - } - } - } else { - var a = new Array(length); - for (var i = 0; i < length; ++i) { - a[i] = String.fromCharCode(HEAPU8[payload + i]); - } - str = a.join(''); - } - - _free(value); - - return str; - }, - 'toWireType'(destructors, value) { - if (value instanceof ArrayBuffer) { - value = new Uint8Array(value); - } - - var length; - var valueIsOfTypeString = (typeof value == 'string'); - - if (!(valueIsOfTypeString || value instanceof Uint8Array || value instanceof Uint8ClampedArray || value instanceof Int8Array)) { - throwBindingError('Cannot pass non-string to std::string'); - } - if (stdStringIsUTF8 && valueIsOfTypeString) { - length = lengthBytesUTF8(value); - } else { - length = value.length; - } - - // assumes 4-byte alignment - var base = _malloc(4 + length + 1); - var ptr = base + 4; - HEAPU32[((base)>>2)] = length; - if (stdStringIsUTF8 && valueIsOfTypeString) { - stringToUTF8(value, ptr, length + 1); - } else { - if (valueIsOfTypeString) { - for (var i = 0; i < length; ++i) { - var charCode = value.charCodeAt(i); - if (charCode > 255) { - _free(ptr); - throwBindingError('String has UTF-16 code units that do not fit in 8 bits'); - } - HEAPU8[ptr + i] = charCode; - } - } else { - for (var i = 0; i < length; ++i) { - HEAPU8[ptr + i] = value[i]; - } - } - } - - if (destructors !== null) { - destructors.push(_free, base); - } - return base; - }, - 'argPackAdvance': GenericWireTypeSize, - 'readValueFromPointer': readPointer, - destructorFunction(ptr) { - _free(ptr); - }, - }); - }; - - - - - var UTF16Decoder = typeof TextDecoder != 'undefined' ? new TextDecoder('utf-16le') : undefined;; - var UTF16ToString = (ptr, maxBytesToRead) => { - assert(ptr % 2 == 0, 'Pointer passed to UTF16ToString must be aligned to two bytes!'); - var endPtr = ptr; - // TextDecoder needs to know the byte length in advance, it doesn't stop on - // null terminator by itself. - // Also, use the length info to avoid running tiny strings through - // TextDecoder, since .subarray() allocates garbage. - var idx = endPtr >> 1; - var maxIdx = idx + maxBytesToRead / 2; - // If maxBytesToRead is not passed explicitly, it will be undefined, and this - // will always evaluate to true. This saves on code size. - while (!(idx >= maxIdx) && HEAPU16[idx]) ++idx; - endPtr = idx << 1; - - if (endPtr - ptr > 32 && UTF16Decoder) - return UTF16Decoder.decode(HEAPU8.subarray(ptr, endPtr)); - - // Fallback: decode without UTF16Decoder - var str = ''; - - // If maxBytesToRead is not passed explicitly, it will be undefined, and the - // for-loop's condition will always evaluate to true. The loop is then - // terminated on the first null char. - for (var i = 0; !(i >= maxBytesToRead / 2); ++i) { - var codeUnit = HEAP16[(((ptr)+(i*2))>>1)]; - if (codeUnit == 0) break; - // fromCharCode constructs a character from a UTF-16 code unit, so we can - // pass the UTF16 string right through. - str += String.fromCharCode(codeUnit); - } - - return str; - }; - - var stringToUTF16 = (str, outPtr, maxBytesToWrite) => { - assert(outPtr % 2 == 0, 'Pointer passed to stringToUTF16 must be aligned to two bytes!'); - assert(typeof maxBytesToWrite == 'number', 'stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!'); - // Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed. - maxBytesToWrite ??= 0x7FFFFFFF; - if (maxBytesToWrite < 2) return 0; - maxBytesToWrite -= 2; // Null terminator. - var startPtr = outPtr; - var numCharsToWrite = (maxBytesToWrite < str.length*2) ? (maxBytesToWrite / 2) : str.length; - for (var i = 0; i < numCharsToWrite; ++i) { - // charCodeAt returns a UTF-16 encoded code unit, so it can be directly written to the HEAP. - var codeUnit = str.charCodeAt(i); // possibly a lead surrogate - HEAP16[((outPtr)>>1)] = codeUnit; - outPtr += 2; - } - // Null-terminate the pointer to the HEAP. - HEAP16[((outPtr)>>1)] = 0; - return outPtr - startPtr; - }; - - var lengthBytesUTF16 = (str) => { - return str.length*2; - }; - - var UTF32ToString = (ptr, maxBytesToRead) => { - assert(ptr % 4 == 0, 'Pointer passed to UTF32ToString must be aligned to four bytes!'); - var i = 0; - - var str = ''; - // If maxBytesToRead is not passed explicitly, it will be undefined, and this - // will always evaluate to true. This saves on code size. - while (!(i >= maxBytesToRead / 4)) { - var utf32 = HEAP32[(((ptr)+(i*4))>>2)]; - if (utf32 == 0) break; - ++i; - // Gotcha: fromCharCode constructs a character from a UTF-16 encoded code (pair), not from a Unicode code point! So encode the code point to UTF-16 for constructing. - // See http://unicode.org/faq/utf_bom.html#utf16-3 - if (utf32 >= 0x10000) { - var ch = utf32 - 0x10000; - str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); - } else { - str += String.fromCharCode(utf32); - } - } - return str; - }; - - var stringToUTF32 = (str, outPtr, maxBytesToWrite) => { - assert(outPtr % 4 == 0, 'Pointer passed to stringToUTF32 must be aligned to four bytes!'); - assert(typeof maxBytesToWrite == 'number', 'stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!'); - // Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed. - maxBytesToWrite ??= 0x7FFFFFFF; - if (maxBytesToWrite < 4) return 0; - var startPtr = outPtr; - var endPtr = startPtr + maxBytesToWrite - 4; - for (var i = 0; i < str.length; ++i) { - // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap. - // See http://unicode.org/faq/utf_bom.html#utf16-3 - var codeUnit = str.charCodeAt(i); // possibly a lead surrogate - if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) { - var trailSurrogate = str.charCodeAt(++i); - codeUnit = 0x10000 + ((codeUnit & 0x3FF) << 10) | (trailSurrogate & 0x3FF); - } - HEAP32[((outPtr)>>2)] = codeUnit; - outPtr += 4; - if (outPtr + 4 > endPtr) break; - } - // Null-terminate the pointer to the HEAP. - HEAP32[((outPtr)>>2)] = 0; - return outPtr - startPtr; - }; - - var lengthBytesUTF32 = (str) => { - var len = 0; - for (var i = 0; i < str.length; ++i) { - // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap. - // See http://unicode.org/faq/utf_bom.html#utf16-3 - var codeUnit = str.charCodeAt(i); - if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) ++i; // possibly a lead surrogate, so skip over the tail surrogate. - len += 4; - } - - return len; - }; - var __embind_register_std_wstring = (rawType, charSize, name) => { - name = readLatin1String(name); - var decodeString, encodeString, getHeap, lengthBytesUTF, shift; - if (charSize === 2) { - decodeString = UTF16ToString; - encodeString = stringToUTF16; - lengthBytesUTF = lengthBytesUTF16; - getHeap = () => HEAPU16; - shift = 1; - } else if (charSize === 4) { - decodeString = UTF32ToString; - encodeString = stringToUTF32; - lengthBytesUTF = lengthBytesUTF32; - getHeap = () => HEAPU32; - shift = 2; - } - registerType(rawType, { - name, - 'fromWireType': (value) => { - // Code mostly taken from _embind_register_std_string fromWireType - var length = HEAPU32[((value)>>2)]; - var HEAP = getHeap(); - var str; - - var decodeStartPtr = value + 4; - // Looping here to support possible embedded '0' bytes - for (var i = 0; i <= length; ++i) { - var currentBytePtr = value + 4 + i * charSize; - if (i == length || HEAP[currentBytePtr >> shift] == 0) { - var maxReadBytes = currentBytePtr - decodeStartPtr; - var stringSegment = decodeString(decodeStartPtr, maxReadBytes); - if (str === undefined) { - str = stringSegment; - } else { - str += String.fromCharCode(0); - str += stringSegment; - } - decodeStartPtr = currentBytePtr + charSize; - } - } - - _free(value); - - return str; - }, - 'toWireType': (destructors, value) => { - if (!(typeof value == 'string')) { - throwBindingError(`Cannot pass non-string to C++ string type ${name}`); - } - - // assumes 4-byte alignment - var length = lengthBytesUTF(value); - var ptr = _malloc(4 + length + charSize); - HEAPU32[ptr >> 2] = length >> shift; - - encodeString(value, ptr + 4, length + charSize); - - if (destructors !== null) { - destructors.push(_free, ptr); - } - return ptr; - }, - 'argPackAdvance': GenericWireTypeSize, - 'readValueFromPointer': simpleReadValueFromPointer, - destructorFunction(ptr) { - _free(ptr); - } - }); - }; - - - var __embind_register_void = (rawType, name) => { - name = readLatin1String(name); - registerType(rawType, { - isVoid: true, // void return values can be optimized out sometimes - name, - 'argPackAdvance': 0, - 'fromWireType': () => undefined, - // TODO: assert if anything else is given? - 'toWireType': (destructors, o) => undefined, - }); - }; - - var emval_methodCallers = []; - - var __emval_call = (caller, handle, destructorsRef, args) => { - caller = emval_methodCallers[caller]; - handle = Emval.toValue(handle); - return caller(null, handle, destructorsRef, args); - }; - - - - var emval_symbols = { - }; - - var getStringOrSymbol = (address) => { - var symbol = emval_symbols[address]; - if (symbol === undefined) { - return readLatin1String(address); - } - return symbol; - }; - - var emval_get_global = () => { - if (typeof globalThis == 'object') { - return globalThis; - } - return (function(){ - return Function; - })()('return this')(); - }; - var __emval_get_global = (name) => { - if (name===0) { - return Emval.toHandle(emval_get_global()); - } else { - name = getStringOrSymbol(name); - return Emval.toHandle(emval_get_global()[name]); - } - }; - - var emval_addMethodCaller = (caller) => { - var id = emval_methodCallers.length; - emval_methodCallers.push(caller); - return id; - }; - - - - var requireRegisteredType = (rawType, humanName) => { - var impl = registeredTypes[rawType]; - if (undefined === impl) { - throwBindingError(humanName + " has unknown type " + getTypeName(rawType)); - } - return impl; - }; - var emval_lookupTypes = (argCount, argTypes) => { - var a = new Array(argCount); - for (var i = 0; i < argCount; ++i) { - a[i] = requireRegisteredType(HEAPU32[(((argTypes)+(i * 4))>>2)], - "parameter " + i); - } - return a; - }; - - - var reflectConstruct = Reflect.construct; - - var emval_returnValue = (returnType, destructorsRef, handle) => { - var destructors = []; - var result = returnType['toWireType'](destructors, handle); - if (destructors.length) { - // void, primitives and any other types w/o destructors don't need to allocate a handle - HEAPU32[((destructorsRef)>>2)] = Emval.toHandle(destructors); - } - return result; - }; - - var __emval_get_method_caller = (argCount, argTypes, kind) => { - var types = emval_lookupTypes(argCount, argTypes); - var retType = types.shift(); - argCount--; // remove the shifted off return type - - var functionBody = - `return function (obj, func, destructorsRef, args) {\n`; - - var offset = 0; - var argsList = []; // 'obj?, arg0, arg1, arg2, ... , argN' - if (kind === /* FUNCTION */ 0) { - argsList.push("obj"); - } - var params = ["retType"]; - var args = [retType]; - for (var i = 0; i < argCount; ++i) { - argsList.push("arg" + i); - params.push("argType" + i); - args.push(types[i]); - functionBody += - ` var arg${i} = argType${i}.readValueFromPointer(args${offset ? "+" + offset : ""});\n`; - offset += types[i]['argPackAdvance']; - } - var invoker = kind === /* CONSTRUCTOR */ 1 ? 'new func' : 'func.call'; - functionBody += - ` var rv = ${invoker}(${argsList.join(", ")});\n`; - for (var i = 0; i < argCount; ++i) { - if (types[i]['deleteObject']) { - functionBody += - ` argType${i}.deleteObject(arg${i});\n`; - } - } - if (!retType.isVoid) { - params.push("emval_returnValue"); - args.push(emval_returnValue); - functionBody += - " return emval_returnValue(retType, destructorsRef, rv);\n"; - } - functionBody += - "};\n"; - - params.push(functionBody); - var invokerFunction = newFunc(Function, params).apply(null, args); - var functionName = `methodCaller<(${types.map(t => t.name).join(', ')}) => ${retType.name}>`; - return emval_addMethodCaller(createNamedFunction(functionName, invokerFunction)); - }; - - var __emval_incref = (handle) => { - if (handle > 4) { - emval_handles.get(handle).refcount += 1; - } - }; - - - - var __emval_run_destructors = (handle) => { - var destructors = Emval.toValue(handle); - runDestructors(destructors); - __emval_decref(handle); - }; - - var _abort = () => { - abort('native code called abort()'); - }; - - var _emscripten_memcpy_js = (dest, src, num) => HEAPU8.copyWithin(dest, src, src + num); - - var getHeapMax = () => - HEAPU8.length; - - var abortOnCannotGrowMemory = (requestedSize) => { - abort(`Cannot enlarge memory arrays to size ${requestedSize} bytes (OOM). Either (1) compile with -sINITIAL_MEMORY=X with X higher than the current value ${HEAP8.length}, (2) compile with -sALLOW_MEMORY_GROWTH which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -sABORTING_MALLOC=0`); - }; - var _emscripten_resize_heap = (requestedSize) => { - var oldSize = HEAPU8.length; - // With CAN_ADDRESS_2GB or MEMORY64, pointers are already unsigned. - requestedSize >>>= 0; - abortOnCannotGrowMemory(requestedSize); - }; - - var SYSCALLS = { - varargs:undefined, - get() { - assert(SYSCALLS.varargs != undefined); - // the `+` prepended here is necessary to convince the JSCompiler that varargs is indeed a number. - var ret = HEAP32[((+SYSCALLS.varargs)>>2)]; - SYSCALLS.varargs += 4; - return ret; - }, - getp() { return SYSCALLS.get() }, - getStr(ptr) { - var ret = UTF8ToString(ptr); - return ret; - }, - }; - var _fd_close = (fd) => { - abort('fd_close called without SYSCALLS_REQUIRE_FILESYSTEM'); - }; - - - var convertI32PairToI53Checked = (lo, hi) => { - assert(lo == (lo >>> 0) || lo == (lo|0)); // lo should either be a i32 or a u32 - assert(hi === (hi|0)); // hi should be a i32 - return ((hi + 0x200000) >>> 0 < 0x400001 - !!lo) ? (lo >>> 0) + hi * 4294967296 : NaN; - }; - function _fd_seek(fd,offset_low, offset_high,whence,newOffset) { - var offset = convertI32PairToI53Checked(offset_low, offset_high);; - - - return 70; - ; - } - - var printCharBuffers = [null,[],[]]; - - var printChar = (stream, curr) => { - var buffer = printCharBuffers[stream]; - assert(buffer); - if (curr === 0 || curr === 10) { - (stream === 1 ? out : err)(UTF8ArrayToString(buffer, 0)); - buffer.length = 0; - } else { - buffer.push(curr); - } - }; - - var flush_NO_FILESYSTEM = () => { - // flush anything remaining in the buffers during shutdown - _fflush(0); - if (printCharBuffers[1].length) printChar(1, 10); - if (printCharBuffers[2].length) printChar(2, 10); - }; - - - var _fd_write = (fd, iov, iovcnt, pnum) => { - // hack to support printf in SYSCALLS_REQUIRE_FILESYSTEM=0 - var num = 0; - for (var i = 0; i < iovcnt; i++) { - var ptr = HEAPU32[((iov)>>2)]; - var len = HEAPU32[(((iov)+(4))>>2)]; - iov += 8; - for (var j = 0; j < len; j++) { - printChar(fd, HEAPU8[ptr+j]); - } - num += len; - } - HEAPU32[((pnum)>>2)] = num; - return 0; - }; -embind_init_charCodes(); -BindingError = Module['BindingError'] = class BindingError extends Error { constructor(message) { super(message); this.name = 'BindingError'; }}; -InternalError = Module['InternalError'] = class InternalError extends Error { constructor(message) { super(message); this.name = 'InternalError'; }}; -handleAllocatorInit(); -init_emval();; -UnboundTypeError = Module['UnboundTypeError'] = extendError(Error, 'UnboundTypeError');; -function checkIncomingModuleAPI() { - ignoredModuleProp('fetchSettings'); -} -var wasmImports = { - /** @export */ - _embind_register_bigint: __embind_register_bigint, - /** @export */ - _embind_register_bool: __embind_register_bool, - /** @export */ - _embind_register_emval: __embind_register_emval, - /** @export */ - _embind_register_float: __embind_register_float, - /** @export */ - _embind_register_function: __embind_register_function, - /** @export */ - _embind_register_integer: __embind_register_integer, - /** @export */ - _embind_register_memory_view: __embind_register_memory_view, - /** @export */ - _embind_register_std_string: __embind_register_std_string, - /** @export */ - _embind_register_std_wstring: __embind_register_std_wstring, - /** @export */ - _embind_register_void: __embind_register_void, - /** @export */ - _emval_call: __emval_call, - /** @export */ - _emval_decref: __emval_decref, - /** @export */ - _emval_get_global: __emval_get_global, - /** @export */ - _emval_get_method_caller: __emval_get_method_caller, - /** @export */ - _emval_incref: __emval_incref, - /** @export */ - _emval_run_destructors: __emval_run_destructors, - /** @export */ - abort: _abort, - /** @export */ - emscripten_memcpy_js: _emscripten_memcpy_js, - /** @export */ - emscripten_resize_heap: _emscripten_resize_heap, - /** @export */ - fd_close: _fd_close, - /** @export */ - fd_seek: _fd_seek, - /** @export */ - fd_write: _fd_write -}; -var wasmExports = createWasm(); -var ___wasm_call_ctors = createExportWrapper('__wasm_call_ctors'); -var _malloc = createExportWrapper('malloc'); -var _free = createExportWrapper('free'); -var ___getTypeName = createExportWrapper('__getTypeName'); -var ___errno_location = createExportWrapper('__errno_location'); -var _fflush = Module['_fflush'] = createExportWrapper('fflush'); -var _emscripten_stack_init = () => (_emscripten_stack_init = wasmExports['emscripten_stack_init'])(); -var _emscripten_stack_get_free = () => (_emscripten_stack_get_free = wasmExports['emscripten_stack_get_free'])(); -var _emscripten_stack_get_base = () => (_emscripten_stack_get_base = wasmExports['emscripten_stack_get_base'])(); -var _emscripten_stack_get_end = () => (_emscripten_stack_get_end = wasmExports['emscripten_stack_get_end'])(); -var stackSave = createExportWrapper('stackSave'); -var stackRestore = createExportWrapper('stackRestore'); -var stackAlloc = createExportWrapper('stackAlloc'); -var _emscripten_stack_get_current = () => (_emscripten_stack_get_current = wasmExports['emscripten_stack_get_current'])(); -var ___cxa_is_pointer_type = createExportWrapper('__cxa_is_pointer_type'); -var dynCall_jiiii = Module['dynCall_jiiii'] = createExportWrapper('dynCall_jiiii'); -var dynCall_jiji = Module['dynCall_jiji'] = createExportWrapper('dynCall_jiji'); - - -// include: postamble.js -// === Auto-generated postamble setup entry stuff === - -var missingLibrarySymbols = [ - 'writeI53ToI64', - 'writeI53ToI64Clamped', - 'writeI53ToI64Signaling', - 'writeI53ToU64Clamped', - 'writeI53ToU64Signaling', - 'readI53FromI64', - 'readI53FromU64', - 'convertI32PairToI53', - 'convertU32PairToI53', - 'zeroMemory', - 'exitJS', - 'growMemory', - 'isLeapYear', - 'ydayFromDate', - 'arraySum', - 'addDays', - 'setErrNo', - 'inetPton4', - 'inetNtop4', - 'inetPton6', - 'inetNtop6', - 'readSockaddr', - 'writeSockaddr', - 'getHostByName', - 'initRandomFill', - 'randomFill', - 'getCallstack', - 'emscriptenLog', - 'convertPCtoSourceLocation', - 'readEmAsmArgs', - 'jstoi_q', - 'jstoi_s', - 'getExecutableName', - 'listenOnce', - 'autoResumeAudioContext', - 'handleException', - 'keepRuntimeAlive', - 'runtimeKeepalivePush', - 'runtimeKeepalivePop', - 'callUserCallback', - 'maybeExit', - 'asmjsMangle', - 'asyncLoad', - 'alignMemory', - 'mmapAlloc', - 'getNativeTypeSize', - 'STACK_SIZE', - 'STACK_ALIGN', - 'POINTER_SIZE', - 'ASSERTIONS', - 'getCFunc', - 'ccall', - 'cwrap', - 'uleb128Encode', - 'sigToWasmTypes', - 'generateFuncType', - 'convertJsFunctionToWasm', - 'getEmptyTableSlot', - 'updateTableMap', - 'getFunctionAddress', - 'addFunction', - 'removeFunction', - 'reallyNegative', - 'unSign', - 'strLen', - 'reSign', - 'formatString', - 'intArrayFromString', - 'intArrayToString', - 'AsciiToString', - 'stringToAscii', - 'stringToNewUTF8', - 'stringToUTF8OnStack', - 'writeArrayToMemory', - 'registerKeyEventCallback', - 'maybeCStringToJsString', - 'findEventTarget', - 'findCanvasEventTarget', - 'getBoundingClientRect', - 'fillMouseEventData', - 'registerMouseEventCallback', - 'registerWheelEventCallback', - 'registerUiEventCallback', - 'registerFocusEventCallback', - 'fillDeviceOrientationEventData', - 'registerDeviceOrientationEventCallback', - 'fillDeviceMotionEventData', - 'registerDeviceMotionEventCallback', - 'screenOrientation', - 'fillOrientationChangeEventData', - 'registerOrientationChangeEventCallback', - 'fillFullscreenChangeEventData', - 'registerFullscreenChangeEventCallback', - 'JSEvents_requestFullscreen', - 'JSEvents_resizeCanvasForFullscreen', - 'registerRestoreOldStyle', - 'hideEverythingExceptGivenElement', - 'restoreHiddenElements', - 'setLetterbox', - 'softFullscreenResizeWebGLRenderTarget', - 'doRequestFullscreen', - 'fillPointerlockChangeEventData', - 'registerPointerlockChangeEventCallback', - 'registerPointerlockErrorEventCallback', - 'requestPointerLock', - 'fillVisibilityChangeEventData', - 'registerVisibilityChangeEventCallback', - 'registerTouchEventCallback', - 'fillGamepadEventData', - 'registerGamepadEventCallback', - 'disableGamepadApiIfItThrows', - 'registerBeforeUnloadEventCallback', - 'fillBatteryEventData', - 'battery', - 'registerBatteryEventCallback', - 'setCanvasElementSize', - 'getCanvasElementSize', - 'demangle', - 'demangleAll', - 'jsStackTrace', - 'stackTrace', - 'getEnvStrings', - 'checkWasiClock', - 'wasiRightsToMuslOFlags', - 'wasiOFlagsToMuslOFlags', - 'createDyncallWrapper', - 'safeSetTimeout', - 'setImmediateWrapped', - 'clearImmediateWrapped', - 'polyfillSetImmediate', - 'getPromise', - 'makePromise', - 'idsToPromises', - 'makePromiseCallback', - 'ExceptionInfo', - 'findMatchingCatch', - 'Browser_asyncPrepareDataCounter', - 'setMainLoop', - 'getSocketFromFD', - 'getSocketAddress', - 'FS_createPreloadedFile', - 'FS_modeStringToFlags', - 'FS_getMode', - 'FS_stdin_getChar', - 'FS_createDataFile', - 'FS_unlink', - 'FS_mkdirTree', - '_setNetworkCallback', - 'heapObjectForWebGLType', - 'heapAccessShiftForWebGLHeap', - 'webgl_enable_ANGLE_instanced_arrays', - 'webgl_enable_OES_vertex_array_object', - 'webgl_enable_WEBGL_draw_buffers', - 'webgl_enable_WEBGL_multi_draw', - 'emscriptenWebGLGet', - 'computeUnpackAlignedImageSize', - 'colorChannelsInGlTextureFormat', - 'emscriptenWebGLGetTexPixelData', - '__glGenObject', - 'emscriptenWebGLGetUniform', - 'webglGetUniformLocation', - 'webglPrepareUniformLocationsBeforeFirstUse', - 'webglGetLeftBracePos', - 'emscriptenWebGLGetVertexAttrib', - '__glGetActiveAttribOrUniform', - 'writeGLArray', - 'registerWebGlEventCallback', - 'runAndAbortIfError', - 'SDL_unicode', - 'SDL_ttfContext', - 'SDL_audio', - 'ALLOC_NORMAL', - 'ALLOC_STACK', - 'allocate', - 'writeStringToMemory', - 'writeAsciiToMemory', - 'getFunctionArgsName', - 'init_embind', - 'getBasestPointer', - 'registerInheritedInstance', - 'unregisterInheritedInstance', - 'getInheritedInstance', - 'getInheritedInstanceCount', - 'getLiveInheritedInstances', - 'enumReadValueFromPointer', - 'genericPointerToWireType', - 'constNoSmartPtrRawPointerToWireType', - 'nonConstNoSmartPtrRawPointerToWireType', - 'init_RegisteredPointer', - 'RegisteredPointer', - 'RegisteredPointer_fromWireType', - 'runDestructor', - 'releaseClassHandle', - 'detachFinalizer', - 'attachFinalizer', - 'makeClassHandle', - 'init_ClassHandle', - 'ClassHandle', - 'throwInstanceAlreadyDeleted', - 'flushPendingDeletes', - 'setDelayFunction', - 'RegisteredClass', - 'shallowCopyInternalPointer', - 'downcastPointer', - 'upcastPointer', - 'validateThis', - 'char_0', - 'char_9', - 'makeLegalFunctionName', -]; -missingLibrarySymbols.forEach(missingLibrarySymbol) - -var unexportedSymbols = [ - 'run', - 'addOnPreRun', - 'addOnInit', - 'addOnPreMain', - 'addOnExit', - 'addOnPostRun', - 'addRunDependency', - 'removeRunDependency', - 'FS_createFolder', - 'FS_createPath', - 'FS_createLazyFile', - 'FS_createLink', - 'FS_createDevice', - 'FS_readFile', - 'out', - 'err', - 'callMain', - 'abort', - 'wasmMemory', - 'wasmExports', - 'stackAlloc', - 'stackSave', - 'stackRestore', - 'getTempRet0', - 'setTempRet0', - 'writeStackCookie', - 'checkStackCookie', - 'convertI32PairToI53Checked', - 'ptrToString', - 'getHeapMax', - 'abortOnCannotGrowMemory', - 'ENV', - 'MONTH_DAYS_REGULAR', - 'MONTH_DAYS_LEAP', - 'MONTH_DAYS_REGULAR_CUMULATIVE', - 'MONTH_DAYS_LEAP_CUMULATIVE', - 'ERRNO_CODES', - 'ERRNO_MESSAGES', - 'DNS', - 'Protocols', - 'Sockets', - 'timers', - 'warnOnce', - 'UNWIND_CACHE', - 'readEmAsmArgsArray', - 'dynCallLegacy', - 'getDynCaller', - 'dynCall', - 'handleAllocatorInit', - 'HandleAllocator', - 'wasmTable', - 'noExitRuntime', - 'freeTableIndexes', - 'functionsInTableMap', - 'setValue', - 'getValue', - 'PATH', - 'PATH_FS', - 'UTF8Decoder', - 'UTF8ArrayToString', - 'UTF8ToString', - 'stringToUTF8Array', - 'stringToUTF8', - 'lengthBytesUTF8', - 'UTF16Decoder', - 'UTF16ToString', - 'stringToUTF16', - 'lengthBytesUTF16', - 'UTF32ToString', - 'stringToUTF32', - 'lengthBytesUTF32', - 'JSEvents', - 'specialHTMLTargets', - 'currentFullscreenStrategy', - 'restoreOldWindowedStyle', - 'ExitStatus', - 'flush_NO_FILESYSTEM', - 'promiseMap', - 'uncaughtExceptionCount', - 'exceptionLast', - 'exceptionCaught', - 'Browser', - 'wget', - 'SYSCALLS', - 'preloadPlugins', - 'FS_stdin_getChar_buffer', - 'FS', - 'MEMFS', - 'TTY', - 'PIPEFS', - 'SOCKFS', - 'tempFixedLengthArray', - 'miniTempWebGLFloatBuffers', - 'miniTempWebGLIntBuffers', - 'GL', - 'emscripten_webgl_power_preferences', - 'AL', - 'GLUT', - 'EGL', - 'GLEW', - 'IDBStore', - 'SDL', - 'SDL_gfx', - 'allocateUTF8', - 'allocateUTF8OnStack', - 'InternalError', - 'BindingError', - 'throwInternalError', - 'throwBindingError', - 'registeredTypes', - 'awaitingDependencies', - 'typeDependencies', - 'tupleRegistrations', - 'structRegistrations', - 'sharedRegisterType', - 'whenDependentTypesAreResolved', - 'embind_charCodes', - 'embind_init_charCodes', - 'readLatin1String', - 'getTypeName', - 'getFunctionName', - 'heap32VectorToArray', - 'requireRegisteredType', - 'usesDestructorStack', - 'createJsInvoker', - 'UnboundTypeError', - 'PureVirtualError', - 'GenericWireTypeSize', - 'throwUnboundTypeError', - 'ensureOverloadTable', - 'exposePublicSymbol', - 'replacePublicSymbol', - 'extendError', - 'createNamedFunction', - 'embindRepr', - 'registeredInstances', - 'registeredPointers', - 'registerType', - 'integerReadValueFromPointer', - 'floatReadValueFromPointer', - 'simpleReadValueFromPointer', - 'readPointer', - 'runDestructors', - 'newFunc', - 'craftInvokerFunction', - 'embind__requireFunction', - 'finalizationRegistry', - 'detachFinalizer_deps', - 'deletionQueue', - 'delayFunction', - 'emval_handles', - 'emval_symbols', - 'init_emval', - 'count_emval_handles', - 'getStringOrSymbol', - 'Emval', - 'emval_get_global', - 'emval_returnValue', - 'emval_lookupTypes', - 'emval_methodCallers', - 'emval_addMethodCaller', - 'reflectConstruct', -]; -unexportedSymbols.forEach(unexportedRuntimeSymbol); - - - -var calledRun; - -dependenciesFulfilled = function runCaller() { - // If run has never been called, and we should call run (INVOKE_RUN is true, and Module.noInitialRun is not false) - if (!calledRun) run(); - if (!calledRun) dependenciesFulfilled = runCaller; // try this again later, after new deps are fulfilled -}; - -function stackCheckInit() { - // This is normally called automatically during __wasm_call_ctors but need to - // get these values before even running any of the ctors so we call it redundantly - // here. - _emscripten_stack_init(); - // TODO(sbc): Move writeStackCookie to native to to avoid this. - writeStackCookie(); -} - -function run() { - - if (runDependencies > 0) { - return; - } - - stackCheckInit(); - - preRun(); - - // a preRun added a dependency, run will be called later - if (runDependencies > 0) { - return; - } - - function doRun() { - // run may have just been called through dependencies being fulfilled just in this very frame, - // or while the async setStatus time below was happening - if (calledRun) return; - calledRun = true; - Module['calledRun'] = true; - - if (ABORT) return; - - initRuntime(); - - readyPromiseResolve(Module); - if (Module['onRuntimeInitialized']) Module['onRuntimeInitialized'](); - - assert(!Module['_main'], 'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]'); - - postRun(); - } - - if (Module['setStatus']) { - Module['setStatus']('Running...'); - setTimeout(function() { - setTimeout(function() { - Module['setStatus'](''); - }, 1); - doRun(); - }, 1); - } else - { - doRun(); - } - checkStackCookie(); -} - -function checkUnflushedContent() { - // Compiler settings do not allow exiting the runtime, so flushing - // the streams is not possible. but in ASSERTIONS mode we check - // if there was something to flush, and if so tell the user they - // should request that the runtime be exitable. - // Normally we would not even include flush() at all, but in ASSERTIONS - // builds we do so just for this check, and here we see if there is any - // content to flush, that is, we check if there would have been - // something a non-ASSERTIONS build would have not seen. - // How we flush the streams depends on whether we are in SYSCALLS_REQUIRE_FILESYSTEM=0 - // mode (which has its own special function for this; otherwise, all - // the code is inside libc) - var oldOut = out; - var oldErr = err; - var has = false; - out = err = (x) => { - has = true; - } - try { // it doesn't matter if it fails - flush_NO_FILESYSTEM(); - } catch(e) {} - out = oldOut; - err = oldErr; - if (has) { - warnOnce('stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the Emscripten FAQ), or make sure to emit a newline when you printf etc.'); - warnOnce('(this may also be due to not including full filesystem support - try building with -sFORCE_FILESYSTEM)'); - } -} - -if (Module['preInit']) { - if (typeof Module['preInit'] == 'function') Module['preInit'] = [Module['preInit']]; - while (Module['preInit'].length > 0) { - Module['preInit'].pop()(); - } -} - -run(); - - -// end include: postamble.js - - - return moduleArg.ready -} -); -})(); -; -export default Module; \ No newline at end of file diff --git a/codecs/webp/wasm_build/dec/webp_dec.wasm b/codecs/webp/wasm_build/dec/webp_dec.wasm deleted file mode 100755 index 3cd6130b8adb55183d38126db9378fcf74b02e1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 161723 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 { - var _scriptDir = import.meta.url; - - return ( -function(moduleArg = {}) { - -// include: shell.js -// The Module object: Our interface to the outside world. We import -// and export values on it. There are various ways Module can be used: -// 1. Not defined. We create it here -// 2. A function parameter, function(Module) { ..generated code.. } -// 3. pre-run appended it, var Module = {}; ..generated code.. -// 4. External script tag defines var Module. -// We need to check if Module already exists (e.g. case 3 above). -// Substitution will be replaced with actual code on later stage of the build, -// this way Closure Compiler will not mangle it (e.g. case 4. above). -// Note that if you want to run closure, and also to use Module -// after the generated code, you will need to define var Module = {}; -// before the code. Then that object will be used in the code, and you -// can continue to use Module afterwards as well. -var Module = moduleArg; - -// Set up the promise that indicates the Module is initialized -var readyPromiseResolve, readyPromiseReject; -Module['ready'] = new Promise((resolve, reject) => { - readyPromiseResolve = resolve; - readyPromiseReject = reject; -}); -["_main","_memory","___indirect_function_table","_fflush","onRuntimeInitialized"].forEach((prop) => { - if (!Object.getOwnPropertyDescriptor(Module['ready'], prop)) { - Object.defineProperty(Module['ready'], prop, { - get: () => abort('You are getting ' + prop + ' on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js'), - set: () => abort('You are setting ' + prop + ' on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js'), - }); - } -}); - -// --pre-jses are emitted after the Module integration code, so that they can -// refer to Module (if they choose; they can also define Module) - - -// Sometimes an existing Module object exists with properties -// meant to overwrite the default module functionality. Here -// we collect those properties and reapply _after_ we configure -// the current environment's defaults to avoid having to be so -// defensive during initialization. -var moduleOverrides = Object.assign({}, Module); - -var arguments_ = []; -var thisProgram = './this.program'; -var quit_ = (status, toThrow) => { - throw toThrow; -}; - -// Determine the runtime environment we are in. You can customize this by -// setting the ENVIRONMENT setting at compile time (see settings.js). - -var ENVIRONMENT_IS_WEB = false; -var ENVIRONMENT_IS_WORKER = true; -var ENVIRONMENT_IS_NODE = false; -var ENVIRONMENT_IS_SHELL = false; - -if (Module['ENVIRONMENT']) { - throw new Error('Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)'); -} - -// `/` should be present at the end if `scriptDirectory` is not empty -var scriptDirectory = ''; -function locateFile(path) { - if (Module['locateFile']) { - return Module['locateFile'](path, scriptDirectory); - } - return scriptDirectory + path; -} - -// Hooks that are implemented differently in different runtime environments. -var read_, - readAsync, - readBinary; - -if (ENVIRONMENT_IS_SHELL) { - - if ((typeof process == 'object' && typeof require === 'function') || typeof window == 'object' || typeof importScripts == 'function') throw new Error('not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)'); - - if (typeof read != 'undefined') { - read_ = read; - } - - readBinary = (f) => { - if (typeof readbuffer == 'function') { - return new Uint8Array(readbuffer(f)); - } - let data = read(f, 'binary'); - assert(typeof data == 'object'); - return data; - }; - - readAsync = (f, onload, onerror) => { - setTimeout(() => onload(readBinary(f))); - }; - - if (typeof clearTimeout == 'undefined') { - globalThis.clearTimeout = (id) => {}; - } - - if (typeof setTimeout == 'undefined') { - // spidermonkey lacks setTimeout but we use it above in readAsync. - globalThis.setTimeout = (f) => (typeof f == 'function') ? f() : abort(); - } - - if (typeof scriptArgs != 'undefined') { - arguments_ = scriptArgs; - } else if (typeof arguments != 'undefined') { - arguments_ = arguments; - } - - if (typeof quit == 'function') { - quit_ = (status, toThrow) => { - // Unlike node which has process.exitCode, d8 has no such mechanism. So we - // have no way to set the exit code and then let the program exit with - // that code when it naturally stops running (say, when all setTimeouts - // have completed). For that reason, we must call `quit` - the only way to - // set the exit code - but quit also halts immediately. To increase - // consistency with node (and the web) we schedule the actual quit call - // using a setTimeout to give the current stack and any exception handlers - // a chance to run. This enables features such as addOnPostRun (which - // expected to be able to run code after main returns). - setTimeout(() => { - if (!(toThrow instanceof ExitStatus)) { - let toLog = toThrow; - if (toThrow && typeof toThrow == 'object' && toThrow.stack) { - toLog = [toThrow, toThrow.stack]; - } - err(`exiting due to exception: ${toLog}`); - } - quit(status); - }); - throw toThrow; - }; - } - - if (typeof print != 'undefined') { - // Prefer to use print/printErr where they exist, as they usually work better. - if (typeof console == 'undefined') console = /** @type{!Console} */({}); - console.log = /** @type{!function(this:Console, ...*): undefined} */ (print); - console.warn = console.error = /** @type{!function(this:Console, ...*): undefined} */ (typeof printErr != 'undefined' ? printErr : print); - } - -} else - -// Note that this includes Node.js workers when relevant (pthreads is enabled). -// Node.js workers are detected as a combination of ENVIRONMENT_IS_WORKER and -// ENVIRONMENT_IS_NODE. -if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { - if (ENVIRONMENT_IS_WORKER) { // Check worker, not web, since window could be polyfilled - scriptDirectory = self.location.href; - } else if (typeof document != 'undefined' && document.currentScript) { // web - scriptDirectory = document.currentScript.src; - } - // When MODULARIZE, this JS may be executed later, after document.currentScript - // is gone, so we saved it, and we use it here instead of any other info. - if (_scriptDir) { - scriptDirectory = _scriptDir; - } - // blob urls look like blob:http://site.com/etc/etc and we cannot infer anything from them. - // otherwise, slice off the final part of the url to find the script directory. - // if scriptDirectory does not contain a slash, lastIndexOf will return -1, - // and scriptDirectory will correctly be replaced with an empty string. - // If scriptDirectory contains a query (starting with ?) or a fragment (starting with #), - // they are removed because they could contain a slash. - if (scriptDirectory.indexOf('blob:') !== 0) { - scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, "").lastIndexOf('/')+1); - } else { - scriptDirectory = ''; - } - - if (!(typeof window == 'object' || typeof importScripts == 'function')) throw new Error('not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)'); - - // Differentiate the Web Worker from the Node Worker case, as reading must - // be done differently. - { -// include: web_or_worker_shell_read.js -read_ = (url) => { - var xhr = new XMLHttpRequest(); - xhr.open('GET', url, false); - xhr.send(null); - return xhr.responseText; - } - - if (ENVIRONMENT_IS_WORKER) { - readBinary = (url) => { - var xhr = new XMLHttpRequest(); - xhr.open('GET', url, false); - xhr.responseType = 'arraybuffer'; - xhr.send(null); - return new Uint8Array(/** @type{!ArrayBuffer} */(xhr.response)); - }; - } - - readAsync = (url, onload, onerror) => { - var xhr = new XMLHttpRequest(); - xhr.open('GET', url, true); - xhr.responseType = 'arraybuffer'; - xhr.onload = () => { - if (xhr.status == 200 || (xhr.status == 0 && xhr.response)) { // file URLs can return 0 - onload(xhr.response); - return; - } - onerror(); - }; - xhr.onerror = onerror; - xhr.send(null); - } - -// end include: web_or_worker_shell_read.js - } -} else -{ - throw new Error('environment detection error'); -} - -var out = Module['print'] || console.log.bind(console); -var err = Module['printErr'] || console.error.bind(console); - -// Merge back in the overrides -Object.assign(Module, moduleOverrides); -// Free the object hierarchy contained in the overrides, this lets the GC -// reclaim data used e.g. in memoryInitializerRequest, which is a large typed array. -moduleOverrides = null; -checkIncomingModuleAPI(); - -// Emit code to handle expected values on the Module object. This applies Module.x -// to the proper local x. This has two benefits: first, we only emit it if it is -// expected to arrive, and second, by using a local everywhere else that can be -// minified. - -if (Module['arguments']) arguments_ = Module['arguments'];legacyModuleProp('arguments', 'arguments_'); - -if (Module['thisProgram']) thisProgram = Module['thisProgram'];legacyModuleProp('thisProgram', 'thisProgram'); - -if (Module['quit']) quit_ = Module['quit'];legacyModuleProp('quit', 'quit_'); - -// perform assertions in shell.js after we set up out() and err(), as otherwise if an assertion fails it cannot print the message -// Assertions on removed incoming Module JS APIs. -assert(typeof Module['memoryInitializerPrefixURL'] == 'undefined', 'Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead'); -assert(typeof Module['pthreadMainPrefixURL'] == 'undefined', 'Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead'); -assert(typeof Module['cdInitializerPrefixURL'] == 'undefined', 'Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead'); -assert(typeof Module['filePackagePrefixURL'] == 'undefined', 'Module.filePackagePrefixURL option was removed, use Module.locateFile instead'); -assert(typeof Module['read'] == 'undefined', 'Module.read option was removed (modify read_ in JS)'); -assert(typeof Module['readAsync'] == 'undefined', 'Module.readAsync option was removed (modify readAsync in JS)'); -assert(typeof Module['readBinary'] == 'undefined', 'Module.readBinary option was removed (modify readBinary in JS)'); -assert(typeof Module['setWindowTitle'] == 'undefined', 'Module.setWindowTitle option was removed (modify emscripten_set_window_title in JS)'); -assert(typeof Module['TOTAL_MEMORY'] == 'undefined', 'Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY'); -legacyModuleProp('asm', 'wasmExports'); -legacyModuleProp('read', 'read_'); -legacyModuleProp('readAsync', 'readAsync'); -legacyModuleProp('readBinary', 'readBinary'); -legacyModuleProp('setWindowTitle', 'setWindowTitle'); -var IDBFS = 'IDBFS is no longer included by default; build with -lidbfs.js'; -var PROXYFS = 'PROXYFS is no longer included by default; build with -lproxyfs.js'; -var WORKERFS = 'WORKERFS is no longer included by default; build with -lworkerfs.js'; -var FETCHFS = 'FETCHFS is no longer included by default; build with -lfetchfs.js'; -var ICASEFS = 'ICASEFS is no longer included by default; build with -licasefs.js'; -var JSFILEFS = 'JSFILEFS is no longer included by default; build with -ljsfilefs.js'; -var OPFS = 'OPFS is no longer included by default; build with -lopfs.js'; - -var NODEFS = 'NODEFS is no longer included by default; build with -lnodefs.js'; - -assert(!ENVIRONMENT_IS_WEB, "web environment detected but not enabled at build time. Add 'web' to `-sENVIRONMENT` to enable."); - -assert(!ENVIRONMENT_IS_NODE, "node environment detected but not enabled at build time. Add 'node' to `-sENVIRONMENT` to enable."); - -assert(!ENVIRONMENT_IS_SHELL, "shell environment detected but not enabled at build time. Add 'shell' to `-sENVIRONMENT` to enable."); - - -// end include: shell.js -// include: preamble.js -// === Preamble library stuff === - -// Documentation for the public APIs defined in this file must be updated in: -// site/source/docs/api_reference/preamble.js.rst -// A prebuilt local version of the documentation is available at: -// site/build/text/docs/api_reference/preamble.js.txt -// You can also build docs locally as HTML or other formats in site/ -// An online HTML version (which may be of a different version of Emscripten) -// is up at http://kripken.github.io/emscripten-site/docs/api_reference/preamble.js.html - -var wasmBinary; -if (Module['wasmBinary']) wasmBinary = Module['wasmBinary'];legacyModuleProp('wasmBinary', 'wasmBinary'); - -if (typeof WebAssembly != 'object') { - abort('no native wasm support detected'); -} - -// Wasm globals - -var wasmMemory; - -//======================================== -// Runtime essentials -//======================================== - -// whether we are quitting the application. no code should run after this. -// set in exit() and abort() -var ABORT = false; - -// set by exit() and abort(). Passed to 'onExit' handler. -// NOTE: This is also used as the process return code code in shell environments -// but only when noExitRuntime is false. -var EXITSTATUS; - -// In STRICT mode, we only define assert() when ASSERTIONS is set. i.e. we -// don't define it at all in release modes. This matches the behaviour of -// MINIMAL_RUNTIME. -// TODO(sbc): Make this the default even without STRICT enabled. -/** @type {function(*, string=)} */ -function assert(condition, text) { - if (!condition) { - abort('Assertion failed' + (text ? ': ' + text : '')); - } -} - -// We used to include malloc/free by default in the past. Show a helpful error in -// builds with assertions. - -// Memory management - -var HEAP, -/** @type {!Int8Array} */ - HEAP8, -/** @type {!Uint8Array} */ - HEAPU8, -/** @type {!Int16Array} */ - HEAP16, -/** @type {!Uint16Array} */ - HEAPU16, -/** @type {!Int32Array} */ - HEAP32, -/** @type {!Uint32Array} */ - HEAPU32, -/** @type {!Float32Array} */ - HEAPF32, -/** @type {!Float64Array} */ - HEAPF64; - -function updateMemoryViews() { - var b = wasmMemory.buffer; - Module['HEAP8'] = HEAP8 = new Int8Array(b); - Module['HEAP16'] = HEAP16 = new Int16Array(b); - Module['HEAPU8'] = HEAPU8 = new Uint8Array(b); - Module['HEAPU16'] = HEAPU16 = new Uint16Array(b); - Module['HEAP32'] = HEAP32 = new Int32Array(b); - Module['HEAPU32'] = HEAPU32 = new Uint32Array(b); - Module['HEAPF32'] = HEAPF32 = new Float32Array(b); - Module['HEAPF64'] = HEAPF64 = new Float64Array(b); -} - -assert(!Module['STACK_SIZE'], 'STACK_SIZE can no longer be set at runtime. Use -sSTACK_SIZE at link time') - -assert(typeof Int32Array != 'undefined' && typeof Float64Array !== 'undefined' && Int32Array.prototype.subarray != undefined && Int32Array.prototype.set != undefined, - 'JS engine does not provide full typed array support'); - -// If memory is defined in wasm, the user can't provide it, or set INITIAL_MEMORY -assert(!Module['wasmMemory'], 'Use of `wasmMemory` detected. Use -sIMPORTED_MEMORY to define wasmMemory externally'); -assert(!Module['INITIAL_MEMORY'], 'Detected runtime INITIAL_MEMORY setting. Use -sIMPORTED_MEMORY to define wasmMemory dynamically'); - -// include: runtime_stack_check.js -// Initializes the stack cookie. Called at the startup of main and at the startup of each thread in pthreads mode. -function writeStackCookie() { - var max = _emscripten_stack_get_end(); - assert((max & 3) == 0); - // If the stack ends at address zero we write our cookies 4 bytes into the - // stack. This prevents interference with SAFE_HEAP and ASAN which also - // monitor writes to address zero. - if (max == 0) { - max += 4; - } - // The stack grow downwards towards _emscripten_stack_get_end. - // We write cookies to the final two words in the stack and detect if they are - // ever overwritten. - HEAPU32[((max)>>2)] = 0x02135467; - HEAPU32[(((max)+(4))>>2)] = 0x89BACDFE; - // Also test the global address 0 for integrity. - HEAPU32[((0)>>2)] = 1668509029; -} - -function checkStackCookie() { - if (ABORT) return; - var max = _emscripten_stack_get_end(); - // See writeStackCookie(). - if (max == 0) { - max += 4; - } - var cookie1 = HEAPU32[((max)>>2)]; - var cookie2 = HEAPU32[(((max)+(4))>>2)]; - if (cookie1 != 0x02135467 || cookie2 != 0x89BACDFE) { - abort(`Stack overflow! Stack cookie has been overwritten at ${ptrToString(max)}, expected hex dwords 0x89BACDFE and 0x2135467, but received ${ptrToString(cookie2)} ${ptrToString(cookie1)}`); - } - // Also test the global address 0 for integrity. - if (HEAPU32[((0)>>2)] != 0x63736d65 /* 'emsc' */) { - abort('Runtime error: The application has corrupted its heap memory area (address zero)!'); - } -} -// end include: runtime_stack_check.js -// include: runtime_assertions.js -// Endianness check -(function() { - var h16 = new Int16Array(1); - var h8 = new Int8Array(h16.buffer); - h16[0] = 0x6373; - if (h8[0] !== 0x73 || h8[1] !== 0x63) throw 'Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)'; -})(); - -// end include: runtime_assertions.js -var __ATPRERUN__ = []; // functions called before the runtime is initialized -var __ATINIT__ = []; // functions called during startup -var __ATEXIT__ = []; // functions called during shutdown -var __ATPOSTRUN__ = []; // functions called after the main() is called - -var runtimeInitialized = false; - -function preRun() { - if (Module['preRun']) { - if (typeof Module['preRun'] == 'function') Module['preRun'] = [Module['preRun']]; - while (Module['preRun'].length) { - addOnPreRun(Module['preRun'].shift()); - } - } - callRuntimeCallbacks(__ATPRERUN__); -} - -function initRuntime() { - assert(!runtimeInitialized); - runtimeInitialized = true; - - checkStackCookie(); - - - callRuntimeCallbacks(__ATINIT__); -} - -function postRun() { - checkStackCookie(); - - if (Module['postRun']) { - if (typeof Module['postRun'] == 'function') Module['postRun'] = [Module['postRun']]; - while (Module['postRun'].length) { - addOnPostRun(Module['postRun'].shift()); - } - } - - callRuntimeCallbacks(__ATPOSTRUN__); -} - -function addOnPreRun(cb) { - __ATPRERUN__.unshift(cb); -} - -function addOnInit(cb) { - __ATINIT__.unshift(cb); -} - -function addOnExit(cb) { -} - -function addOnPostRun(cb) { - __ATPOSTRUN__.unshift(cb); -} - -// include: runtime_math.js -// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/imul - -// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/fround - -// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/clz32 - -// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/trunc - -assert(Math.imul, 'This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); -assert(Math.fround, 'This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); -assert(Math.clz32, 'This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); -assert(Math.trunc, 'This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); -// end include: runtime_math.js -// A counter of dependencies for calling run(). If we need to -// do asynchronous work before running, increment this and -// decrement it. Incrementing must happen in a place like -// Module.preRun (used by emcc to add file preloading). -// Note that you can add dependencies in preRun, even though -// it happens right before run - run will be postponed until -// the dependencies are met. -var runDependencies = 0; -var runDependencyWatcher = null; -var dependenciesFulfilled = null; // overridden to take different actions when all run dependencies are fulfilled -var runDependencyTracking = {}; - -function getUniqueRunDependency(id) { - var orig = id; - while (1) { - if (!runDependencyTracking[id]) return id; - id = orig + Math.random(); - } -} - -function addRunDependency(id) { - runDependencies++; - - Module['monitorRunDependencies']?.(runDependencies); - - if (id) { - assert(!runDependencyTracking[id]); - runDependencyTracking[id] = 1; - if (runDependencyWatcher === null && typeof setInterval != 'undefined') { - // Check for missing dependencies every few seconds - runDependencyWatcher = setInterval(() => { - if (ABORT) { - clearInterval(runDependencyWatcher); - runDependencyWatcher = null; - return; - } - var shown = false; - for (var dep in runDependencyTracking) { - if (!shown) { - shown = true; - err('still waiting on run dependencies:'); - } - err(`dependency: ${dep}`); - } - if (shown) { - err('(end of list)'); - } - }, 10000); - } - } else { - err('warning: run dependency added without ID'); - } -} - -function removeRunDependency(id) { - runDependencies--; - - Module['monitorRunDependencies']?.(runDependencies); - - if (id) { - assert(runDependencyTracking[id]); - delete runDependencyTracking[id]; - } else { - err('warning: run dependency removed without ID'); - } - if (runDependencies == 0) { - if (runDependencyWatcher !== null) { - clearInterval(runDependencyWatcher); - runDependencyWatcher = null; - } - if (dependenciesFulfilled) { - var callback = dependenciesFulfilled; - dependenciesFulfilled = null; - callback(); // can add another dependenciesFulfilled - } - } -} - -/** @param {string|number=} what */ -function abort(what) { - Module['onAbort']?.(what); - - what = 'Aborted(' + what + ')'; - // TODO(sbc): Should we remove printing and leave it up to whoever - // catches the exception? - err(what); - - ABORT = true; - EXITSTATUS = 1; - - // Use a wasm runtime error, because a JS error might be seen as a foreign - // exception, which means we'd run destructors on it. We need the error to - // simply make the program stop. - // FIXME This approach does not work in Wasm EH because it currently does not assume - // all RuntimeErrors are from traps; it decides whether a RuntimeError is from - // a trap or not based on a hidden field within the object. So at the moment - // we don't have a way of throwing a wasm trap from JS. TODO Make a JS API that - // allows this in the wasm spec. - - // Suppress closure compiler warning here. Closure compiler's builtin extern - // defintion for WebAssembly.RuntimeError claims it takes no arguments even - // though it can. - // TODO(https://github.com/google/closure-compiler/pull/3913): Remove if/when upstream closure gets fixed. - /** @suppress {checkTypes} */ - var e = new WebAssembly.RuntimeError(what); - - readyPromiseReject(e); - // Throw the error whether or not MODULARIZE is set because abort is used - // in code paths apart from instantiation where an exception is expected - // to be thrown when abort is called. - throw e; -} - -// include: memoryprofiler.js -// end include: memoryprofiler.js -// show errors on likely calls to FS when it was not included -var FS = { - error() { - abort('Filesystem support (FS) was not included. The problem is that you are using files from JS, but files were not used from C/C++, so filesystem support was not auto-included. You can force-include filesystem support with -sFORCE_FILESYSTEM'); - }, - init() { FS.error() }, - createDataFile() { FS.error() }, - createPreloadedFile() { FS.error() }, - createLazyFile() { FS.error() }, - open() { FS.error() }, - mkdev() { FS.error() }, - registerDevice() { FS.error() }, - analyzePath() { FS.error() }, - - ErrnoError() { FS.error() }, -}; -Module['FS_createDataFile'] = FS.createDataFile; -Module['FS_createPreloadedFile'] = FS.createPreloadedFile; - -// include: URIUtils.js -// Prefix of data URIs emitted by SINGLE_FILE and related options. -var dataURIPrefix = 'data:application/octet-stream;base64,'; - -/** - * Indicates whether filename is a base64 data URI. - * @noinline - */ -var isDataURI = (filename) => filename.startsWith(dataURIPrefix); - -/** - * Indicates whether filename is delivered via file protocol (as opposed to http/https) - * @noinline - */ -var isFileURI = (filename) => filename.startsWith('file://'); -// end include: URIUtils.js -function createExportWrapper(name) { - return function() { - assert(runtimeInitialized, `native function \`${name}\` called before runtime initialization`); - var f = wasmExports[name]; - assert(f, `exported native function \`${name}\` not found`); - return f.apply(null, arguments); - }; -} - -// include: runtime_exceptions.js -// end include: runtime_exceptions.js -var wasmBinaryFile; -if (Module['locateFile']) { - wasmBinaryFile = 'webp_enc.wasm'; - if (!isDataURI(wasmBinaryFile)) { - wasmBinaryFile = locateFile(wasmBinaryFile); - } -} else { - // Use bundler-friendly `new URL(..., import.meta.url)` pattern; works in browsers too. - wasmBinaryFile = new URL('webp_enc.wasm', import.meta.url).href; -} - -function getBinarySync(file) { - if (file == wasmBinaryFile && wasmBinary) { - return new Uint8Array(wasmBinary); - } - if (readBinary) { - return readBinary(file); - } - throw "both async and sync fetching of the wasm failed"; -} - -function getBinaryPromise(binaryFile) { - // If we don't have the binary yet, try to load it asynchronously. - // Fetch has some additional restrictions over XHR, like it can't be used on a file:// url. - // See https://github.com/github/fetch/pull/92#issuecomment-140665932 - // Cordova or Electron apps are typically loaded from a file:// url. - // So use fetch if it is available and the url is not a file, otherwise fall back to XHR. - if (!wasmBinary - && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) { - if (typeof fetch == 'function' - ) { - return fetch(binaryFile, { credentials: 'same-origin' }).then((response) => { - if (!response['ok']) { - throw "failed to load wasm binary file at '" + binaryFile + "'"; - } - return response['arrayBuffer'](); - }).catch(() => getBinarySync(binaryFile)); - } - } - - // Otherwise, getBinarySync should be able to get it synchronously - return Promise.resolve().then(() => getBinarySync(binaryFile)); -} - -function instantiateArrayBuffer(binaryFile, imports, receiver) { - return getBinaryPromise(binaryFile).then((binary) => { - return WebAssembly.instantiate(binary, imports); - }).then((instance) => { - return instance; - }).then(receiver, (reason) => { - err(`failed to asynchronously prepare wasm: ${reason}`); - - // Warn on some common problems. - if (isFileURI(wasmBinaryFile)) { - err(`warning: Loading from a file URI (${wasmBinaryFile}) is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing`); - } - abort(reason); - }); -} - -function instantiateAsync(binary, binaryFile, imports, callback) { - if (!binary && - typeof WebAssembly.instantiateStreaming == 'function' && - !isDataURI(binaryFile) && - typeof fetch == 'function') { - return fetch(binaryFile, { credentials: 'same-origin' }).then((response) => { - // Suppress closure warning here since the upstream definition for - // instantiateStreaming only allows Promise rather than - // an actual Response. - // TODO(https://github.com/google/closure-compiler/pull/3913): Remove if/when upstream closure is fixed. - /** @suppress {checkTypes} */ - var result = WebAssembly.instantiateStreaming(response, imports); - - return result.then( - callback, - function(reason) { - // We expect the most common failure cause to be a bad MIME type for the binary, - // in which case falling back to ArrayBuffer instantiation should work. - err(`wasm streaming compile failed: ${reason}`); - err('falling back to ArrayBuffer instantiation'); - return instantiateArrayBuffer(binaryFile, imports, callback); - }); - }); - } - return instantiateArrayBuffer(binaryFile, imports, callback); -} - -// Create the wasm instance. -// Receives the wasm imports, returns the exports. -function createWasm() { - // prepare imports - var info = { - 'env': wasmImports, - 'wasi_snapshot_preview1': wasmImports, - }; - // Load the wasm module and create an instance of using native support in the JS engine. - // handle a generated wasm instance, receiving its exports and - // performing other necessary setup - /** @param {WebAssembly.Module=} module*/ - function receiveInstance(instance, module) { - wasmExports = instance.exports; - - - - wasmMemory = wasmExports['memory']; - - assert(wasmMemory, "memory not found in wasm exports"); - // This assertion doesn't hold when emscripten is run in --post-link - // mode. - // TODO(sbc): Read INITIAL_MEMORY out of the wasm file in post-link mode. - //assert(wasmMemory.buffer.byteLength === 16777216); - updateMemoryViews(); - - wasmTable = wasmExports['__indirect_function_table']; - - assert(wasmTable, "table not found in wasm exports"); - - addOnInit(wasmExports['__wasm_call_ctors']); - - removeRunDependency('wasm-instantiate'); - return wasmExports; - } - // wait for the pthread pool (if any) - addRunDependency('wasm-instantiate'); - - // Prefer streaming instantiation if available. - // Async compilation can be confusing when an error on the page overwrites Module - // (for example, if the order of elements is wrong, and the one defining Module is - // later), so we save Module and check it later. - var trueModule = Module; - function receiveInstantiationResult(result) { - // 'result' is a ResultObject object which has both the module and instance. - // receiveInstance() will swap in the exports (to Module.asm) so they can be called - assert(Module === trueModule, 'the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?'); - trueModule = null; - // TODO: Due to Closure regression https://github.com/google/closure-compiler/issues/3193, the above line no longer optimizes out down to the following line. - // When the regression is fixed, can restore the above PTHREADS-enabled path. - receiveInstance(result['instance']); - } - - // User shell pages can write their own Module.instantiateWasm = function(imports, successCallback) callback - // to manually instantiate the Wasm module themselves. This allows pages to - // run the instantiation parallel to any other async startup actions they are - // performing. - // Also pthreads and wasm workers initialize the wasm instance through this - // path. - if (Module['instantiateWasm']) { - - try { - return Module['instantiateWasm'](info, receiveInstance); - } catch(e) { - err(`Module.instantiateWasm callback failed with error: ${e}`); - // If instantiation fails, reject the module ready promise. - readyPromiseReject(e); - } - } - - // If instantiation fails, reject the module ready promise. - instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult).catch(readyPromiseReject); - return {}; // no exports yet; we'll fill them in later -} - -// Globals used by JS i64 conversions (see makeSetValue) -var tempDouble; -var tempI64; - -// include: runtime_debug.js -function legacyModuleProp(prop, newName, incomming=true) { - if (!Object.getOwnPropertyDescriptor(Module, prop)) { - Object.defineProperty(Module, prop, { - configurable: true, - get() { - let extra = incomming ? ' (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)' : ''; - abort(`\`Module.${prop}\` has been replaced by \`${newName}\`` + extra); - - } - }); - } -} - -function ignoredModuleProp(prop) { - if (Object.getOwnPropertyDescriptor(Module, prop)) { - abort(`\`Module.${prop}\` was supplied but \`${prop}\` not included in INCOMING_MODULE_JS_API`); - } -} - -// forcing the filesystem exports a few things by default -function isExportedByForceFilesystem(name) { - return name === 'FS_createPath' || - name === 'FS_createDataFile' || - name === 'FS_createPreloadedFile' || - name === 'FS_unlink' || - name === 'addRunDependency' || - // The old FS has some functionality that WasmFS lacks. - name === 'FS_createLazyFile' || - name === 'FS_createDevice' || - name === 'removeRunDependency'; -} - -function missingGlobal(sym, msg) { - if (typeof globalThis !== 'undefined') { - Object.defineProperty(globalThis, sym, { - configurable: true, - get() { - warnOnce(`\`${sym}\` is not longer defined by emscripten. ${msg}`); - return undefined; - } - }); - } -} - -missingGlobal('buffer', 'Please use HEAP8.buffer or wasmMemory.buffer'); -missingGlobal('asm', 'Please use wasmExports instead'); - -function missingLibrarySymbol(sym) { - if (typeof globalThis !== 'undefined' && !Object.getOwnPropertyDescriptor(globalThis, sym)) { - Object.defineProperty(globalThis, sym, { - configurable: true, - get() { - // Can't `abort()` here because it would break code that does runtime - // checks. e.g. `if (typeof SDL === 'undefined')`. - var msg = `\`${sym}\` is a library symbol and not included by default; add it to your library.js __deps or to DEFAULT_LIBRARY_FUNCS_TO_INCLUDE on the command line`; - // DEFAULT_LIBRARY_FUNCS_TO_INCLUDE requires the name as it appears in - // library.js, which means $name for a JS name with no prefix, or name - // for a JS name like _name. - var librarySymbol = sym; - if (!librarySymbol.startsWith('_')) { - librarySymbol = '$' + sym; - } - msg += ` (e.g. -sDEFAULT_LIBRARY_FUNCS_TO_INCLUDE='${librarySymbol}')`; - if (isExportedByForceFilesystem(sym)) { - msg += '. Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you'; - } - warnOnce(msg); - return undefined; - } - }); - } - // Any symbol that is not included from the JS libary is also (by definition) - // not exported on the Module object. - unexportedRuntimeSymbol(sym); -} - -function unexportedRuntimeSymbol(sym) { - if (!Object.getOwnPropertyDescriptor(Module, sym)) { - Object.defineProperty(Module, sym, { - configurable: true, - get() { - var msg = `'${sym}' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the Emscripten FAQ)`; - if (isExportedByForceFilesystem(sym)) { - msg += '. Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you'; - } - abort(msg); - } - }); - } -} - -// Used by XXXXX_DEBUG settings to output debug messages. -function dbg(text) { - // TODO(sbc): Make this configurable somehow. Its not always convenient for - // logging to show up as warnings. - console.warn.apply(console, arguments); -} -// end include: runtime_debug.js -// === Body === - -// end include: preamble.js - - /** @constructor */ - function ExitStatus(status) { - this.name = 'ExitStatus'; - this.message = `Program terminated with exit(${status})`; - this.status = status; - } - - var callRuntimeCallbacks = (callbacks) => { - while (callbacks.length > 0) { - // Pass the module as the first argument. - callbacks.shift()(Module); - } - }; - - - /** - * @param {number} ptr - * @param {string} type - */ - function getValue(ptr, type = 'i8') { - if (type.endsWith('*')) type = '*'; - switch (type) { - case 'i1': return HEAP8[((ptr)>>0)]; - case 'i8': return HEAP8[((ptr)>>0)]; - case 'i16': return HEAP16[((ptr)>>1)]; - case 'i32': return HEAP32[((ptr)>>2)]; - case 'i64': abort('to do getValue(i64) use WASM_BIGINT'); - case 'float': return HEAPF32[((ptr)>>2)]; - case 'double': return HEAPF64[((ptr)>>3)]; - case '*': return HEAPU32[((ptr)>>2)]; - default: abort(`invalid type for getValue: ${type}`); - } - } - - var noExitRuntime = Module['noExitRuntime'] || true; - - var ptrToString = (ptr) => { - assert(typeof ptr === 'number'); - // With CAN_ADDRESS_2GB or MEMORY64, pointers are already unsigned. - ptr >>>= 0; - return '0x' + ptr.toString(16).padStart(8, '0'); - }; - - - /** - * @param {number} ptr - * @param {number} value - * @param {string} type - */ - function setValue(ptr, value, type = 'i8') { - if (type.endsWith('*')) type = '*'; - switch (type) { - case 'i1': HEAP8[((ptr)>>0)] = value; break; - case 'i8': HEAP8[((ptr)>>0)] = value; break; - case 'i16': HEAP16[((ptr)>>1)] = value; break; - case 'i32': HEAP32[((ptr)>>2)] = value; break; - case 'i64': abort('to do setValue(i64) use WASM_BIGINT'); - case 'float': HEAPF32[((ptr)>>2)] = value; break; - case 'double': HEAPF64[((ptr)>>3)] = value; break; - case '*': HEAPU32[((ptr)>>2)] = value; break; - default: abort(`invalid type for setValue: ${type}`); - } - } - - var warnOnce = (text) => { - warnOnce.shown ||= {}; - if (!warnOnce.shown[text]) { - warnOnce.shown[text] = 1; - err(text); - } - }; - - var structRegistrations = { - }; - - var runDestructors = (destructors) => { - while (destructors.length) { - var ptr = destructors.pop(); - var del = destructors.pop(); - del(ptr); - } - }; - - /** @suppress {globalThis} */ - function simpleReadValueFromPointer(pointer) { - return this['fromWireType'](HEAP32[((pointer)>>2)]); - } - - var awaitingDependencies = { - }; - - var registeredTypes = { - }; - - var typeDependencies = { - }; - - var InternalError; - var throwInternalError = (message) => { throw new InternalError(message); }; - var whenDependentTypesAreResolved = (myTypes, dependentTypes, getTypeConverters) => { - myTypes.forEach(function(type) { - typeDependencies[type] = dependentTypes; - }); - - function onComplete(typeConverters) { - var myTypeConverters = getTypeConverters(typeConverters); - if (myTypeConverters.length !== myTypes.length) { - throwInternalError('Mismatched type converter count'); - } - for (var i = 0; i < myTypes.length; ++i) { - registerType(myTypes[i], myTypeConverters[i]); - } - } - - var typeConverters = new Array(dependentTypes.length); - var unregisteredTypes = []; - var registered = 0; - dependentTypes.forEach((dt, i) => { - if (registeredTypes.hasOwnProperty(dt)) { - typeConverters[i] = registeredTypes[dt]; - } else { - unregisteredTypes.push(dt); - if (!awaitingDependencies.hasOwnProperty(dt)) { - awaitingDependencies[dt] = []; - } - awaitingDependencies[dt].push(() => { - typeConverters[i] = registeredTypes[dt]; - ++registered; - if (registered === unregisteredTypes.length) { - onComplete(typeConverters); - } - }); - } - }); - if (0 === unregisteredTypes.length) { - onComplete(typeConverters); - } - }; - var __embind_finalize_value_object = (structType) => { - var reg = structRegistrations[structType]; - delete structRegistrations[structType]; - - var rawConstructor = reg.rawConstructor; - var rawDestructor = reg.rawDestructor; - var fieldRecords = reg.fields; - var fieldTypes = fieldRecords.map((field) => field.getterReturnType). - concat(fieldRecords.map((field) => field.setterArgumentType)); - whenDependentTypesAreResolved([structType], fieldTypes, (fieldTypes) => { - var fields = {}; - fieldRecords.forEach((field, i) => { - var fieldName = field.fieldName; - var getterReturnType = fieldTypes[i]; - var getter = field.getter; - var getterContext = field.getterContext; - var setterArgumentType = fieldTypes[i + fieldRecords.length]; - var setter = field.setter; - var setterContext = field.setterContext; - fields[fieldName] = { - read: (ptr) => getterReturnType['fromWireType'](getter(getterContext, ptr)), - write: (ptr, o) => { - var destructors = []; - setter(setterContext, ptr, setterArgumentType['toWireType'](destructors, o)); - runDestructors(destructors); - } - }; - }); - - return [{ - name: reg.name, - 'fromWireType': (ptr) => { - var rv = {}; - for (var i in fields) { - rv[i] = fields[i].read(ptr); - } - rawDestructor(ptr); - return rv; - }, - 'toWireType': (destructors, o) => { - // todo: Here we have an opportunity for -O3 level "unsafe" optimizations: - // assume all fields are present without checking. - for (var fieldName in fields) { - if (!(fieldName in o)) { - throw new TypeError(`Missing field: "${fieldName}"`); - } - } - var ptr = rawConstructor(); - for (fieldName in fields) { - fields[fieldName].write(ptr, o[fieldName]); - } - if (destructors !== null) { - destructors.push(rawDestructor, ptr); - } - return ptr; - }, - 'argPackAdvance': GenericWireTypeSize, - 'readValueFromPointer': simpleReadValueFromPointer, - destructorFunction: rawDestructor, - }]; - }); - }; - - var __embind_register_bigint = (primitiveType, name, size, minRange, maxRange) => {}; - - var embind_init_charCodes = () => { - var codes = new Array(256); - for (var i = 0; i < 256; ++i) { - codes[i] = String.fromCharCode(i); - } - embind_charCodes = codes; - }; - var embind_charCodes; - var readLatin1String = (ptr) => { - var ret = ""; - var c = ptr; - while (HEAPU8[c]) { - ret += embind_charCodes[HEAPU8[c++]]; - } - return ret; - }; - - - - - var BindingError; - var throwBindingError = (message) => { throw new BindingError(message); }; - - /** @param {Object=} options */ - function sharedRegisterType(rawType, registeredInstance, options = {}) { - var name = registeredInstance.name; - if (!rawType) { - throwBindingError(`type "${name}" must have a positive integer typeid pointer`); - } - if (registeredTypes.hasOwnProperty(rawType)) { - if (options.ignoreDuplicateRegistrations) { - return; - } else { - throwBindingError(`Cannot register type '${name}' twice`); - } - } - - registeredTypes[rawType] = registeredInstance; - delete typeDependencies[rawType]; - - if (awaitingDependencies.hasOwnProperty(rawType)) { - var callbacks = awaitingDependencies[rawType]; - delete awaitingDependencies[rawType]; - callbacks.forEach((cb) => cb()); - } - } - /** @param {Object=} options */ - function registerType(rawType, registeredInstance, options = {}) { - if (!('argPackAdvance' in registeredInstance)) { - throw new TypeError('registerType registeredInstance requires argPackAdvance'); - } - return sharedRegisterType(rawType, registeredInstance, options); - } - - var GenericWireTypeSize = 8; - /** @suppress {globalThis} */ - var __embind_register_bool = (rawType, name, trueValue, falseValue) => { - name = readLatin1String(name); - registerType(rawType, { - name, - 'fromWireType': function(wt) { - // ambiguous emscripten ABI: sometimes return values are - // true or false, and sometimes integers (0 or 1) - return !!wt; - }, - 'toWireType': function(destructors, o) { - return o ? trueValue : falseValue; - }, - 'argPackAdvance': GenericWireTypeSize, - 'readValueFromPointer': function(pointer) { - return this['fromWireType'](HEAPU8[pointer]); - }, - destructorFunction: null, // This type does not need a destructor - }); - }; - - function handleAllocatorInit() { - Object.assign(HandleAllocator.prototype, /** @lends {HandleAllocator.prototype} */ { - get(id) { - assert(this.allocated[id] !== undefined, `invalid handle: ${id}`); - return this.allocated[id]; - }, - has(id) { - return this.allocated[id] !== undefined; - }, - allocate(handle) { - var id = this.freelist.pop() || this.allocated.length; - this.allocated[id] = handle; - return id; - }, - free(id) { - assert(this.allocated[id] !== undefined); - // Set the slot to `undefined` rather than using `delete` here since - // apparently arrays with holes in them can be less efficient. - this.allocated[id] = undefined; - this.freelist.push(id); - } - }); - } - /** @constructor */ - function HandleAllocator() { - // Reserve slot 0 so that 0 is always an invalid handle - this.allocated = [undefined]; - this.freelist = []; - } - var emval_handles = new HandleAllocator();; - var __emval_decref = (handle) => { - if (handle >= emval_handles.reserved && 0 === --emval_handles.get(handle).refcount) { - emval_handles.free(handle); - } - }; - - - - var count_emval_handles = () => { - var count = 0; - for (var i = emval_handles.reserved; i < emval_handles.allocated.length; ++i) { - if (emval_handles.allocated[i] !== undefined) { - ++count; - } - } - return count; - }; - - var init_emval = () => { - // reserve some special values. These never get de-allocated. - // The HandleAllocator takes care of reserving zero. - emval_handles.allocated.push( - {value: undefined}, - {value: null}, - {value: true}, - {value: false}, - ); - emval_handles.reserved = emval_handles.allocated.length - Module['count_emval_handles'] = count_emval_handles; - }; - var Emval = { - toValue:(handle) => { - if (!handle) { - throwBindingError('Cannot use deleted val. handle = ' + handle); - } - return emval_handles.get(handle).value; - }, - toHandle:(value) => { - switch (value) { - case undefined: return 1; - case null: return 2; - case true: return 3; - case false: return 4; - default:{ - return emval_handles.allocate({refcount: 1, value: value}); - } - } - }, - }; - - - - var __embind_register_emval = (rawType, name) => { - name = readLatin1String(name); - registerType(rawType, { - name, - 'fromWireType': (handle) => { - var rv = Emval.toValue(handle); - __emval_decref(handle); - return rv; - }, - 'toWireType': (destructors, value) => Emval.toHandle(value), - 'argPackAdvance': GenericWireTypeSize, - 'readValueFromPointer': simpleReadValueFromPointer, - destructorFunction: null, // This type does not need a destructor - - // TODO: do we need a deleteObject here? write a test where - // emval is passed into JS via an interface - }); - }; - - var ensureOverloadTable = (proto, methodName, humanName) => { - if (undefined === proto[methodName].overloadTable) { - var prevFunc = proto[methodName]; - // Inject an overload resolver function that routes to the appropriate overload based on the number of arguments. - proto[methodName] = function() { - // TODO This check can be removed in -O3 level "unsafe" optimizations. - if (!proto[methodName].overloadTable.hasOwnProperty(arguments.length)) { - throwBindingError(`Function '${humanName}' called with an invalid number of arguments (${arguments.length}) - expects one of (${proto[methodName].overloadTable})!`); - } - return proto[methodName].overloadTable[arguments.length].apply(this, arguments); - }; - // Move the previous function into the overload table. - proto[methodName].overloadTable = []; - proto[methodName].overloadTable[prevFunc.argCount] = prevFunc; - } - }; - - /** @param {number=} numArguments */ - var exposePublicSymbol = (name, value, numArguments) => { - if (Module.hasOwnProperty(name)) { - if (undefined === numArguments || (undefined !== Module[name].overloadTable && undefined !== Module[name].overloadTable[numArguments])) { - throwBindingError(`Cannot register public name '${name}' twice`); - } - - // We are exposing a function with the same name as an existing function. Create an overload table and a function selector - // that routes between the two. - ensureOverloadTable(Module, name, name); - if (Module.hasOwnProperty(numArguments)) { - throwBindingError(`Cannot register multiple overloads of a function with the same number of arguments (${numArguments})!`); - } - // Add the new function into the overload table. - Module[name].overloadTable[numArguments] = value; - } - else { - Module[name] = value; - if (undefined !== numArguments) { - Module[name].numArguments = numArguments; - } - } - }; - - var enumReadValueFromPointer = (name, width, signed) => { - switch (width) { - case 1: return signed ? - function(pointer) { return this['fromWireType'](HEAP8[((pointer)>>0)]) } : - function(pointer) { return this['fromWireType'](HEAPU8[((pointer)>>0)]) }; - case 2: return signed ? - function(pointer) { return this['fromWireType'](HEAP16[((pointer)>>1)]) } : - function(pointer) { return this['fromWireType'](HEAPU16[((pointer)>>1)]) }; - case 4: return signed ? - function(pointer) { return this['fromWireType'](HEAP32[((pointer)>>2)]) } : - function(pointer) { return this['fromWireType'](HEAPU32[((pointer)>>2)]) }; - default: - throw new TypeError(`invalid integer width (${width}): ${name}`); - } - }; - - - /** @suppress {globalThis} */ - var __embind_register_enum = (rawType, name, size, isSigned) => { - name = readLatin1String(name); - - function ctor() {} - ctor.values = {}; - - registerType(rawType, { - name, - constructor: ctor, - 'fromWireType': function(c) { - return this.constructor.values[c]; - }, - 'toWireType': (destructors, c) => c.value, - 'argPackAdvance': GenericWireTypeSize, - 'readValueFromPointer': enumReadValueFromPointer(name, size, isSigned), - destructorFunction: null, - }); - exposePublicSymbol(name, ctor); - }; - - var createNamedFunction = (name, body) => Object.defineProperty(body, 'name', { - value: name - }); - - - - - - var getTypeName = (type) => { - var ptr = ___getTypeName(type); - var rv = readLatin1String(ptr); - _free(ptr); - return rv; - }; - - var requireRegisteredType = (rawType, humanName) => { - var impl = registeredTypes[rawType]; - if (undefined === impl) { - throwBindingError(humanName + " has unknown type " + getTypeName(rawType)); - } - return impl; - }; - var __embind_register_enum_value = (rawEnumType, name, enumValue) => { - var enumType = requireRegisteredType(rawEnumType, 'enum'); - name = readLatin1String(name); - - var Enum = enumType.constructor; - - var Value = Object.create(enumType.constructor.prototype, { - value: {value: enumValue}, - constructor: {value: createNamedFunction(`${enumType.name}_${name}`, function() {})}, - }); - Enum.values[enumValue] = Value; - Enum[name] = Value; - }; - - var embindRepr = (v) => { - if (v === null) { - return 'null'; - } - var t = typeof v; - if (t === 'object' || t === 'array' || t === 'function') { - return v.toString(); - } else { - return '' + v; - } - }; - - var floatReadValueFromPointer = (name, width) => { - switch (width) { - case 4: return function(pointer) { - return this['fromWireType'](HEAPF32[((pointer)>>2)]); - }; - case 8: return function(pointer) { - return this['fromWireType'](HEAPF64[((pointer)>>3)]); - }; - default: - throw new TypeError(`invalid float width (${width}): ${name}`); - } - }; - - - var __embind_register_float = (rawType, name, size) => { - name = readLatin1String(name); - registerType(rawType, { - name, - 'fromWireType': (value) => value, - 'toWireType': (destructors, value) => { - if (typeof value != "number" && typeof value != "boolean") { - throw new TypeError(`Cannot convert ${embindRepr(value)} to ${this.name}`); - } - // The VM will perform JS to Wasm value conversion, according to the spec: - // https://www.w3.org/TR/wasm-js-api-1/#towebassemblyvalue - return value; - }, - 'argPackAdvance': GenericWireTypeSize, - 'readValueFromPointer': floatReadValueFromPointer(name, size), - destructorFunction: null, // This type does not need a destructor - }); - }; - - - - - function usesDestructorStack(argTypes) { - for (var i = 1; i < argTypes.length; ++i) { // Skip return value at index 0 - it's not deleted here. - if (argTypes[i] !== null && argTypes[i].destructorFunction === undefined) { // The type does not define a destructor function - must use dynamic stack - return true; - } - } - return false; - } - - function newFunc(constructor, argumentList) { - if (!(constructor instanceof Function)) { - throw new TypeError(`new_ called with constructor type ${typeof(constructor)} which is not a function`); - } - /* - * Previously, the following line was just: - * function dummy() {}; - * Unfortunately, Chrome was preserving 'dummy' as the object's name, even - * though at creation, the 'dummy' has the correct constructor name. Thus, - * objects created with IMVU.new would show up in the debugger as 'dummy', - * which isn't very helpful. Using IMVU.createNamedFunction addresses the - * issue. Doublely-unfortunately, there's no way to write a test for this - * behavior. -NRD 2013.02.22 - */ - var dummy = createNamedFunction(constructor.name || 'unknownFunctionName', function(){}); - dummy.prototype = constructor.prototype; - var obj = new dummy; - - var r = constructor.apply(obj, argumentList); - return (r instanceof Object) ? r : obj; - } - - function createJsInvoker(humanName, argTypes, isClassMethodFunc, returns, isAsync) { - var needsDestructorStack = usesDestructorStack(argTypes); - var argCount = argTypes.length; - var argsList = ""; - var argsListWired = ""; - for (var i = 0; i < argCount - 2; ++i) { - argsList += (i!==0?", ":"")+"arg"+i; - argsListWired += (i!==0?", ":"")+"arg"+i+"Wired"; - } - - var invokerFnBody = ` - return function (${argsList}) { - if (arguments.length !== ${argCount - 2}) { - throwBindingError('function ${humanName} called with ' + arguments.length + ' arguments, expected ${argCount - 2}'); - }`; - - if (needsDestructorStack) { - invokerFnBody += "var destructors = [];\n"; - } - - var dtorStack = needsDestructorStack ? "destructors" : "null"; - var args1 = ["throwBindingError", "invoker", "fn", "runDestructors", "retType", "classParam"]; - - if (isClassMethodFunc) { - invokerFnBody += "var thisWired = classParam['toWireType']("+dtorStack+", this);\n"; - } - - for (var i = 0; i < argCount - 2; ++i) { - invokerFnBody += "var arg"+i+"Wired = argType"+i+"['toWireType']("+dtorStack+", arg"+i+"); // "+argTypes[i+2].name+"\n"; - args1.push("argType"+i); - } - - if (isClassMethodFunc) { - argsListWired = "thisWired" + (argsListWired.length > 0 ? ", " : "") + argsListWired; - } - - invokerFnBody += - (returns || isAsync ? "var rv = ":"") + "invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n"; - - if (needsDestructorStack) { - invokerFnBody += "runDestructors(destructors);\n"; - } else { - for (var i = isClassMethodFunc?1:2; i < argTypes.length; ++i) { // Skip return value at index 0 - it's not deleted here. Also skip class type if not a method. - var paramName = (i === 1 ? "thisWired" : ("arg"+(i - 2)+"Wired")); - if (argTypes[i].destructorFunction !== null) { - invokerFnBody += paramName+"_dtor("+paramName+"); // "+argTypes[i].name+"\n"; - args1.push(paramName+"_dtor"); - } - } - } - - if (returns) { - invokerFnBody += "var ret = retType['fromWireType'](rv);\n" + - "return ret;\n"; - } else { - } - - invokerFnBody += "}\n"; - - invokerFnBody = `if (arguments.length !== ${args1.length}){ throw new Error("${humanName} Expected ${args1.length} closure arguments " + arguments.length + " given."); }\n${invokerFnBody}`; - return [args1, invokerFnBody]; - } - function craftInvokerFunction(humanName, argTypes, classType, cppInvokerFunc, cppTargetFunc, /** boolean= */ isAsync) { - // humanName: a human-readable string name for the function to be generated. - // argTypes: An array that contains the embind type objects for all types in the function signature. - // argTypes[0] is the type object for the function return value. - // argTypes[1] is the type object for function this object/class type, or null if not crafting an invoker for a class method. - // argTypes[2...] are the actual function parameters. - // classType: The embind type object for the class to be bound, or null if this is not a method of a class. - // cppInvokerFunc: JS Function object to the C++-side function that interops into C++ code. - // cppTargetFunc: Function pointer (an integer to FUNCTION_TABLE) to the target C++ function the cppInvokerFunc will end up calling. - // isAsync: Optional. If true, returns an async function. Async bindings are only supported with JSPI. - var argCount = argTypes.length; - - if (argCount < 2) { - throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!"); - } - - assert(!isAsync, 'Async bindings are only supported with JSPI.'); - - var isClassMethodFunc = (argTypes[1] !== null && classType !== null); - - // Free functions with signature "void function()" do not need an invoker that marshalls between wire types. - // TODO: This omits argument count check - enable only at -O3 or similar. - // if (ENABLE_UNSAFE_OPTS && argCount == 2 && argTypes[0].name == "void" && !isClassMethodFunc) { - // return FUNCTION_TABLE[fn]; - // } - - // Determine if we need to use a dynamic stack to store the destructors for the function parameters. - // TODO: Remove this completely once all function invokers are being dynamically generated. - var needsDestructorStack = usesDestructorStack(argTypes); - - var returns = (argTypes[0].name !== "void"); - - // Builld the arguments that will be passed into the closure around the invoker - // function. - var closureArgs = [throwBindingError, cppInvokerFunc, cppTargetFunc, runDestructors, argTypes[0], argTypes[1]]; - for (var i = 0; i < argCount - 2; ++i) { - closureArgs.push(argTypes[i+2]); - } - if (!needsDestructorStack) { - for (var i = isClassMethodFunc?1:2; i < argTypes.length; ++i) { // Skip return value at index 0 - it's not deleted here. Also skip class type if not a method. - if (argTypes[i].destructorFunction !== null) { - closureArgs.push(argTypes[i].destructorFunction); - } - } - } - - let [args, invokerFnBody] = createJsInvoker(humanName, argTypes, isClassMethodFunc, returns, isAsync); - args.push(invokerFnBody); - var invokerFn = newFunc(Function, args).apply(null, closureArgs); - return createNamedFunction(humanName, invokerFn); - } - - - var heap32VectorToArray = (count, firstElement) => { - var array = []; - for (var i = 0; i < count; i++) { - // TODO(https://github.com/emscripten-core/emscripten/issues/17310): - // Find a way to hoist the `>> 2` or `>> 3` out of this loop. - array.push(HEAPU32[(((firstElement)+(i * 4))>>2)]); - } - return array; - }; - - - /** @param {number=} numArguments */ - var replacePublicSymbol = (name, value, numArguments) => { - if (!Module.hasOwnProperty(name)) { - throwInternalError('Replacing nonexistant public symbol'); - } - // If there's an overload table for this symbol, replace the symbol in the overload table instead. - if (undefined !== Module[name].overloadTable && undefined !== numArguments) { - Module[name].overloadTable[numArguments] = value; - } - else { - Module[name] = value; - Module[name].argCount = numArguments; - } - }; - - - - var dynCallLegacy = (sig, ptr, args) => { - assert(('dynCall_' + sig) in Module, `bad function pointer type - dynCall function not found for sig '${sig}'`); - if (args?.length) { - // j (64-bit integer) must be passed in as two numbers [low 32, high 32]. - assert(args.length === sig.substring(1).replace(/j/g, '--').length); - } else { - assert(sig.length == 1); - } - var f = Module['dynCall_' + sig]; - return args && args.length ? f.apply(null, [ptr].concat(args)) : f.call(null, ptr); - }; - - var wasmTableMirror = []; - - var wasmTable; - var getWasmTableEntry = (funcPtr) => { - var func = wasmTableMirror[funcPtr]; - if (!func) { - if (funcPtr >= wasmTableMirror.length) wasmTableMirror.length = funcPtr + 1; - wasmTableMirror[funcPtr] = func = wasmTable.get(funcPtr); - } - assert(wasmTable.get(funcPtr) == func, "JavaScript-side Wasm function table mirror is out of date!"); - return func; - }; - - /** @param {Object=} args */ - var dynCall = (sig, ptr, args) => { - // Without WASM_BIGINT support we cannot directly call function with i64 as - // part of thier signature, so we rely the dynCall functions generated by - // wasm-emscripten-finalize - if (sig.includes('j')) { - return dynCallLegacy(sig, ptr, args); - } - assert(getWasmTableEntry(ptr), `missing table entry in dynCall: ${ptr}`); - var rtn = getWasmTableEntry(ptr).apply(null, args); - return rtn; - }; - var getDynCaller = (sig, ptr) => { - assert(sig.includes('j') || sig.includes('p'), 'getDynCaller should only be called with i64 sigs') - var argCache = []; - return function() { - argCache.length = 0; - Object.assign(argCache, arguments); - return dynCall(sig, ptr, argCache); - }; - }; - - - var embind__requireFunction = (signature, rawFunction) => { - signature = readLatin1String(signature); - - function makeDynCaller() { - if (signature.includes('j')) { - return getDynCaller(signature, rawFunction); - } - return getWasmTableEntry(rawFunction); - } - - var fp = makeDynCaller(); - if (typeof fp != "function") { - throwBindingError(`unknown function pointer with signature ${signature}: ${rawFunction}`); - } - return fp; - }; - - - - var extendError = (baseErrorType, errorName) => { - var errorClass = createNamedFunction(errorName, function(message) { - this.name = errorName; - this.message = message; - - var stack = (new Error(message)).stack; - if (stack !== undefined) { - this.stack = this.toString() + '\n' + - stack.replace(/^Error(:[^\n]*)?\n/, ''); - } - }); - errorClass.prototype = Object.create(baseErrorType.prototype); - errorClass.prototype.constructor = errorClass; - errorClass.prototype.toString = function() { - if (this.message === undefined) { - return this.name; - } else { - return `${this.name}: ${this.message}`; - } - }; - - return errorClass; - }; - var UnboundTypeError; - - var throwUnboundTypeError = (message, types) => { - var unboundTypes = []; - var seen = {}; - function visit(type) { - if (seen[type]) { - return; - } - if (registeredTypes[type]) { - return; - } - if (typeDependencies[type]) { - typeDependencies[type].forEach(visit); - return; - } - unboundTypes.push(type); - seen[type] = true; - } - types.forEach(visit); - - throw new UnboundTypeError(`${message}: ` + unboundTypes.map(getTypeName).join([', '])); - }; - - - var getFunctionName = (signature) => { - signature = signature.trim(); - const argsIndex = signature.indexOf("("); - if (argsIndex !== -1) { - assert(signature[signature.length - 1] == ")", "Parentheses for argument names should match."); - return signature.substr(0, argsIndex); - } else { - return signature; - } - }; - var __embind_register_function = (name, argCount, rawArgTypesAddr, signature, rawInvoker, fn, isAsync) => { - var argTypes = heap32VectorToArray(argCount, rawArgTypesAddr); - name = readLatin1String(name); - name = getFunctionName(name); - - rawInvoker = embind__requireFunction(signature, rawInvoker); - - exposePublicSymbol(name, function() { - throwUnboundTypeError(`Cannot call ${name} due to unbound types`, argTypes); - }, argCount - 1); - - whenDependentTypesAreResolved([], argTypes, function(argTypes) { - var invokerArgsArray = [argTypes[0] /* return value */, null /* no class 'this'*/].concat(argTypes.slice(1) /* actual params */); - replacePublicSymbol(name, craftInvokerFunction(name, invokerArgsArray, null /* no class 'this'*/, rawInvoker, fn, isAsync), argCount - 1); - return []; - }); - }; - - - var integerReadValueFromPointer = (name, width, signed) => { - // integers are quite common, so generate very specialized functions - switch (width) { - case 1: return signed ? - (pointer) => HEAP8[((pointer)>>0)] : - (pointer) => HEAPU8[((pointer)>>0)]; - case 2: return signed ? - (pointer) => HEAP16[((pointer)>>1)] : - (pointer) => HEAPU16[((pointer)>>1)] - case 4: return signed ? - (pointer) => HEAP32[((pointer)>>2)] : - (pointer) => HEAPU32[((pointer)>>2)] - default: - throw new TypeError(`invalid integer width (${width}): ${name}`); - } - }; - - - /** @suppress {globalThis} */ - var __embind_register_integer = (primitiveType, name, size, minRange, maxRange) => { - name = readLatin1String(name); - // LLVM doesn't have signed and unsigned 32-bit types, so u32 literals come - // out as 'i32 -1'. Always treat those as max u32. - if (maxRange === -1) { - maxRange = 4294967295; - } - - var fromWireType = (value) => value; - - if (minRange === 0) { - var bitshift = 32 - 8*size; - fromWireType = (value) => (value << bitshift) >>> bitshift; - } - - var isUnsignedType = (name.includes('unsigned')); - var checkAssertions = (value, toTypeName) => { - if (typeof value != "number" && typeof value != "boolean") { - throw new TypeError(`Cannot convert "${embindRepr(value)}" to ${toTypeName}`); - } - if (value < minRange || value > maxRange) { - throw new TypeError(`Passing a number "${embindRepr(value)}" from JS side to C/C++ side to an argument of type "${name}", which is outside the valid range [${minRange}, ${maxRange}]!`); - } - } - var toWireType; - if (isUnsignedType) { - toWireType = function(destructors, value) { - checkAssertions(value, this.name); - return value >>> 0; - } - } else { - toWireType = function(destructors, value) { - checkAssertions(value, this.name); - // The VM will perform JS to Wasm value conversion, according to the spec: - // https://www.w3.org/TR/wasm-js-api-1/#towebassemblyvalue - return value; - } - } - registerType(primitiveType, { - name, - 'fromWireType': fromWireType, - 'toWireType': toWireType, - 'argPackAdvance': GenericWireTypeSize, - 'readValueFromPointer': integerReadValueFromPointer(name, size, minRange !== 0), - destructorFunction: null, // This type does not need a destructor - }); - }; - - - var __embind_register_memory_view = (rawType, dataTypeIndex, name) => { - var typeMapping = [ - Int8Array, - Uint8Array, - Int16Array, - Uint16Array, - Int32Array, - Uint32Array, - Float32Array, - Float64Array, - ]; - - var TA = typeMapping[dataTypeIndex]; - - function decodeMemoryView(handle) { - var size = HEAPU32[((handle)>>2)]; - var data = HEAPU32[(((handle)+(4))>>2)]; - return new TA(HEAP8.buffer, data, size); - } - - name = readLatin1String(name); - registerType(rawType, { - name, - 'fromWireType': decodeMemoryView, - 'argPackAdvance': GenericWireTypeSize, - 'readValueFromPointer': decodeMemoryView, - }, { - ignoreDuplicateRegistrations: true, - }); - }; - - - - /** @suppress {globalThis} */ - function readPointer(pointer) { - return this['fromWireType'](HEAPU32[((pointer)>>2)]); - } - - - var stringToUTF8Array = (str, heap, outIdx, maxBytesToWrite) => { - assert(typeof str === 'string', `stringToUTF8Array expects a string (got ${typeof str})`); - // Parameter maxBytesToWrite is not optional. Negative values, 0, null, - // undefined and false each don't write out any bytes. - if (!(maxBytesToWrite > 0)) - return 0; - - var startIdx = outIdx; - var endIdx = outIdx + maxBytesToWrite - 1; // -1 for string null terminator. - for (var i = 0; i < str.length; ++i) { - // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code - // unit, not a Unicode code point of the character! So decode - // UTF16->UTF32->UTF8. - // See http://unicode.org/faq/utf_bom.html#utf16-3 - // For UTF8 byte structure, see http://en.wikipedia.org/wiki/UTF-8#Description - // and https://www.ietf.org/rfc/rfc2279.txt - // and https://tools.ietf.org/html/rfc3629 - var u = str.charCodeAt(i); // possibly a lead surrogate - if (u >= 0xD800 && u <= 0xDFFF) { - var u1 = str.charCodeAt(++i); - u = 0x10000 + ((u & 0x3FF) << 10) | (u1 & 0x3FF); - } - if (u <= 0x7F) { - if (outIdx >= endIdx) break; - heap[outIdx++] = u; - } else if (u <= 0x7FF) { - if (outIdx + 1 >= endIdx) break; - heap[outIdx++] = 0xC0 | (u >> 6); - heap[outIdx++] = 0x80 | (u & 63); - } else if (u <= 0xFFFF) { - if (outIdx + 2 >= endIdx) break; - heap[outIdx++] = 0xE0 | (u >> 12); - heap[outIdx++] = 0x80 | ((u >> 6) & 63); - heap[outIdx++] = 0x80 | (u & 63); - } else { - if (outIdx + 3 >= endIdx) break; - if (u > 0x10FFFF) warnOnce('Invalid Unicode code point ' + ptrToString(u) + ' encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF).'); - heap[outIdx++] = 0xF0 | (u >> 18); - heap[outIdx++] = 0x80 | ((u >> 12) & 63); - heap[outIdx++] = 0x80 | ((u >> 6) & 63); - heap[outIdx++] = 0x80 | (u & 63); - } - } - // Null-terminate the pointer to the buffer. - heap[outIdx] = 0; - return outIdx - startIdx; - }; - var stringToUTF8 = (str, outPtr, maxBytesToWrite) => { - assert(typeof maxBytesToWrite == 'number', 'stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!'); - return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite); - }; - - var lengthBytesUTF8 = (str) => { - var len = 0; - for (var i = 0; i < str.length; ++i) { - // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code - // unit, not a Unicode code point of the character! So decode - // UTF16->UTF32->UTF8. - // See http://unicode.org/faq/utf_bom.html#utf16-3 - var c = str.charCodeAt(i); // possibly a lead surrogate - if (c <= 0x7F) { - len++; - } else if (c <= 0x7FF) { - len += 2; - } else if (c >= 0xD800 && c <= 0xDFFF) { - len += 4; ++i; - } else { - len += 3; - } - } - return len; - }; - - - - var UTF8Decoder = typeof TextDecoder != 'undefined' ? new TextDecoder('utf8') : undefined; - - /** - * Given a pointer 'idx' to a null-terminated UTF8-encoded string in the given - * array that contains uint8 values, returns a copy of that string as a - * Javascript String object. - * heapOrArray is either a regular array, or a JavaScript typed array view. - * @param {number} idx - * @param {number=} maxBytesToRead - * @return {string} - */ - var UTF8ArrayToString = (heapOrArray, idx, maxBytesToRead) => { - var endIdx = idx + maxBytesToRead; - var endPtr = idx; - // TextDecoder needs to know the byte length in advance, it doesn't stop on - // null terminator by itself. Also, use the length info to avoid running tiny - // strings through TextDecoder, since .subarray() allocates garbage. - // (As a tiny code save trick, compare endPtr against endIdx using a negation, - // so that undefined means Infinity) - while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr; - - if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) { - return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr)); - } - var str = ''; - // If building with TextDecoder, we have already computed the string length - // above, so test loop end condition against that - while (idx < endPtr) { - // For UTF8 byte structure, see: - // http://en.wikipedia.org/wiki/UTF-8#Description - // https://www.ietf.org/rfc/rfc2279.txt - // https://tools.ietf.org/html/rfc3629 - var u0 = heapOrArray[idx++]; - if (!(u0 & 0x80)) { str += String.fromCharCode(u0); continue; } - var u1 = heapOrArray[idx++] & 63; - if ((u0 & 0xE0) == 0xC0) { str += String.fromCharCode(((u0 & 31) << 6) | u1); continue; } - var u2 = heapOrArray[idx++] & 63; - if ((u0 & 0xF0) == 0xE0) { - u0 = ((u0 & 15) << 12) | (u1 << 6) | u2; - } else { - if ((u0 & 0xF8) != 0xF0) warnOnce('Invalid UTF-8 leading byte ' + ptrToString(u0) + ' encountered when deserializing a UTF-8 string in wasm memory to a JS string!'); - u0 = ((u0 & 7) << 18) | (u1 << 12) | (u2 << 6) | (heapOrArray[idx++] & 63); - } - - if (u0 < 0x10000) { - str += String.fromCharCode(u0); - } else { - var ch = u0 - 0x10000; - str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); - } - } - return str; - }; - - /** - * Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the - * emscripten HEAP, returns a copy of that string as a Javascript String object. - * - * @param {number} ptr - * @param {number=} maxBytesToRead - An optional length that specifies the - * maximum number of bytes to read. You can omit this parameter to scan the - * string until the first 0 byte. If maxBytesToRead is passed, and the string - * at [ptr, ptr+maxBytesToReadr[ contains a null byte in the middle, then the - * string will cut short at that byte index (i.e. maxBytesToRead will not - * produce a string of exact length [ptr, ptr+maxBytesToRead[) N.B. mixing - * frequent uses of UTF8ToString() with and without maxBytesToRead may throw - * JS JIT optimizations off, so it is worth to consider consistently using one - * @return {string} - */ - var UTF8ToString = (ptr, maxBytesToRead) => { - assert(typeof ptr == 'number', `UTF8ToString expects a number (got ${typeof ptr})`); - return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : ''; - }; - var __embind_register_std_string = (rawType, name) => { - name = readLatin1String(name); - var stdStringIsUTF8 - //process only std::string bindings with UTF8 support, in contrast to e.g. std::basic_string - = (name === "std::string"); - - registerType(rawType, { - name, - // For some method names we use string keys here since they are part of - // the public/external API and/or used by the runtime-generated code. - 'fromWireType'(value) { - var length = HEAPU32[((value)>>2)]; - var payload = value + 4; - - var str; - if (stdStringIsUTF8) { - var decodeStartPtr = payload; - // Looping here to support possible embedded '0' bytes - for (var i = 0; i <= length; ++i) { - var currentBytePtr = payload + i; - if (i == length || HEAPU8[currentBytePtr] == 0) { - var maxRead = currentBytePtr - decodeStartPtr; - var stringSegment = UTF8ToString(decodeStartPtr, maxRead); - if (str === undefined) { - str = stringSegment; - } else { - str += String.fromCharCode(0); - str += stringSegment; - } - decodeStartPtr = currentBytePtr + 1; - } - } - } else { - var a = new Array(length); - for (var i = 0; i < length; ++i) { - a[i] = String.fromCharCode(HEAPU8[payload + i]); - } - str = a.join(''); - } - - _free(value); - - return str; - }, - 'toWireType'(destructors, value) { - if (value instanceof ArrayBuffer) { - value = new Uint8Array(value); - } - - var length; - var valueIsOfTypeString = (typeof value == 'string'); - - if (!(valueIsOfTypeString || value instanceof Uint8Array || value instanceof Uint8ClampedArray || value instanceof Int8Array)) { - throwBindingError('Cannot pass non-string to std::string'); - } - if (stdStringIsUTF8 && valueIsOfTypeString) { - length = lengthBytesUTF8(value); - } else { - length = value.length; - } - - // assumes 4-byte alignment - var base = _malloc(4 + length + 1); - var ptr = base + 4; - HEAPU32[((base)>>2)] = length; - if (stdStringIsUTF8 && valueIsOfTypeString) { - stringToUTF8(value, ptr, length + 1); - } else { - if (valueIsOfTypeString) { - for (var i = 0; i < length; ++i) { - var charCode = value.charCodeAt(i); - if (charCode > 255) { - _free(ptr); - throwBindingError('String has UTF-16 code units that do not fit in 8 bits'); - } - HEAPU8[ptr + i] = charCode; - } - } else { - for (var i = 0; i < length; ++i) { - HEAPU8[ptr + i] = value[i]; - } - } - } - - if (destructors !== null) { - destructors.push(_free, base); - } - return base; - }, - 'argPackAdvance': GenericWireTypeSize, - 'readValueFromPointer': readPointer, - destructorFunction(ptr) { - _free(ptr); - }, - }); - }; - - - - - var UTF16Decoder = typeof TextDecoder != 'undefined' ? new TextDecoder('utf-16le') : undefined;; - var UTF16ToString = (ptr, maxBytesToRead) => { - assert(ptr % 2 == 0, 'Pointer passed to UTF16ToString must be aligned to two bytes!'); - var endPtr = ptr; - // TextDecoder needs to know the byte length in advance, it doesn't stop on - // null terminator by itself. - // Also, use the length info to avoid running tiny strings through - // TextDecoder, since .subarray() allocates garbage. - var idx = endPtr >> 1; - var maxIdx = idx + maxBytesToRead / 2; - // If maxBytesToRead is not passed explicitly, it will be undefined, and this - // will always evaluate to true. This saves on code size. - while (!(idx >= maxIdx) && HEAPU16[idx]) ++idx; - endPtr = idx << 1; - - if (endPtr - ptr > 32 && UTF16Decoder) - return UTF16Decoder.decode(HEAPU8.subarray(ptr, endPtr)); - - // Fallback: decode without UTF16Decoder - var str = ''; - - // If maxBytesToRead is not passed explicitly, it will be undefined, and the - // for-loop's condition will always evaluate to true. The loop is then - // terminated on the first null char. - for (var i = 0; !(i >= maxBytesToRead / 2); ++i) { - var codeUnit = HEAP16[(((ptr)+(i*2))>>1)]; - if (codeUnit == 0) break; - // fromCharCode constructs a character from a UTF-16 code unit, so we can - // pass the UTF16 string right through. - str += String.fromCharCode(codeUnit); - } - - return str; - }; - - var stringToUTF16 = (str, outPtr, maxBytesToWrite) => { - assert(outPtr % 2 == 0, 'Pointer passed to stringToUTF16 must be aligned to two bytes!'); - assert(typeof maxBytesToWrite == 'number', 'stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!'); - // Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed. - maxBytesToWrite ??= 0x7FFFFFFF; - if (maxBytesToWrite < 2) return 0; - maxBytesToWrite -= 2; // Null terminator. - var startPtr = outPtr; - var numCharsToWrite = (maxBytesToWrite < str.length*2) ? (maxBytesToWrite / 2) : str.length; - for (var i = 0; i < numCharsToWrite; ++i) { - // charCodeAt returns a UTF-16 encoded code unit, so it can be directly written to the HEAP. - var codeUnit = str.charCodeAt(i); // possibly a lead surrogate - HEAP16[((outPtr)>>1)] = codeUnit; - outPtr += 2; - } - // Null-terminate the pointer to the HEAP. - HEAP16[((outPtr)>>1)] = 0; - return outPtr - startPtr; - }; - - var lengthBytesUTF16 = (str) => { - return str.length*2; - }; - - var UTF32ToString = (ptr, maxBytesToRead) => { - assert(ptr % 4 == 0, 'Pointer passed to UTF32ToString must be aligned to four bytes!'); - var i = 0; - - var str = ''; - // If maxBytesToRead is not passed explicitly, it will be undefined, and this - // will always evaluate to true. This saves on code size. - while (!(i >= maxBytesToRead / 4)) { - var utf32 = HEAP32[(((ptr)+(i*4))>>2)]; - if (utf32 == 0) break; - ++i; - // Gotcha: fromCharCode constructs a character from a UTF-16 encoded code (pair), not from a Unicode code point! So encode the code point to UTF-16 for constructing. - // See http://unicode.org/faq/utf_bom.html#utf16-3 - if (utf32 >= 0x10000) { - var ch = utf32 - 0x10000; - str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); - } else { - str += String.fromCharCode(utf32); - } - } - return str; - }; - - var stringToUTF32 = (str, outPtr, maxBytesToWrite) => { - assert(outPtr % 4 == 0, 'Pointer passed to stringToUTF32 must be aligned to four bytes!'); - assert(typeof maxBytesToWrite == 'number', 'stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!'); - // Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed. - maxBytesToWrite ??= 0x7FFFFFFF; - if (maxBytesToWrite < 4) return 0; - var startPtr = outPtr; - var endPtr = startPtr + maxBytesToWrite - 4; - for (var i = 0; i < str.length; ++i) { - // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap. - // See http://unicode.org/faq/utf_bom.html#utf16-3 - var codeUnit = str.charCodeAt(i); // possibly a lead surrogate - if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) { - var trailSurrogate = str.charCodeAt(++i); - codeUnit = 0x10000 + ((codeUnit & 0x3FF) << 10) | (trailSurrogate & 0x3FF); - } - HEAP32[((outPtr)>>2)] = codeUnit; - outPtr += 4; - if (outPtr + 4 > endPtr) break; - } - // Null-terminate the pointer to the HEAP. - HEAP32[((outPtr)>>2)] = 0; - return outPtr - startPtr; - }; - - var lengthBytesUTF32 = (str) => { - var len = 0; - for (var i = 0; i < str.length; ++i) { - // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap. - // See http://unicode.org/faq/utf_bom.html#utf16-3 - var codeUnit = str.charCodeAt(i); - if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) ++i; // possibly a lead surrogate, so skip over the tail surrogate. - len += 4; - } - - return len; - }; - var __embind_register_std_wstring = (rawType, charSize, name) => { - name = readLatin1String(name); - var decodeString, encodeString, getHeap, lengthBytesUTF, shift; - if (charSize === 2) { - decodeString = UTF16ToString; - encodeString = stringToUTF16; - lengthBytesUTF = lengthBytesUTF16; - getHeap = () => HEAPU16; - shift = 1; - } else if (charSize === 4) { - decodeString = UTF32ToString; - encodeString = stringToUTF32; - lengthBytesUTF = lengthBytesUTF32; - getHeap = () => HEAPU32; - shift = 2; - } - registerType(rawType, { - name, - 'fromWireType': (value) => { - // Code mostly taken from _embind_register_std_string fromWireType - var length = HEAPU32[((value)>>2)]; - var HEAP = getHeap(); - var str; - - var decodeStartPtr = value + 4; - // Looping here to support possible embedded '0' bytes - for (var i = 0; i <= length; ++i) { - var currentBytePtr = value + 4 + i * charSize; - if (i == length || HEAP[currentBytePtr >> shift] == 0) { - var maxReadBytes = currentBytePtr - decodeStartPtr; - var stringSegment = decodeString(decodeStartPtr, maxReadBytes); - if (str === undefined) { - str = stringSegment; - } else { - str += String.fromCharCode(0); - str += stringSegment; - } - decodeStartPtr = currentBytePtr + charSize; - } - } - - _free(value); - - return str; - }, - 'toWireType': (destructors, value) => { - if (!(typeof value == 'string')) { - throwBindingError(`Cannot pass non-string to C++ string type ${name}`); - } - - // assumes 4-byte alignment - var length = lengthBytesUTF(value); - var ptr = _malloc(4 + length + charSize); - HEAPU32[ptr >> 2] = length >> shift; - - encodeString(value, ptr + 4, length + charSize); - - if (destructors !== null) { - destructors.push(_free, ptr); - } - return ptr; - }, - 'argPackAdvance': GenericWireTypeSize, - 'readValueFromPointer': simpleReadValueFromPointer, - destructorFunction(ptr) { - _free(ptr); - } - }); - }; - - - - var __embind_register_value_object = ( - rawType, - name, - constructorSignature, - rawConstructor, - destructorSignature, - rawDestructor - ) => { - structRegistrations[rawType] = { - name: readLatin1String(name), - rawConstructor: embind__requireFunction(constructorSignature, rawConstructor), - rawDestructor: embind__requireFunction(destructorSignature, rawDestructor), - fields: [], - }; - }; - - - - var __embind_register_value_object_field = ( - structType, - fieldName, - getterReturnType, - getterSignature, - getter, - getterContext, - setterArgumentType, - setterSignature, - setter, - setterContext - ) => { - structRegistrations[structType].fields.push({ - fieldName: readLatin1String(fieldName), - getterReturnType, - getter: embind__requireFunction(getterSignature, getter), - getterContext, - setterArgumentType, - setter: embind__requireFunction(setterSignature, setter), - setterContext, - }); - }; - - - var __embind_register_void = (rawType, name) => { - name = readLatin1String(name); - registerType(rawType, { - isVoid: true, // void return values can be optimized out sometimes - name, - 'argPackAdvance': 0, - 'fromWireType': () => undefined, - // TODO: assert if anything else is given? - 'toWireType': (destructors, o) => undefined, - }); - }; - - var emval_methodCallers = []; - - var __emval_call = (caller, handle, destructorsRef, args) => { - caller = emval_methodCallers[caller]; - handle = Emval.toValue(handle); - return caller(null, handle, destructorsRef, args); - }; - - - - var emval_symbols = { - }; - - var getStringOrSymbol = (address) => { - var symbol = emval_symbols[address]; - if (symbol === undefined) { - return readLatin1String(address); - } - return symbol; - }; - - var emval_get_global = () => { - if (typeof globalThis == 'object') { - return globalThis; - } - return (function(){ - return Function; - })()('return this')(); - }; - var __emval_get_global = (name) => { - if (name===0) { - return Emval.toHandle(emval_get_global()); - } else { - name = getStringOrSymbol(name); - return Emval.toHandle(emval_get_global()[name]); - } - }; - - var emval_addMethodCaller = (caller) => { - var id = emval_methodCallers.length; - emval_methodCallers.push(caller); - return id; - }; - - var emval_lookupTypes = (argCount, argTypes) => { - var a = new Array(argCount); - for (var i = 0; i < argCount; ++i) { - a[i] = requireRegisteredType(HEAPU32[(((argTypes)+(i * 4))>>2)], - "parameter " + i); - } - return a; - }; - - - var reflectConstruct = Reflect.construct; - - var emval_returnValue = (returnType, destructorsRef, handle) => { - var destructors = []; - var result = returnType['toWireType'](destructors, handle); - if (destructors.length) { - // void, primitives and any other types w/o destructors don't need to allocate a handle - HEAPU32[((destructorsRef)>>2)] = Emval.toHandle(destructors); - } - return result; - }; - - var __emval_get_method_caller = (argCount, argTypes, kind) => { - var types = emval_lookupTypes(argCount, argTypes); - var retType = types.shift(); - argCount--; // remove the shifted off return type - - var functionBody = - `return function (obj, func, destructorsRef, args) {\n`; - - var offset = 0; - var argsList = []; // 'obj?, arg0, arg1, arg2, ... , argN' - if (kind === /* FUNCTION */ 0) { - argsList.push("obj"); - } - var params = ["retType"]; - var args = [retType]; - for (var i = 0; i < argCount; ++i) { - argsList.push("arg" + i); - params.push("argType" + i); - args.push(types[i]); - functionBody += - ` var arg${i} = argType${i}.readValueFromPointer(args${offset ? "+" + offset : ""});\n`; - offset += types[i]['argPackAdvance']; - } - var invoker = kind === /* CONSTRUCTOR */ 1 ? 'new func' : 'func.call'; - functionBody += - ` var rv = ${invoker}(${argsList.join(", ")});\n`; - for (var i = 0; i < argCount; ++i) { - if (types[i]['deleteObject']) { - functionBody += - ` argType${i}.deleteObject(arg${i});\n`; - } - } - if (!retType.isVoid) { - params.push("emval_returnValue"); - args.push(emval_returnValue); - functionBody += - " return emval_returnValue(retType, destructorsRef, rv);\n"; - } - functionBody += - "};\n"; - - params.push(functionBody); - var invokerFunction = newFunc(Function, params).apply(null, args); - var functionName = `methodCaller<(${types.map(t => t.name).join(', ')}) => ${retType.name}>`; - return emval_addMethodCaller(createNamedFunction(functionName, invokerFunction)); - }; - - var __emval_incref = (handle) => { - if (handle > 4) { - emval_handles.get(handle).refcount += 1; - } - }; - - - - var __emval_run_destructors = (handle) => { - var destructors = Emval.toValue(handle); - runDestructors(destructors); - __emval_decref(handle); - }; - - var _abort = () => { - abort('native code called abort()'); - }; - - var _emscripten_memcpy_js = (dest, src, num) => HEAPU8.copyWithin(dest, src, src + num); - - var getHeapMax = () => - HEAPU8.length; - - var abortOnCannotGrowMemory = (requestedSize) => { - abort(`Cannot enlarge memory arrays to size ${requestedSize} bytes (OOM). Either (1) compile with -sINITIAL_MEMORY=X with X higher than the current value ${HEAP8.length}, (2) compile with -sALLOW_MEMORY_GROWTH which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -sABORTING_MALLOC=0`); - }; - var _emscripten_resize_heap = (requestedSize) => { - var oldSize = HEAPU8.length; - // With CAN_ADDRESS_2GB or MEMORY64, pointers are already unsigned. - requestedSize >>>= 0; - abortOnCannotGrowMemory(requestedSize); - }; - - var SYSCALLS = { - varargs:undefined, - get() { - assert(SYSCALLS.varargs != undefined); - // the `+` prepended here is necessary to convince the JSCompiler that varargs is indeed a number. - var ret = HEAP32[((+SYSCALLS.varargs)>>2)]; - SYSCALLS.varargs += 4; - return ret; - }, - getp() { return SYSCALLS.get() }, - getStr(ptr) { - var ret = UTF8ToString(ptr); - return ret; - }, - }; - var _fd_close = (fd) => { - abort('fd_close called without SYSCALLS_REQUIRE_FILESYSTEM'); - }; - - - var convertI32PairToI53Checked = (lo, hi) => { - assert(lo == (lo >>> 0) || lo == (lo|0)); // lo should either be a i32 or a u32 - assert(hi === (hi|0)); // hi should be a i32 - return ((hi + 0x200000) >>> 0 < 0x400001 - !!lo) ? (lo >>> 0) + hi * 4294967296 : NaN; - }; - function _fd_seek(fd,offset_low, offset_high,whence,newOffset) { - var offset = convertI32PairToI53Checked(offset_low, offset_high);; - - - return 70; - ; - } - - var printCharBuffers = [null,[],[]]; - - var printChar = (stream, curr) => { - var buffer = printCharBuffers[stream]; - assert(buffer); - if (curr === 0 || curr === 10) { - (stream === 1 ? out : err)(UTF8ArrayToString(buffer, 0)); - buffer.length = 0; - } else { - buffer.push(curr); - } - }; - - var flush_NO_FILESYSTEM = () => { - // flush anything remaining in the buffers during shutdown - _fflush(0); - if (printCharBuffers[1].length) printChar(1, 10); - if (printCharBuffers[2].length) printChar(2, 10); - }; - - - var _fd_write = (fd, iov, iovcnt, pnum) => { - // hack to support printf in SYSCALLS_REQUIRE_FILESYSTEM=0 - var num = 0; - for (var i = 0; i < iovcnt; i++) { - var ptr = HEAPU32[((iov)>>2)]; - var len = HEAPU32[(((iov)+(4))>>2)]; - iov += 8; - for (var j = 0; j < len; j++) { - printChar(fd, HEAPU8[ptr+j]); - } - num += len; - } - HEAPU32[((pnum)>>2)] = num; - return 0; - }; -InternalError = Module['InternalError'] = class InternalError extends Error { constructor(message) { super(message); this.name = 'InternalError'; }}; -embind_init_charCodes(); -BindingError = Module['BindingError'] = class BindingError extends Error { constructor(message) { super(message); this.name = 'BindingError'; }}; -handleAllocatorInit(); -init_emval();; -UnboundTypeError = Module['UnboundTypeError'] = extendError(Error, 'UnboundTypeError');; -function checkIncomingModuleAPI() { - ignoredModuleProp('fetchSettings'); -} -var wasmImports = { - /** @export */ - _embind_finalize_value_object: __embind_finalize_value_object, - /** @export */ - _embind_register_bigint: __embind_register_bigint, - /** @export */ - _embind_register_bool: __embind_register_bool, - /** @export */ - _embind_register_emval: __embind_register_emval, - /** @export */ - _embind_register_enum: __embind_register_enum, - /** @export */ - _embind_register_enum_value: __embind_register_enum_value, - /** @export */ - _embind_register_float: __embind_register_float, - /** @export */ - _embind_register_function: __embind_register_function, - /** @export */ - _embind_register_integer: __embind_register_integer, - /** @export */ - _embind_register_memory_view: __embind_register_memory_view, - /** @export */ - _embind_register_std_string: __embind_register_std_string, - /** @export */ - _embind_register_std_wstring: __embind_register_std_wstring, - /** @export */ - _embind_register_value_object: __embind_register_value_object, - /** @export */ - _embind_register_value_object_field: __embind_register_value_object_field, - /** @export */ - _embind_register_void: __embind_register_void, - /** @export */ - _emval_call: __emval_call, - /** @export */ - _emval_decref: __emval_decref, - /** @export */ - _emval_get_global: __emval_get_global, - /** @export */ - _emval_get_method_caller: __emval_get_method_caller, - /** @export */ - _emval_incref: __emval_incref, - /** @export */ - _emval_run_destructors: __emval_run_destructors, - /** @export */ - abort: _abort, - /** @export */ - emscripten_memcpy_js: _emscripten_memcpy_js, - /** @export */ - emscripten_resize_heap: _emscripten_resize_heap, - /** @export */ - fd_close: _fd_close, - /** @export */ - fd_seek: _fd_seek, - /** @export */ - fd_write: _fd_write -}; -var wasmExports = createWasm(); -var ___wasm_call_ctors = createExportWrapper('__wasm_call_ctors'); -var _malloc = createExportWrapper('malloc'); -var _free = createExportWrapper('free'); -var ___getTypeName = createExportWrapper('__getTypeName'); -var ___errno_location = createExportWrapper('__errno_location'); -var _fflush = Module['_fflush'] = createExportWrapper('fflush'); -var _emscripten_stack_init = () => (_emscripten_stack_init = wasmExports['emscripten_stack_init'])(); -var _emscripten_stack_get_free = () => (_emscripten_stack_get_free = wasmExports['emscripten_stack_get_free'])(); -var _emscripten_stack_get_base = () => (_emscripten_stack_get_base = wasmExports['emscripten_stack_get_base'])(); -var _emscripten_stack_get_end = () => (_emscripten_stack_get_end = wasmExports['emscripten_stack_get_end'])(); -var stackSave = createExportWrapper('stackSave'); -var stackRestore = createExportWrapper('stackRestore'); -var stackAlloc = createExportWrapper('stackAlloc'); -var _emscripten_stack_get_current = () => (_emscripten_stack_get_current = wasmExports['emscripten_stack_get_current'])(); -var ___cxa_is_pointer_type = createExportWrapper('__cxa_is_pointer_type'); -var dynCall_jiiii = Module['dynCall_jiiii'] = createExportWrapper('dynCall_jiiii'); -var dynCall_jiji = Module['dynCall_jiji'] = createExportWrapper('dynCall_jiji'); - - -// include: postamble.js -// === Auto-generated postamble setup entry stuff === - -var missingLibrarySymbols = [ - 'writeI53ToI64', - 'writeI53ToI64Clamped', - 'writeI53ToI64Signaling', - 'writeI53ToU64Clamped', - 'writeI53ToU64Signaling', - 'readI53FromI64', - 'readI53FromU64', - 'convertI32PairToI53', - 'convertU32PairToI53', - 'zeroMemory', - 'exitJS', - 'growMemory', - 'isLeapYear', - 'ydayFromDate', - 'arraySum', - 'addDays', - 'setErrNo', - 'inetPton4', - 'inetNtop4', - 'inetPton6', - 'inetNtop6', - 'readSockaddr', - 'writeSockaddr', - 'getHostByName', - 'initRandomFill', - 'randomFill', - 'getCallstack', - 'emscriptenLog', - 'convertPCtoSourceLocation', - 'readEmAsmArgs', - 'jstoi_q', - 'jstoi_s', - 'getExecutableName', - 'listenOnce', - 'autoResumeAudioContext', - 'handleException', - 'keepRuntimeAlive', - 'runtimeKeepalivePush', - 'runtimeKeepalivePop', - 'callUserCallback', - 'maybeExit', - 'asmjsMangle', - 'asyncLoad', - 'alignMemory', - 'mmapAlloc', - 'getNativeTypeSize', - 'STACK_SIZE', - 'STACK_ALIGN', - 'POINTER_SIZE', - 'ASSERTIONS', - 'getCFunc', - 'ccall', - 'cwrap', - 'uleb128Encode', - 'sigToWasmTypes', - 'generateFuncType', - 'convertJsFunctionToWasm', - 'getEmptyTableSlot', - 'updateTableMap', - 'getFunctionAddress', - 'addFunction', - 'removeFunction', - 'reallyNegative', - 'unSign', - 'strLen', - 'reSign', - 'formatString', - 'intArrayFromString', - 'intArrayToString', - 'AsciiToString', - 'stringToAscii', - 'stringToNewUTF8', - 'stringToUTF8OnStack', - 'writeArrayToMemory', - 'registerKeyEventCallback', - 'maybeCStringToJsString', - 'findEventTarget', - 'findCanvasEventTarget', - 'getBoundingClientRect', - 'fillMouseEventData', - 'registerMouseEventCallback', - 'registerWheelEventCallback', - 'registerUiEventCallback', - 'registerFocusEventCallback', - 'fillDeviceOrientationEventData', - 'registerDeviceOrientationEventCallback', - 'fillDeviceMotionEventData', - 'registerDeviceMotionEventCallback', - 'screenOrientation', - 'fillOrientationChangeEventData', - 'registerOrientationChangeEventCallback', - 'fillFullscreenChangeEventData', - 'registerFullscreenChangeEventCallback', - 'JSEvents_requestFullscreen', - 'JSEvents_resizeCanvasForFullscreen', - 'registerRestoreOldStyle', - 'hideEverythingExceptGivenElement', - 'restoreHiddenElements', - 'setLetterbox', - 'softFullscreenResizeWebGLRenderTarget', - 'doRequestFullscreen', - 'fillPointerlockChangeEventData', - 'registerPointerlockChangeEventCallback', - 'registerPointerlockErrorEventCallback', - 'requestPointerLock', - 'fillVisibilityChangeEventData', - 'registerVisibilityChangeEventCallback', - 'registerTouchEventCallback', - 'fillGamepadEventData', - 'registerGamepadEventCallback', - 'disableGamepadApiIfItThrows', - 'registerBeforeUnloadEventCallback', - 'fillBatteryEventData', - 'battery', - 'registerBatteryEventCallback', - 'setCanvasElementSize', - 'getCanvasElementSize', - 'demangle', - 'demangleAll', - 'jsStackTrace', - 'stackTrace', - 'getEnvStrings', - 'checkWasiClock', - 'wasiRightsToMuslOFlags', - 'wasiOFlagsToMuslOFlags', - 'createDyncallWrapper', - 'safeSetTimeout', - 'setImmediateWrapped', - 'clearImmediateWrapped', - 'polyfillSetImmediate', - 'getPromise', - 'makePromise', - 'idsToPromises', - 'makePromiseCallback', - 'ExceptionInfo', - 'findMatchingCatch', - 'Browser_asyncPrepareDataCounter', - 'setMainLoop', - 'getSocketFromFD', - 'getSocketAddress', - 'FS_createPreloadedFile', - 'FS_modeStringToFlags', - 'FS_getMode', - 'FS_stdin_getChar', - 'FS_createDataFile', - 'FS_unlink', - 'FS_mkdirTree', - '_setNetworkCallback', - 'heapObjectForWebGLType', - 'heapAccessShiftForWebGLHeap', - 'webgl_enable_ANGLE_instanced_arrays', - 'webgl_enable_OES_vertex_array_object', - 'webgl_enable_WEBGL_draw_buffers', - 'webgl_enable_WEBGL_multi_draw', - 'emscriptenWebGLGet', - 'computeUnpackAlignedImageSize', - 'colorChannelsInGlTextureFormat', - 'emscriptenWebGLGetTexPixelData', - '__glGenObject', - 'emscriptenWebGLGetUniform', - 'webglGetUniformLocation', - 'webglPrepareUniformLocationsBeforeFirstUse', - 'webglGetLeftBracePos', - 'emscriptenWebGLGetVertexAttrib', - '__glGetActiveAttribOrUniform', - 'writeGLArray', - 'registerWebGlEventCallback', - 'runAndAbortIfError', - 'SDL_unicode', - 'SDL_ttfContext', - 'SDL_audio', - 'ALLOC_NORMAL', - 'ALLOC_STACK', - 'allocate', - 'writeStringToMemory', - 'writeAsciiToMemory', - 'getFunctionArgsName', - 'init_embind', - 'getBasestPointer', - 'registerInheritedInstance', - 'unregisterInheritedInstance', - 'getInheritedInstance', - 'getInheritedInstanceCount', - 'getLiveInheritedInstances', - 'genericPointerToWireType', - 'constNoSmartPtrRawPointerToWireType', - 'nonConstNoSmartPtrRawPointerToWireType', - 'init_RegisteredPointer', - 'RegisteredPointer', - 'RegisteredPointer_fromWireType', - 'runDestructor', - 'releaseClassHandle', - 'detachFinalizer', - 'attachFinalizer', - 'makeClassHandle', - 'init_ClassHandle', - 'ClassHandle', - 'throwInstanceAlreadyDeleted', - 'flushPendingDeletes', - 'setDelayFunction', - 'RegisteredClass', - 'shallowCopyInternalPointer', - 'downcastPointer', - 'upcastPointer', - 'validateThis', - 'char_0', - 'char_9', - 'makeLegalFunctionName', -]; -missingLibrarySymbols.forEach(missingLibrarySymbol) - -var unexportedSymbols = [ - 'run', - 'addOnPreRun', - 'addOnInit', - 'addOnPreMain', - 'addOnExit', - 'addOnPostRun', - 'addRunDependency', - 'removeRunDependency', - 'FS_createFolder', - 'FS_createPath', - 'FS_createLazyFile', - 'FS_createLink', - 'FS_createDevice', - 'FS_readFile', - 'out', - 'err', - 'callMain', - 'abort', - 'wasmMemory', - 'wasmExports', - 'stackAlloc', - 'stackSave', - 'stackRestore', - 'getTempRet0', - 'setTempRet0', - 'writeStackCookie', - 'checkStackCookie', - 'convertI32PairToI53Checked', - 'ptrToString', - 'getHeapMax', - 'abortOnCannotGrowMemory', - 'ENV', - 'MONTH_DAYS_REGULAR', - 'MONTH_DAYS_LEAP', - 'MONTH_DAYS_REGULAR_CUMULATIVE', - 'MONTH_DAYS_LEAP_CUMULATIVE', - 'ERRNO_CODES', - 'ERRNO_MESSAGES', - 'DNS', - 'Protocols', - 'Sockets', - 'timers', - 'warnOnce', - 'UNWIND_CACHE', - 'readEmAsmArgsArray', - 'dynCallLegacy', - 'getDynCaller', - 'dynCall', - 'handleAllocatorInit', - 'HandleAllocator', - 'wasmTable', - 'noExitRuntime', - 'freeTableIndexes', - 'functionsInTableMap', - 'setValue', - 'getValue', - 'PATH', - 'PATH_FS', - 'UTF8Decoder', - 'UTF8ArrayToString', - 'UTF8ToString', - 'stringToUTF8Array', - 'stringToUTF8', - 'lengthBytesUTF8', - 'UTF16Decoder', - 'UTF16ToString', - 'stringToUTF16', - 'lengthBytesUTF16', - 'UTF32ToString', - 'stringToUTF32', - 'lengthBytesUTF32', - 'JSEvents', - 'specialHTMLTargets', - 'currentFullscreenStrategy', - 'restoreOldWindowedStyle', - 'ExitStatus', - 'flush_NO_FILESYSTEM', - 'promiseMap', - 'uncaughtExceptionCount', - 'exceptionLast', - 'exceptionCaught', - 'Browser', - 'wget', - 'SYSCALLS', - 'preloadPlugins', - 'FS_stdin_getChar_buffer', - 'FS', - 'MEMFS', - 'TTY', - 'PIPEFS', - 'SOCKFS', - 'tempFixedLengthArray', - 'miniTempWebGLFloatBuffers', - 'miniTempWebGLIntBuffers', - 'GL', - 'emscripten_webgl_power_preferences', - 'AL', - 'GLUT', - 'EGL', - 'GLEW', - 'IDBStore', - 'SDL', - 'SDL_gfx', - 'allocateUTF8', - 'allocateUTF8OnStack', - 'InternalError', - 'BindingError', - 'throwInternalError', - 'throwBindingError', - 'registeredTypes', - 'awaitingDependencies', - 'typeDependencies', - 'tupleRegistrations', - 'structRegistrations', - 'sharedRegisterType', - 'whenDependentTypesAreResolved', - 'embind_charCodes', - 'embind_init_charCodes', - 'readLatin1String', - 'getTypeName', - 'getFunctionName', - 'heap32VectorToArray', - 'requireRegisteredType', - 'usesDestructorStack', - 'createJsInvoker', - 'UnboundTypeError', - 'PureVirtualError', - 'GenericWireTypeSize', - 'throwUnboundTypeError', - 'ensureOverloadTable', - 'exposePublicSymbol', - 'replacePublicSymbol', - 'extendError', - 'createNamedFunction', - 'embindRepr', - 'registeredInstances', - 'registeredPointers', - 'registerType', - 'integerReadValueFromPointer', - 'enumReadValueFromPointer', - 'floatReadValueFromPointer', - 'simpleReadValueFromPointer', - 'readPointer', - 'runDestructors', - 'newFunc', - 'craftInvokerFunction', - 'embind__requireFunction', - 'finalizationRegistry', - 'detachFinalizer_deps', - 'deletionQueue', - 'delayFunction', - 'emval_handles', - 'emval_symbols', - 'init_emval', - 'count_emval_handles', - 'getStringOrSymbol', - 'Emval', - 'emval_get_global', - 'emval_returnValue', - 'emval_lookupTypes', - 'emval_methodCallers', - 'emval_addMethodCaller', - 'reflectConstruct', -]; -unexportedSymbols.forEach(unexportedRuntimeSymbol); - - - -var calledRun; - -dependenciesFulfilled = function runCaller() { - // If run has never been called, and we should call run (INVOKE_RUN is true, and Module.noInitialRun is not false) - if (!calledRun) run(); - if (!calledRun) dependenciesFulfilled = runCaller; // try this again later, after new deps are fulfilled -}; - -function stackCheckInit() { - // This is normally called automatically during __wasm_call_ctors but need to - // get these values before even running any of the ctors so we call it redundantly - // here. - _emscripten_stack_init(); - // TODO(sbc): Move writeStackCookie to native to to avoid this. - writeStackCookie(); -} - -function run() { - - if (runDependencies > 0) { - return; - } - - stackCheckInit(); - - preRun(); - - // a preRun added a dependency, run will be called later - if (runDependencies > 0) { - return; - } - - function doRun() { - // run may have just been called through dependencies being fulfilled just in this very frame, - // or while the async setStatus time below was happening - if (calledRun) return; - calledRun = true; - Module['calledRun'] = true; - - if (ABORT) return; - - initRuntime(); - - readyPromiseResolve(Module); - if (Module['onRuntimeInitialized']) Module['onRuntimeInitialized'](); - - assert(!Module['_main'], 'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]'); - - postRun(); - } - - if (Module['setStatus']) { - Module['setStatus']('Running...'); - setTimeout(function() { - setTimeout(function() { - Module['setStatus'](''); - }, 1); - doRun(); - }, 1); - } else - { - doRun(); - } - checkStackCookie(); -} - -function checkUnflushedContent() { - // Compiler settings do not allow exiting the runtime, so flushing - // the streams is not possible. but in ASSERTIONS mode we check - // if there was something to flush, and if so tell the user they - // should request that the runtime be exitable. - // Normally we would not even include flush() at all, but in ASSERTIONS - // builds we do so just for this check, and here we see if there is any - // content to flush, that is, we check if there would have been - // something a non-ASSERTIONS build would have not seen. - // How we flush the streams depends on whether we are in SYSCALLS_REQUIRE_FILESYSTEM=0 - // mode (which has its own special function for this; otherwise, all - // the code is inside libc) - var oldOut = out; - var oldErr = err; - var has = false; - out = err = (x) => { - has = true; - } - try { // it doesn't matter if it fails - flush_NO_FILESYSTEM(); - } catch(e) {} - out = oldOut; - err = oldErr; - if (has) { - warnOnce('stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the Emscripten FAQ), or make sure to emit a newline when you printf etc.'); - warnOnce('(this may also be due to not including full filesystem support - try building with -sFORCE_FILESYSTEM)'); - } -} - -if (Module['preInit']) { - if (typeof Module['preInit'] == 'function') Module['preInit'] = [Module['preInit']]; - while (Module['preInit'].length > 0) { - Module['preInit'].pop()(); - } -} - -run(); - - -// end include: postamble.js - - - return moduleArg.ready -} -); -})(); -; -export default Module; \ No newline at end of file diff --git a/codecs/webp/wasm_build/enc/webp_enc.wasm b/codecs/webp/wasm_build/enc/webp_enc.wasm deleted file mode 100755 index bc64905d4a70c06ae675bf9e727d0283ff248782..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 309467 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%0D%W=JYX%bbAgF7amM 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

`O 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 EKm4fdk^lez diff --git a/codecs/webp/wasm_build/simd/dec/README.md b/codecs/webp/wasm_build/simd/dec/README.md new file mode 100644 index 000000000..00234833f --- /dev/null +++ b/codecs/webp/wasm_build/simd/dec/README.md @@ -0,0 +1,18 @@ +# WebP decoder + +- Source: +- Version: v1.0.2 + +## Example + +See `example.html` + +## API + +### `int version()` + +Returns the version of libwebp as a number. va.b.c is encoded as 0x0a0b0c + +### `RawImage decode(std::string buffer)` + +Decodes the given webp buffer into raw RGBA. `RawImage` is a class with 3 fields: `buffer`, `width`, and `height`. diff --git a/codecs/webp/wasm_build/simd/dec/example.html b/codecs/webp/wasm_build/simd/dec/example.html new file mode 100644 index 000000000..64eb175f0 --- /dev/null +++ b/codecs/webp/wasm_build/simd/dec/example.html @@ -0,0 +1,20 @@ + + + diff --git a/codecs/webp/wasm_build/simd/dec/webp_dec.cpp b/codecs/webp/wasm_build/simd/dec/webp_dec.cpp new file mode 100644 index 000000000..d1731a72b --- /dev/null +++ b/codecs/webp/wasm_build/simd/dec/webp_dec.cpp @@ -0,0 +1,29 @@ +#include +#include "emscripten/bind.h" +#include "emscripten/val.h" +#include "webp/decode.h" +#include "webp/demux.h" + +using namespace emscripten; + +int version() { + return WebPGetDecoderVersion(); +} + +thread_local const val Uint8ClampedArray = val::global("Uint8ClampedArray"); +thread_local const val ImageData = val::global("ImageData"); + +val decode(std::string buffer) { + int width, height; + std::unique_ptr rgba( + WebPDecodeRGBA((const uint8_t*)buffer.c_str(), buffer.size(), &width, &height)); + return rgba ? ImageData.new_( + Uint8ClampedArray.new_(typed_memory_view(width * height * 4, rgba.get())), + width, height) + : val::null(); +} + +EMSCRIPTEN_BINDINGS(my_module) { + function("decode", &decode); + function("version", &version); +} diff --git a/codecs/webp/wasm_build/simd/dec/webp_dec.d.ts b/codecs/webp/wasm_build/simd/dec/webp_dec.d.ts new file mode 100644 index 000000000..ff6a59743 --- /dev/null +++ b/codecs/webp/wasm_build/simd/dec/webp_dec.d.ts @@ -0,0 +1,7 @@ +export interface WebPModule extends EmscriptenWasm.Module { + decode(data: BufferSource): ImageData | null; +} + +declare var moduleFactory: EmscriptenWasm.ModuleFactory; + +export default moduleFactory; diff --git a/codecs/webp/wasm_build/simd/dec/webp_dec.js b/codecs/webp/wasm_build/simd/dec/webp_dec.js new file mode 100644 index 000000000..c14bbc025 --- /dev/null +++ b/codecs/webp/wasm_build/simd/dec/webp_dec.js @@ -0,0 +1,16 @@ + +var Module = (() => { + var _scriptDir = import.meta.url; + + return ( +function(moduleArg = {}) { + +var Module=moduleArg;var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=true;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";var isDataURI=filename=>filename.startsWith(dataURIPrefix);var wasmBinaryFile;if(Module["locateFile"]){wasmBinaryFile="webp_dec.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}}else{wasmBinaryFile=new URL("webp_dec.wasm",import.meta.url).href}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}function getBinaryPromise(binaryFile){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{if(!response["ok"]){throw"failed to load wasm binary file at '"+binaryFile+"'"}return response["arrayBuffer"]()}).catch(()=>getBinarySync(binaryFile))}}return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(instance=>instance).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}return instantiateArrayBuffer(binaryFile,imports,callback)}function createWasm(){var info={"a":wasmImports};function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports["u"];updateMemoryViews();wasmTable=wasmExports["y"];addOnInit(wasmExports["v"]);removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);readyPromiseReject(e)}}instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult).catch(readyPromiseReject);return{}}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var noExitRuntime=Module["noExitRuntime"]||true;function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){HEAPU32[this.ptr+4>>2]=type};this.get_type=function(){return HEAPU32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAPU32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAPU32[this.ptr+8>>2]};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)};this.set_adjusted_ptr=function(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr};this.get_adjusted_ptr=function(){return HEAPU32[this.ptr+16>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var exceptionLast=0;var uncaughtExceptionCount=0;var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast};var __embind_register_bigint=(primitiveType,name,size,minRange,maxRange)=>{};var embind_init_charCodes=()=>{var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes};var embind_charCodes;var readLatin1String=ptr=>{var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret};var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var BindingError;var throwBindingError=message=>{throw new BindingError(message)};var InternalError;var throwInternalError=message=>{throw new InternalError(message)};var whenDependentTypesAreResolved=(myTypes,dependentTypes,getTypeConverters)=>{myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i{if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt]}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[]}awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters)}})}});if(0===unregisteredTypes.length){onComplete(typeConverters)}};function sharedRegisterType(rawType,registeredInstance,options={}){var name=registeredInstance.name;if(!rawType){throwBindingError(`type "${name}" must have a positive integer typeid pointer`)}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError(`Cannot register type '${name}' twice`)}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb())}}function registerType(rawType,registeredInstance,options={}){if(!("argPackAdvance"in registeredInstance)){throw new TypeError("registerType registeredInstance requires argPackAdvance")}return sharedRegisterType(rawType,registeredInstance,options)}var GenericWireTypeSize=8;var __embind_register_bool=(rawType,name,trueValue,falseValue)=>{name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(wt){return!!wt},"toWireType":function(destructors,o){return o?trueValue:falseValue},"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":function(pointer){return this["fromWireType"](HEAPU8[pointer])},destructorFunction:null})};function handleAllocatorInit(){Object.assign(HandleAllocator.prototype,{get(id){return this.allocated[id]},has(id){return this.allocated[id]!==undefined},allocate(handle){var id=this.freelist.pop()||this.allocated.length;this.allocated[id]=handle;return id},free(id){this.allocated[id]=undefined;this.freelist.push(id)}})}function HandleAllocator(){this.allocated=[undefined];this.freelist=[]}var emval_handles=new HandleAllocator;var __emval_decref=handle=>{if(handle>=emval_handles.reserved&&0===--emval_handles.get(handle).refcount){emval_handles.free(handle)}};var count_emval_handles=()=>{var count=0;for(var i=emval_handles.reserved;i{emval_handles.allocated.push({value:undefined},{value:null},{value:true},{value:false});emval_handles.reserved=emval_handles.allocated.length;Module["count_emval_handles"]=count_emval_handles};var Emval={toValue:handle=>{if(!handle){throwBindingError("Cannot use deleted val. handle = "+handle)}return emval_handles.get(handle).value},toHandle:value=>{switch(value){case undefined:return 1;case null:return 2;case true:return 3;case false:return 4;default:{return emval_handles.allocate({refcount:1,value:value})}}}};function simpleReadValueFromPointer(pointer){return this["fromWireType"](HEAP32[pointer>>2])}var __embind_register_emval=(rawType,name)=>{name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":handle=>{var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":(destructors,value)=>Emval.toHandle(value),"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})};var floatReadValueFromPointer=(name,width)=>{switch(width){case 4:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 8:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError(`invalid float width (${width}): ${name}`)}};var __embind_register_float=(rawType,name,size)=>{name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":value=>value,"toWireType":(destructors,value)=>value,"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":floatReadValueFromPointer(name,size),destructorFunction:null})};var createNamedFunction=(name,body)=>Object.defineProperty(body,"name",{value:name});var runDestructors=destructors=>{while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}};function usesDestructorStack(argTypes){for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns||isAsync?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i{if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(){if(!proto[methodName].overloadTable.hasOwnProperty(arguments.length)){throwBindingError(`Function '${humanName}' called with an invalid number of arguments (${arguments.length}) - expects one of (${proto[methodName].overloadTable})!`)}return proto[methodName].overloadTable[arguments.length].apply(this,arguments)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}};var exposePublicSymbol=(name,value,numArguments)=>{if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError(`Cannot register public name '${name}' twice`)}ensureOverloadTable(Module,name,name);if(Module.hasOwnProperty(numArguments)){throwBindingError(`Cannot register multiple overloads of a function with the same number of arguments (${numArguments})!`)}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;if(undefined!==numArguments){Module[name].numArguments=numArguments}}};var heap32VectorToArray=(count,firstElement)=>{var array=[];for(var i=0;i>2])}return array};var replacePublicSymbol=(name,value,numArguments)=>{if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}};var dynCallLegacy=(sig,ptr,args)=>{var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)};var wasmTableMirror=[];var wasmTable;var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var dynCall=(sig,ptr,args)=>{if(sig.includes("j")){return dynCallLegacy(sig,ptr,args)}var rtn=getWasmTableEntry(ptr).apply(null,args);return rtn};var getDynCaller=(sig,ptr)=>{var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}};var embind__requireFunction=(signature,rawFunction)=>{signature=readLatin1String(signature);function makeDynCaller(){if(signature.includes("j")){return getDynCaller(signature,rawFunction)}return getWasmTableEntry(rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError(`unknown function pointer with signature ${signature}: ${rawFunction}`)}return fp};var extendError=(baseErrorType,errorName)=>{var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return`${this.name}: ${this.message}`}};return errorClass};var UnboundTypeError;var getTypeName=type=>{var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv};var throwUnboundTypeError=(message,types)=>{var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(`${message}: `+unboundTypes.map(getTypeName).join([", "]))};var getFunctionName=signature=>{signature=signature.trim();const argsIndex=signature.indexOf("(");if(argsIndex!==-1){return signature.substr(0,argsIndex)}else{return signature}};var __embind_register_function=(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn,isAsync)=>{var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);name=getFunctionName(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError(`Cannot call ${name} due to unbound types`,argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn,isAsync),argCount-1);return[]})};var integerReadValueFromPointer=(name,width,signed)=>{switch(width){case 1:return signed?pointer=>HEAP8[pointer>>0]:pointer=>HEAPU8[pointer>>0];case 2:return signed?pointer=>HEAP16[pointer>>1]:pointer=>HEAPU16[pointer>>1];case 4:return signed?pointer=>HEAP32[pointer>>2]:pointer=>HEAPU32[pointer>>2];default:throw new TypeError(`invalid integer width (${width}): ${name}`)}};var __embind_register_integer=(primitiveType,name,size,minRange,maxRange)=>{name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=value=>value<>>bitshift}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":integerReadValueFromPointer(name,size,minRange!==0),destructorFunction:null})};var __embind_register_memory_view=(rawType,dataTypeIndex,name)=>{var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){var size=HEAPU32[handle>>2];var data=HEAPU32[handle+4>>2];return new TA(HEAP8.buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})};function readPointer(pointer){return this["fromWireType"](HEAPU32[pointer>>2])}var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var UTF8Decoder=new TextDecoder("utf8");var UTF8ToString=(ptr,maxBytesToRead)=>{if(!ptr)return"";var maxPtr=ptr+maxBytesToRead;for(var end=ptr;!(end>=maxPtr)&&HEAPU8[end];)++end;return UTF8Decoder.decode(HEAPU8.subarray(ptr,end))};var __embind_register_std_string=(rawType,name)=>{name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType"(value){var length=HEAPU32[value>>2];var payload=value+4;var str;if(stdStringIsUTF8){var decodeStartPtr=payload;for(var i=0;i<=length;++i){var currentBytePtr=payload+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+i]=charCode}}else{for(var i=0;i{var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))};var stringToUTF16=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr};var lengthBytesUTF16=str=>str.length*2;var UTF32ToString=(ptr,maxBytesToRead)=>{var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str};var stringToUTF32=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr};var lengthBytesUTF32=str=>{var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len};var __embind_register_std_wstring=(rawType,charSize,name)=>{name=readLatin1String(name);var decodeString,encodeString,getHeap,lengthBytesUTF,shift;if(charSize===2){decodeString=UTF16ToString;encodeString=stringToUTF16;lengthBytesUTF=lengthBytesUTF16;getHeap=()=>HEAPU16;shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=()=>HEAPU32;shift=2}registerType(rawType,{name:name,"fromWireType":value=>{var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":(destructors,value)=>{if(!(typeof value=="string")){throwBindingError(`Cannot pass non-string to C++ string type ${name}`)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction(ptr){_free(ptr)}})};var __embind_register_void=(rawType,name)=>{name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":()=>undefined,"toWireType":(destructors,o)=>undefined})};var emval_methodCallers=[];var __emval_call=(caller,handle,destructorsRef,args)=>{caller=emval_methodCallers[caller];handle=Emval.toValue(handle);return caller(null,handle,destructorsRef,args)};var emval_symbols={};var getStringOrSymbol=address=>{var symbol=emval_symbols[address];if(symbol===undefined){return readLatin1String(address)}return symbol};var emval_get_global=()=>{if(typeof globalThis=="object"){return globalThis}return function(){return Function}()("return this")()};var __emval_get_global=name=>{if(name===0){return Emval.toHandle(emval_get_global())}else{name=getStringOrSymbol(name);return Emval.toHandle(emval_get_global()[name])}};var emval_addMethodCaller=caller=>{var id=emval_methodCallers.length;emval_methodCallers.push(caller);return id};var requireRegisteredType=(rawType,humanName)=>{var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(humanName+" has unknown type "+getTypeName(rawType))}return impl};var emval_lookupTypes=(argCount,argTypes)=>{var a=new Array(argCount);for(var i=0;i>2],"parameter "+i)}return a};var reflectConstruct=Reflect.construct;var emval_returnValue=(returnType,destructorsRef,handle)=>{var destructors=[];var result=returnType["toWireType"](destructors,handle);if(destructors.length){HEAPU32[destructorsRef>>2]=Emval.toHandle(destructors)}return result};var __emval_get_method_caller=(argCount,argTypes,kind)=>{var types=emval_lookupTypes(argCount,argTypes);var retType=types.shift();argCount--;var functionBody=`return function (obj, func, destructorsRef, args) {\n`;var offset=0;var argsList=[];if(kind===0){argsList.push("obj")}var params=["retType"];var args=[retType];for(var i=0;it.name).join(", ")}) => ${retType.name}>`;return emval_addMethodCaller(createNamedFunction(functionName,invokerFunction))};var __emval_incref=handle=>{if(handle>4){emval_handles.get(handle).refcount+=1}};var __emval_run_destructors=handle=>{var destructors=Emval.toValue(handle);runDestructors(destructors);__emval_decref(handle)};var _abort=()=>{abort("")};var _emscripten_memcpy_js=(dest,src,num)=>HEAPU8.copyWithin(dest,src,src+num);var getHeapMax=()=>2147483648;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}var alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};embind_init_charCodes();BindingError=Module["BindingError"]=class BindingError extends Error{constructor(message){super(message);this.name="BindingError"}};InternalError=Module["InternalError"]=class InternalError extends Error{constructor(message){super(message);this.name="InternalError"}};handleAllocatorInit();init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");var wasmImports={p:___cxa_throw,q:__embind_register_bigint,n:__embind_register_bool,t:__embind_register_emval,l:__embind_register_float,c:__embind_register_function,b:__embind_register_integer,a:__embind_register_memory_view,m:__embind_register_std_string,f:__embind_register_std_wstring,o:__embind_register_void,i:__emval_call,d:__emval_decref,e:__emval_get_global,h:__emval_get_method_caller,j:__emval_incref,g:__emval_run_destructors,k:_abort,s:_emscripten_memcpy_js,r:_emscripten_resize_heap};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports["v"])();var _malloc=a0=>(_malloc=wasmExports["w"])(a0);var _free=a0=>(_free=wasmExports["x"])(a0);var ___getTypeName=a0=>(___getTypeName=wasmExports["z"])(a0);var ___errno_location=()=>(___errno_location=wasmExports["__errno_location"])();var ___cxa_increment_exception_refcount=a0=>(___cxa_increment_exception_refcount=wasmExports["__cxa_increment_exception_refcount"])(a0);var ___cxa_is_pointer_type=a0=>(___cxa_is_pointer_type=wasmExports["A"])(a0);var dynCall_jiiii=Module["dynCall_jiiii"]=(a0,a1,a2,a3,a4)=>(dynCall_jiiii=Module["dynCall_jiiii"]=wasmExports["B"])(a0,a1,a2,a3,a4);var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run(); + + + return moduleArg.ready +} +); +})(); +; +export default Module; \ No newline at end of file diff --git a/codecs/webp/wasm_build/simd/dec/webp_dec.wasm b/codecs/webp/wasm_build/simd/dec/webp_dec.wasm new file mode 100755 index 0000000000000000000000000000000000000000..23a67fb2a72e74c46ebbc79498bfbf93c57a40f9 GIT binary patch literal 278321 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 +- Version: v1.0.2 + +## Dependencies + +- Docker + +## Example + +See `example.html` + +## API + +### `int version()` + +Returns the version of libwebp as a number. va.b.c is encoded as 0x0a0b0c + +### `UInt8Array encode(uint8_t* image_buffer, int image_width, int image_height, WebPConfig config)` + +Encodes the given image with given dimension to WebP. diff --git a/codecs/webp/wasm_build/simd/enc/example.html b/codecs/webp/wasm_build/simd/enc/example.html new file mode 100644 index 000000000..2b0c8c4a3 --- /dev/null +++ b/codecs/webp/wasm_build/simd/enc/example.html @@ -0,0 +1,58 @@ + + + diff --git a/codecs/webp/wasm_build/simd/enc/webp_enc.cpp b/codecs/webp/wasm_build/simd/enc/webp_enc.cpp new file mode 100644 index 000000000..dccd213e9 --- /dev/null +++ b/codecs/webp/wasm_build/simd/enc/webp_enc.cpp @@ -0,0 +1,85 @@ +#include +#include +#include +#include +#include +#include "webp/encode.h" + +using namespace emscripten; + +int version() { + return WebPGetEncoderVersion(); +} + +thread_local const val Uint8Array = val::global("Uint8Array"); + +val encode(std::string img, int width, int height, WebPConfig config) { + auto img_in = (uint8_t*)img.c_str(); + + // A lot of this is duplicated from Encode in picture_enc.c + WebPPicture pic; + WebPMemoryWriter wrt; + int ok; + + if (!WebPPictureInit(&pic)) { + // shouldn't happen, except if system installation is broken + return val::null(); + } + + // Allow quality to go higher than 0. + config.qmax = 100; + + // Only use use_argb if we really need it, as it's slower. + pic.use_argb = config.lossless || config.use_sharp_yuv || config.preprocessing > 0; + pic.width = width; + pic.height = height; + pic.writer = WebPMemoryWrite; + pic.custom_ptr = &wrt; + + WebPMemoryWriterInit(&wrt); + + ok = WebPPictureImportRGBA(&pic, img_in, width * 4) && WebPEncode(&config, &pic); + WebPPictureFree(&pic); + val js_result = ok ? Uint8Array.new_(typed_memory_view(wrt.size, wrt.mem)) : val::null(); + WebPMemoryWriterClear(&wrt); + return js_result; +} + +EMSCRIPTEN_BINDINGS(my_module) { + enum_("WebPImageHint") + .value("WEBP_HINT_DEFAULT", WebPImageHint::WEBP_HINT_DEFAULT) + .value("WEBP_HINT_PICTURE", WebPImageHint::WEBP_HINT_PICTURE) + .value("WEBP_HINT_PHOTO", WebPImageHint::WEBP_HINT_PHOTO) + .value("WEBP_HINT_GRAPH", WebPImageHint::WEBP_HINT_GRAPH); + + value_object("WebPConfig") + .field("lossless", &WebPConfig::lossless) + .field("quality", &WebPConfig::quality) + .field("method", &WebPConfig::method) + .field("image_hint", &WebPConfig::image_hint) + .field("target_size", &WebPConfig::target_size) + .field("target_PSNR", &WebPConfig::target_PSNR) + .field("segments", &WebPConfig::segments) + .field("sns_strength", &WebPConfig::sns_strength) + .field("filter_strength", &WebPConfig::filter_strength) + .field("filter_sharpness", &WebPConfig::filter_sharpness) + .field("filter_type", &WebPConfig::filter_type) + .field("autofilter", &WebPConfig::autofilter) + .field("alpha_compression", &WebPConfig::alpha_compression) + .field("alpha_filtering", &WebPConfig::alpha_filtering) + .field("alpha_quality", &WebPConfig::alpha_quality) + .field("pass", &WebPConfig::pass) + .field("show_compressed", &WebPConfig::show_compressed) + .field("preprocessing", &WebPConfig::preprocessing) + .field("partitions", &WebPConfig::partitions) + .field("partition_limit", &WebPConfig::partition_limit) + .field("emulate_jpeg_size", &WebPConfig::emulate_jpeg_size) + .field("low_memory", &WebPConfig::low_memory) + .field("near_lossless", &WebPConfig::near_lossless) + .field("exact", &WebPConfig::exact) + .field("use_delta_palette", &WebPConfig::use_delta_palette) + .field("use_sharp_yuv", &WebPConfig::use_sharp_yuv); + + function("version", &version); + function("encode", &encode); +} diff --git a/codecs/webp/wasm_build/simd/enc/webp_enc.d.ts b/codecs/webp/wasm_build/simd/enc/webp_enc.d.ts new file mode 100644 index 000000000..280191518 --- /dev/null +++ b/codecs/webp/wasm_build/simd/enc/webp_enc.d.ts @@ -0,0 +1,42 @@ +export interface EncodeOptions { + quality: number; + target_size: number; + target_PSNR: number; + method: number; + sns_strength: number; + filter_strength: number; + filter_sharpness: number; + filter_type: number; + partitions: number; + segments: number; + pass: number; + show_compressed: number; + preprocessing: number; + autofilter: number; + partition_limit: number; + alpha_compression: number; + alpha_filtering: number; + alpha_quality: number; + lossless: number; + exact: number; + image_hint: number; + emulate_jpeg_size: number; + thread_level: number; + low_memory: number; + near_lossless: number; + use_delta_palette: number; + use_sharp_yuv: number; +} + +export interface WebPModule extends EmscriptenWasm.Module { + encode( + data: BufferSource, + width: number, + height: number, + options: EncodeOptions, + ): Uint8Array | null; +} + +declare var moduleFactory: EmscriptenWasm.ModuleFactory; + +export default moduleFactory; diff --git a/codecs/webp/wasm_build/simd/enc/webp_enc.js b/codecs/webp/wasm_build/simd/enc/webp_enc.js new file mode 100644 index 000000000..9a8cd90a7 --- /dev/null +++ b/codecs/webp/wasm_build/simd/enc/webp_enc.js @@ -0,0 +1,16 @@ + +var Module = (() => { + var _scriptDir = import.meta.url; + + return ( +function(moduleArg = {}) { + +var Module=moduleArg;var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=true;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";var isDataURI=filename=>filename.startsWith(dataURIPrefix);var wasmBinaryFile;if(Module["locateFile"]){wasmBinaryFile="webp_enc.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}}else{wasmBinaryFile=new URL("webp_enc.wasm",import.meta.url).href}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}function getBinaryPromise(binaryFile){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{if(!response["ok"]){throw"failed to load wasm binary file at '"+binaryFile+"'"}return response["arrayBuffer"]()}).catch(()=>getBinarySync(binaryFile))}}return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(instance=>instance).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}return instantiateArrayBuffer(binaryFile,imports,callback)}function createWasm(){var info={"a":wasmImports};function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports["z"];updateMemoryViews();wasmTable=wasmExports["B"];addOnInit(wasmExports["A"]);removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);readyPromiseReject(e)}}instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult).catch(readyPromiseReject);return{}}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var noExitRuntime=Module["noExitRuntime"]||true;function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){HEAPU32[this.ptr+4>>2]=type};this.get_type=function(){return HEAPU32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAPU32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAPU32[this.ptr+8>>2]};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)};this.set_adjusted_ptr=function(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr};this.get_adjusted_ptr=function(){return HEAPU32[this.ptr+16>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var exceptionLast=0;var uncaughtExceptionCount=0;var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast};var structRegistrations={};var runDestructors=destructors=>{while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}};function simpleReadValueFromPointer(pointer){return this["fromWireType"](HEAP32[pointer>>2])}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var InternalError;var throwInternalError=message=>{throw new InternalError(message)};var whenDependentTypesAreResolved=(myTypes,dependentTypes,getTypeConverters)=>{myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i{if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt]}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[]}awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters)}})}});if(0===unregisteredTypes.length){onComplete(typeConverters)}};var __embind_finalize_value_object=structType=>{var reg=structRegistrations[structType];delete structRegistrations[structType];var rawConstructor=reg.rawConstructor;var rawDestructor=reg.rawDestructor;var fieldRecords=reg.fields;var fieldTypes=fieldRecords.map(field=>field.getterReturnType).concat(fieldRecords.map(field=>field.setterArgumentType));whenDependentTypesAreResolved([structType],fieldTypes,fieldTypes=>{var fields={};fieldRecords.forEach((field,i)=>{var fieldName=field.fieldName;var getterReturnType=fieldTypes[i];var getter=field.getter;var getterContext=field.getterContext;var setterArgumentType=fieldTypes[i+fieldRecords.length];var setter=field.setter;var setterContext=field.setterContext;fields[fieldName]={read:ptr=>getterReturnType["fromWireType"](getter(getterContext,ptr)),write:(ptr,o)=>{var destructors=[];setter(setterContext,ptr,setterArgumentType["toWireType"](destructors,o));runDestructors(destructors)}}});return[{name:reg.name,"fromWireType":ptr=>{var rv={};for(var i in fields){rv[i]=fields[i].read(ptr)}rawDestructor(ptr);return rv},"toWireType":(destructors,o)=>{for(var fieldName in fields){if(!(fieldName in o)){throw new TypeError(`Missing field: "${fieldName}"`)}}var ptr=rawConstructor();for(fieldName in fields){fields[fieldName].write(ptr,o[fieldName])}if(destructors!==null){destructors.push(rawDestructor,ptr)}return ptr},"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:rawDestructor}]})};var __embind_register_bigint=(primitiveType,name,size,minRange,maxRange)=>{};var embind_init_charCodes=()=>{var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes};var embind_charCodes;var readLatin1String=ptr=>{var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret};var BindingError;var throwBindingError=message=>{throw new BindingError(message)};function sharedRegisterType(rawType,registeredInstance,options={}){var name=registeredInstance.name;if(!rawType){throwBindingError(`type "${name}" must have a positive integer typeid pointer`)}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError(`Cannot register type '${name}' twice`)}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb())}}function registerType(rawType,registeredInstance,options={}){if(!("argPackAdvance"in registeredInstance)){throw new TypeError("registerType registeredInstance requires argPackAdvance")}return sharedRegisterType(rawType,registeredInstance,options)}var GenericWireTypeSize=8;var __embind_register_bool=(rawType,name,trueValue,falseValue)=>{name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(wt){return!!wt},"toWireType":function(destructors,o){return o?trueValue:falseValue},"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":function(pointer){return this["fromWireType"](HEAPU8[pointer])},destructorFunction:null})};function handleAllocatorInit(){Object.assign(HandleAllocator.prototype,{get(id){return this.allocated[id]},has(id){return this.allocated[id]!==undefined},allocate(handle){var id=this.freelist.pop()||this.allocated.length;this.allocated[id]=handle;return id},free(id){this.allocated[id]=undefined;this.freelist.push(id)}})}function HandleAllocator(){this.allocated=[undefined];this.freelist=[]}var emval_handles=new HandleAllocator;var __emval_decref=handle=>{if(handle>=emval_handles.reserved&&0===--emval_handles.get(handle).refcount){emval_handles.free(handle)}};var count_emval_handles=()=>{var count=0;for(var i=emval_handles.reserved;i{emval_handles.allocated.push({value:undefined},{value:null},{value:true},{value:false});emval_handles.reserved=emval_handles.allocated.length;Module["count_emval_handles"]=count_emval_handles};var Emval={toValue:handle=>{if(!handle){throwBindingError("Cannot use deleted val. handle = "+handle)}return emval_handles.get(handle).value},toHandle:value=>{switch(value){case undefined:return 1;case null:return 2;case true:return 3;case false:return 4;default:{return emval_handles.allocate({refcount:1,value:value})}}}};var __embind_register_emval=(rawType,name)=>{name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":handle=>{var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":(destructors,value)=>Emval.toHandle(value),"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})};var ensureOverloadTable=(proto,methodName,humanName)=>{if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(){if(!proto[methodName].overloadTable.hasOwnProperty(arguments.length)){throwBindingError(`Function '${humanName}' called with an invalid number of arguments (${arguments.length}) - expects one of (${proto[methodName].overloadTable})!`)}return proto[methodName].overloadTable[arguments.length].apply(this,arguments)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}};var exposePublicSymbol=(name,value,numArguments)=>{if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError(`Cannot register public name '${name}' twice`)}ensureOverloadTable(Module,name,name);if(Module.hasOwnProperty(numArguments)){throwBindingError(`Cannot register multiple overloads of a function with the same number of arguments (${numArguments})!`)}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;if(undefined!==numArguments){Module[name].numArguments=numArguments}}};var enumReadValueFromPointer=(name,width,signed)=>{switch(width){case 1:return signed?function(pointer){return this["fromWireType"](HEAP8[pointer>>0])}:function(pointer){return this["fromWireType"](HEAPU8[pointer>>0])};case 2:return signed?function(pointer){return this["fromWireType"](HEAP16[pointer>>1])}:function(pointer){return this["fromWireType"](HEAPU16[pointer>>1])};case 4:return signed?function(pointer){return this["fromWireType"](HEAP32[pointer>>2])}:function(pointer){return this["fromWireType"](HEAPU32[pointer>>2])};default:throw new TypeError(`invalid integer width (${width}): ${name}`)}};var __embind_register_enum=(rawType,name,size,isSigned)=>{name=readLatin1String(name);function ctor(){}ctor.values={};registerType(rawType,{name:name,constructor:ctor,"fromWireType":function(c){return this.constructor.values[c]},"toWireType":(destructors,c)=>c.value,"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":enumReadValueFromPointer(name,size,isSigned),destructorFunction:null});exposePublicSymbol(name,ctor)};var createNamedFunction=(name,body)=>Object.defineProperty(body,"name",{value:name});var getTypeName=type=>{var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv};var requireRegisteredType=(rawType,humanName)=>{var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(humanName+" has unknown type "+getTypeName(rawType))}return impl};var __embind_register_enum_value=(rawEnumType,name,enumValue)=>{var enumType=requireRegisteredType(rawEnumType,"enum");name=readLatin1String(name);var Enum=enumType.constructor;var Value=Object.create(enumType.constructor.prototype,{value:{value:enumValue},constructor:{value:createNamedFunction(`${enumType.name}_${name}`,function(){})}});Enum.values[enumValue]=Value;Enum[name]=Value};var floatReadValueFromPointer=(name,width)=>{switch(width){case 4:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 8:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError(`invalid float width (${width}): ${name}`)}};var __embind_register_float=(rawType,name,size)=>{name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":value=>value,"toWireType":(destructors,value)=>value,"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":floatReadValueFromPointer(name,size),destructorFunction:null})};function usesDestructorStack(argTypes){for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns||isAsync?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i{var array=[];for(var i=0;i>2])}return array};var replacePublicSymbol=(name,value,numArguments)=>{if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}};var dynCallLegacy=(sig,ptr,args)=>{var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)};var wasmTableMirror=[];var wasmTable;var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var dynCall=(sig,ptr,args)=>{if(sig.includes("j")){return dynCallLegacy(sig,ptr,args)}var rtn=getWasmTableEntry(ptr).apply(null,args);return rtn};var getDynCaller=(sig,ptr)=>{var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}};var embind__requireFunction=(signature,rawFunction)=>{signature=readLatin1String(signature);function makeDynCaller(){if(signature.includes("j")){return getDynCaller(signature,rawFunction)}return getWasmTableEntry(rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError(`unknown function pointer with signature ${signature}: ${rawFunction}`)}return fp};var extendError=(baseErrorType,errorName)=>{var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return`${this.name}: ${this.message}`}};return errorClass};var UnboundTypeError;var throwUnboundTypeError=(message,types)=>{var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(`${message}: `+unboundTypes.map(getTypeName).join([", "]))};var getFunctionName=signature=>{signature=signature.trim();const argsIndex=signature.indexOf("(");if(argsIndex!==-1){return signature.substr(0,argsIndex)}else{return signature}};var __embind_register_function=(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn,isAsync)=>{var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);name=getFunctionName(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError(`Cannot call ${name} due to unbound types`,argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn,isAsync),argCount-1);return[]})};var integerReadValueFromPointer=(name,width,signed)=>{switch(width){case 1:return signed?pointer=>HEAP8[pointer>>0]:pointer=>HEAPU8[pointer>>0];case 2:return signed?pointer=>HEAP16[pointer>>1]:pointer=>HEAPU16[pointer>>1];case 4:return signed?pointer=>HEAP32[pointer>>2]:pointer=>HEAPU32[pointer>>2];default:throw new TypeError(`invalid integer width (${width}): ${name}`)}};var __embind_register_integer=(primitiveType,name,size,minRange,maxRange)=>{name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=value=>value<>>bitshift}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":integerReadValueFromPointer(name,size,minRange!==0),destructorFunction:null})};var __embind_register_memory_view=(rawType,dataTypeIndex,name)=>{var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){var size=HEAPU32[handle>>2];var data=HEAPU32[handle+4>>2];return new TA(HEAP8.buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})};function readPointer(pointer){return this["fromWireType"](HEAPU32[pointer>>2])}var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var UTF8Decoder=new TextDecoder("utf8");var UTF8ToString=(ptr,maxBytesToRead)=>{if(!ptr)return"";var maxPtr=ptr+maxBytesToRead;for(var end=ptr;!(end>=maxPtr)&&HEAPU8[end];)++end;return UTF8Decoder.decode(HEAPU8.subarray(ptr,end))};var __embind_register_std_string=(rawType,name)=>{name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType"(value){var length=HEAPU32[value>>2];var payload=value+4;var str;if(stdStringIsUTF8){var decodeStartPtr=payload;for(var i=0;i<=length;++i){var currentBytePtr=payload+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+i]=charCode}}else{for(var i=0;i{var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))};var stringToUTF16=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr};var lengthBytesUTF16=str=>str.length*2;var UTF32ToString=(ptr,maxBytesToRead)=>{var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str};var stringToUTF32=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr};var lengthBytesUTF32=str=>{var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len};var __embind_register_std_wstring=(rawType,charSize,name)=>{name=readLatin1String(name);var decodeString,encodeString,getHeap,lengthBytesUTF,shift;if(charSize===2){decodeString=UTF16ToString;encodeString=stringToUTF16;lengthBytesUTF=lengthBytesUTF16;getHeap=()=>HEAPU16;shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=()=>HEAPU32;shift=2}registerType(rawType,{name:name,"fromWireType":value=>{var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":(destructors,value)=>{if(!(typeof value=="string")){throwBindingError(`Cannot pass non-string to C++ string type ${name}`)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction(ptr){_free(ptr)}})};var __embind_register_value_object=(rawType,name,constructorSignature,rawConstructor,destructorSignature,rawDestructor)=>{structRegistrations[rawType]={name:readLatin1String(name),rawConstructor:embind__requireFunction(constructorSignature,rawConstructor),rawDestructor:embind__requireFunction(destructorSignature,rawDestructor),fields:[]}};var __embind_register_value_object_field=(structType,fieldName,getterReturnType,getterSignature,getter,getterContext,setterArgumentType,setterSignature,setter,setterContext)=>{structRegistrations[structType].fields.push({fieldName:readLatin1String(fieldName),getterReturnType:getterReturnType,getter:embind__requireFunction(getterSignature,getter),getterContext:getterContext,setterArgumentType:setterArgumentType,setter:embind__requireFunction(setterSignature,setter),setterContext:setterContext})};var __embind_register_void=(rawType,name)=>{name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":()=>undefined,"toWireType":(destructors,o)=>undefined})};var emval_methodCallers=[];var __emval_call=(caller,handle,destructorsRef,args)=>{caller=emval_methodCallers[caller];handle=Emval.toValue(handle);return caller(null,handle,destructorsRef,args)};var emval_symbols={};var getStringOrSymbol=address=>{var symbol=emval_symbols[address];if(symbol===undefined){return readLatin1String(address)}return symbol};var emval_get_global=()=>{if(typeof globalThis=="object"){return globalThis}return function(){return Function}()("return this")()};var __emval_get_global=name=>{if(name===0){return Emval.toHandle(emval_get_global())}else{name=getStringOrSymbol(name);return Emval.toHandle(emval_get_global()[name])}};var emval_addMethodCaller=caller=>{var id=emval_methodCallers.length;emval_methodCallers.push(caller);return id};var emval_lookupTypes=(argCount,argTypes)=>{var a=new Array(argCount);for(var i=0;i>2],"parameter "+i)}return a};var reflectConstruct=Reflect.construct;var emval_returnValue=(returnType,destructorsRef,handle)=>{var destructors=[];var result=returnType["toWireType"](destructors,handle);if(destructors.length){HEAPU32[destructorsRef>>2]=Emval.toHandle(destructors)}return result};var __emval_get_method_caller=(argCount,argTypes,kind)=>{var types=emval_lookupTypes(argCount,argTypes);var retType=types.shift();argCount--;var functionBody=`return function (obj, func, destructorsRef, args) {\n`;var offset=0;var argsList=[];if(kind===0){argsList.push("obj")}var params=["retType"];var args=[retType];for(var i=0;it.name).join(", ")}) => ${retType.name}>`;return emval_addMethodCaller(createNamedFunction(functionName,invokerFunction))};var __emval_incref=handle=>{if(handle>4){emval_handles.get(handle).refcount+=1}};var __emval_run_destructors=handle=>{var destructors=Emval.toValue(handle);runDestructors(destructors);__emval_decref(handle)};var _abort=()=>{abort("")};var _emscripten_memcpy_js=(dest,src,num)=>HEAPU8.copyWithin(dest,src,src+num);var getHeapMax=()=>2147483648;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}var alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};InternalError=Module["InternalError"]=class InternalError extends Error{constructor(message){super(message);this.name="InternalError"}};embind_init_charCodes();BindingError=Module["BindingError"]=class BindingError extends Error{constructor(message){super(message);this.name="BindingError"}};handleAllocatorInit();init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");var wasmImports={k:___cxa_throw,m:__embind_finalize_value_object,o:__embind_register_bigint,t:__embind_register_bool,s:__embind_register_emval,r:__embind_register_enum,d:__embind_register_enum_value,h:__embind_register_float,f:__embind_register_function,c:__embind_register_integer,b:__embind_register_memory_view,i:__embind_register_std_string,e:__embind_register_std_wstring,n:__embind_register_value_object,a:__embind_register_value_object_field,u:__embind_register_void,x:__emval_call,j:__emval_decref,y:__emval_get_global,w:__emval_get_method_caller,l:__emval_incref,v:__emval_run_destructors,g:_abort,q:_emscripten_memcpy_js,p:_emscripten_resize_heap};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports["A"])();var _malloc=a0=>(_malloc=wasmExports["C"])(a0);var _free=a0=>(_free=wasmExports["D"])(a0);var ___getTypeName=a0=>(___getTypeName=wasmExports["E"])(a0);var ___errno_location=()=>(___errno_location=wasmExports["__errno_location"])();var ___cxa_increment_exception_refcount=a0=>(___cxa_increment_exception_refcount=wasmExports["__cxa_increment_exception_refcount"])(a0);var ___cxa_is_pointer_type=a0=>(___cxa_is_pointer_type=wasmExports["F"])(a0);var dynCall_jiiii=Module["dynCall_jiiii"]=(a0,a1,a2,a3,a4)=>(dynCall_jiiii=Module["dynCall_jiiii"]=wasmExports["G"])(a0,a1,a2,a3,a4);var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run(); + + + return moduleArg.ready +} +); +})(); +; +export default Module; \ No newline at end of file diff --git a/codecs/webp/wasm_build/simd/enc/webp_enc.wasm b/codecs/webp/wasm_build/simd/enc/webp_enc.wasm new file mode 100755 index 0000000000000000000000000000000000000000..9d1fc43ff958057c2b1f4c7eeb873bbf44373c78 GIT binary patch literal 437317 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

3w$n_GS#s)a4T57nNQ--l{F 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 z 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 literal 0 HcmV?d00001 diff --git a/codecs/webp/wasm_build/simd/enc/webp_enc_simd.d.ts b/codecs/webp/wasm_build/simd/enc/webp_enc_simd.d.ts new file mode 100644 index 000000000..b14ebbdb1 --- /dev/null +++ b/codecs/webp/wasm_build/simd/enc/webp_enc_simd.d.ts @@ -0,0 +1 @@ +export { default } from './webp_enc.js'; diff --git a/nix/for-each-option.nix b/nix/for-each-option.nix new file mode 100644 index 000000000..4c6a66940 --- /dev/null +++ b/nix/for-each-option.nix @@ -0,0 +1,6 @@ +{ lib }: +f: opts: +let + derivations = (lib.attrsets.mapAttrsToList f opts); +in +lib.lists.fold (a: b: a // b) { } derivations diff --git a/src/features/decoders/webp/worker/webpDecode.ts b/src/features/decoders/webp/worker/webpDecode.ts index 29bd4e43c..0ba0748b0 100644 --- a/src/features/decoders/webp/worker/webpDecode.ts +++ b/src/features/decoders/webp/worker/webpDecode.ts @@ -10,14 +10,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import type { WebPModule } from 'codecs/webp/dec/webp_dec'; +import type { WebPModule } from 'codecs/webp/wasm_build/base/dec/webp_dec'; import { initEmscriptenModule, blobToArrayBuffer } from 'features/worker-utils'; let emscriptenModule: Promise; export default async function decode(blob: Blob): Promise { if (!emscriptenModule) { - const decoder = await import('codecs/webp/dec/webp_dec'); + const decoder = await import('codecs/webp/wasm_build/base/dec/webp_dec'); emscriptenModule = initEmscriptenModule(decoder.default); } diff --git a/src/features/encoders/webP/shared/meta.ts b/src/features/encoders/webP/shared/meta.ts index 00811105e..b9baef4e0 100644 --- a/src/features/encoders/webP/shared/meta.ts +++ b/src/features/encoders/webP/shared/meta.ts @@ -10,7 +10,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import type { EncodeOptions } from 'codecs/webp/enc/webp_enc'; +import type { EncodeOptions } from 'codecs/webp/wasm_build/base/enc/webp_enc'; export { EncodeOptions }; diff --git a/src/features/encoders/webP/worker/webpEncode.ts b/src/features/encoders/webP/worker/webpEncode.ts index 14d6f7552..4a8fe3499 100644 --- a/src/features/encoders/webP/worker/webpEncode.ts +++ b/src/features/encoders/webP/worker/webpEncode.ts @@ -10,7 +10,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import type { WebPModule } from 'codecs/webp/enc/webp_enc'; +import type { WebPModule } from 'codecs/webp/wasm_build/base/enc/webp_enc'; import type { EncodeOptions } from '../shared/meta'; import { initEmscriptenModule } from 'features/worker-utils'; @@ -20,10 +20,12 @@ let emscriptenModule: Promise; async function init() { if (await simd()) { - const webpEncoder = await import('codecs/webp/enc/webp_enc_simd'); + const webpEncoder = await import( + 'codecs/webp/wasm_build/simd/enc/webp_enc' + ); return initEmscriptenModule(webpEncoder.default); } - const webpEncoder = await import('codecs/webp/enc/webp_enc'); + const webpEncoder = await import('codecs/webp/wasm_build/base/enc/webp_enc'); return initEmscriptenModule(webpEncoder.default); } diff --git a/src/sw/to-cache.ts b/src/sw/to-cache.ts index 49afaf073..79777518f 100644 --- a/src/sw/to-cache.ts +++ b/src/sw/to-cache.ts @@ -25,7 +25,7 @@ import * as featuresWorker from 'entry-data:../features-worker'; // Decoders (some are feature detected) import * as avifDec from 'entry-data:codecs/avif/dec/avif_dec'; -import * as webpDec from 'entry-data:codecs/webp/dec/webp_dec'; +import * as webpDec from 'entry-data:codecs/webp/wasm_build/base/dec/webp_dec'; // AVIF import * as avifEncMt from 'entry-data:codecs/avif/enc/avif_enc_mt'; @@ -41,8 +41,8 @@ import * as oxiMt from 'entry-data:codecs/oxipng/pkg-parallel/squoosh_oxipng'; import * as oxi from 'entry-data:codecs/oxipng/pkg/squoosh_oxipng'; // WebP -import * as webpEncSimd from 'entry-data:codecs/webp/enc/webp_enc_simd'; -import * as webpEnc from 'entry-data:codecs/webp/enc/webp_enc'; +import * as webpEncSimd from 'entry-data:codecs/webp/wasm_build/simd/enc/webp_enc'; +import * as webpEnc from 'entry-data:codecs/webp/wasm_build/base/enc/webp_enc'; // WP2 import * as wp2EncMtSimd from 'entry-data:codecs/wp2/enc/wp2_enc_mt_simd';