{"version":3,"sources":["webpack:///./node_modules/libpag/lib/libpag.umd.js"],"names":["global","factory","exports","this","getGlobalObject","globalThis","window","self","Error","globalObject","PAGModule","Object","defineProperty","setPAGModule","module","wasmAwaitRewind","constructor","ignoreStaticFunctions","staticFunctions","getOwnPropertyNames","filter","name","indexOf","wasmAsyncMethods","length","functions","prototype","proxyFn","target","methodName","fn","args","Asyncify","currData","ret","call","forEach","wasmAsyncMethod","propertyKey","descriptor","push","destroyVerify","console","error","PAGScaleMode","PAGScaleMode2","PAGViewListenerEvent","PAGViewListenerEvent2","ParagraphJustification","ParagraphJustification2","TextDirection","TextDirection2","LayerType","LayerType2","PAGTimeStretchMode","PAGTimeStretchMode2","MatrixIndex","MatrixIndex2","DecoderResult","DecoderResult2","ColorType","ColorType2","AlphaType","AlphaType2","types","freeze","__proto__","__defProp$e","__getOwnPropDesc$b","getOwnPropertyDescriptor","__decorateClass$b","decorators","key","kind","decorator","result","i","Matrix","wasmIns","isDestroyed","scaleX","skewX","transX","skewY","scaleY","transY","pers0","pers1","pers2","_Matrix","_MakeAll","_MakeScale","dx","dy","_MakeTrans","_get","a","value","_a","_set","b","c","d","tx","ty","index","_setAll","_setAffine","_reset","_setTranslate","sx","sy","px","py","_setScale","degrees","_setRotate","sinV","cosV","_setSinCos","kx","ky","_setSkew","_setConcat","_preTranslate","_preScale","_preRotate","_preSkew","other","_preConcat","_postTranslate","_postScale","_postRotate","_postSkew","_postConcat","delete","rewindData","scope","proxyVector","vector","process","proxy","Proxy","property","receiver","get","push_back","size","Reflect","layer2typeLayer","_layerType","Solid","PAGSolidLayer","Text","PAGTextLayer","Image","PAGImageLayer","PAGLayer","getLayerTypeName","layerType","Shape","PreCompose","getWasmIns","isInstanceOf","type","__defProp$d","__getOwnPropDesc$a","__decorateClass$a","_uniqueID","_layerName","_matrix","matrix","_setMatrix","_resetMatrix","_getTotalMatrix","_alpha","opacity","_setAlpha","_visible","visible","_setVisible","_editableIndex","_parent","PAGComposition","_markers","wasmIns2","localTime","_localTimeToGlobal","globalTime","_globalToLocalTime","_duration","_frameRate","_startTime","time","_setStartTime","_currentTime","_setCurrentTime","_getProgress","percent","_setProgress","_preFrame","_nextFrame","_getBounds","_trackMatteLayer","_excludedFromTimeline","_setExcludedFromTimeline","_isPAGFile","isDelete","__defProp$c","__getOwnPropDesc$9","__decorateClass$9","width","height","_PAGComposition","_Make","_width","_height","_setContentSize","_numChildren","_getLayerAt","pagLayer","_getLayerIndex","_setLayerIndex","_addLayer","_addLayerAt","_contains","_removeLayer","_removeLayerAt","_removeAllLayers","pagLayer1","pagLayer2","_swapLayer","index1","index2","_swapLayerAt","_audioBytes","_audioMarkers","_audioStartTime","layerName","_getLayersByName","localX","localY","_getLayersUnderPoint","readFile","file","Promise","resolve","reader","FileReader","onload","onerror","message","readAsArrayBuffer","transferToArrayBuffer","data","File","Blob","ArrayBuffer","writeBufferToWasm","uint8Array","Uint8Array","numBytes","byteLength","dataPtr","_malloc","dataOnHeap","HEAPU8","buffer","set","byteOffset","free","_free","readBufferFromWasm","handle","__defProp$b","__getOwnPropDesc$8","__decorateClass$8","PAGFile","loadFromBuffer","_PAGFile","_Load","pagFile","_MaxSupportedTagLevel","_tagLevel","_numTexts","_numImages","_numVideos","editableTextIndex","_getTextData","textData","_replaceText","editableImageIndex","pagImage","_replaceImage","editableIndex","_getLayersByEditableIndex","_getEditableIndices","_timeStretchMode","_setTimeStretchMode","duration","_setDuration","_copyOriginal","__defProp$a","__getOwnPropDesc$7","__decorateClass$7","PAGSurface","canvasID","_PAGSurface","_FromCanvas","textureID","flipY","_FromTexture","frameBufferID","_FromRenderTarget","_updateSize","_clearAll","_freeCache","colorType","alphaType","Unknown","rowBytes","ALPHA_8","dataUint8Array","_readPixels","__defProp$9","__getOwnPropDesc$6","__decorateClass$6","PAGPlayer","videoReaders","_PAGPlayer","progress","webAssemblyQueue","exec","_flush","callback","res","async","currentPlayer","res2","videoReader","getError","_currentFrame","_videoEnabled","enabled","_setVideoEnabled","_cacheEnabled","_setCacheEnabled","_cacheScale","_setCacheScale","_maxFrameRate","_setMaxFrameRate","_scaleMode","_setScaleMode","pagSurface","_setSurface","_getComposition","pagComposition","_setComposition","_getSurface","_autoClear","_setAutoClear","surfaceX","surfaceY","pixelHitTest","_hitTestPoint","_renderingTime","_imageDecodingTime","_presentingTime","_graphicsMemory","_prepare","splice","__defProp$8","__getOwnPropDesc$5","__decorateClass$5","PAGImage","reject","image","fromSource","src","URL","createObjectURL","source","_PAGImage","_FromNativeImage","pixels","_FromPixels","scaleMode","EventManager","listenerMap","Map","eventName","listener","listenerList","has","event","VIDEO_DECODE_WAIT_FRAME","VIDEO_DECODE_SEEK_TIMEOUT_FRAME","DEFAULT_CANVAS_SIZE","WEBGL_CONTEXT_ATTRIBUTES","depth","stencil","antialias","VIDEO_PLAYBACK_RATE_MIN","VIDEO_PLAYBACK_RATE_MAX","CANVAS_POOL_MAX_SIZE","nav","navigator","userAgent","ANDROID","test","MOBILE","IPHONE","WECHAT","SAFARI_OR_IOS_WEBVIEW","WORKER","importScripts","canvasPool","Array","isOffscreenCanvas","element","OffscreenCanvas","isCanvas","HTMLCanvasElement","getCanvas2D","canvas","pop","createCanvas2D","releaseCanvas2D","document","createElement","offscreenCanvas","context","getContext","measureText","err","calculateDisplaySize","styleDeclaration","getComputedStyle","computedSize","Number","replace","styleSize","style","__defProp$7","__getOwnPropSymbols$3","getOwnPropertySymbols","__hasOwnProp$3","hasOwnProperty","__propIsEnum$3","propertyIsEnumerable","__defNormalProp$3","obj","enumerable","configurable","writable","__spreadValues$3","prop","BackendContext","adopted","oldHandle","gl","majorVersion","WebGL2RenderingContext","GL","id","contexts","findIndex","GLctx","registerContext","minorVersion","currentContext","makeContextCurrent","texture","register","textures","handled","framebuffer","framebuffers","deleteContext","table","item","getNewId","__defProp$6","__getOwnPropSymbols$2","__hasOwnProp$2","__propIsEnum$2","__defNormalProp$2","__spreadValues$2","renderCanvasList","RenderCanvas","contextAttributes","_canvas","_glContext","retainCount","from","renderCanvas","find","targetCanvas","destroy","getTime","performance","now","bind","e","Date","Clock","startTime","markers","keys","markerKey","log","makerFrom","makerTo","start","end","__defProp$5","__getOwnPropDesc$4","__getOwnPropSymbols$1","__hasOwnProp$1","__propIsEnum$1","__defNormalProp$1","__spreadValues$1","__decorateClass$4","PAGView","pagPlayer","canvasElement","repeatCount","isPlaying","pagViewOptions","useScale","useCanvas2D","firstFrame","pagGlContext","frameRate","playFrame","timer","flushingNextFrame","playTime","repeatedTimes","eventManager","rawWidth","rawHeight","debugData","FPS","flushTime","fpsBuffer","player","initOptions","getElementById","substr","create","pagView","globalCanvas","retain","glContext","resetSize","makePAGSurface","setSurface","setComposition","setProgress","flush","makeCurrent","fromRenderTarget","clearCurrent","on","off","getNowTime","flushLoop","emit","clearTimer","pause","notification","stop","getProgress","currentFrame","videoEnabled","enable","setVideoEnabled","cacheEnabled","setCacheEnabled","cacheScale","setCacheScale","maxFrameRate","setMaxFrameRate","setScaleMode","clock","flushInternal","_b","canvasContext","compositeOperation","globalCompositeOperation","drawImage","mark","setDebugData","measure","updateFPS","freeCache","getComposition","setMatrix","getLayersUnderPoint","prepare","createImageBitmap","_c","release","force","setTimer","flushNextFrame","Math","floor","count","needResetStartTime","setTimeout","requestAnimationFrame","clearTimeout","cancelAnimationFrame","displaySize","devicePixelRatio","VideoReader","isSought","fontNames","defaultFontNames","concat","getFontFamilies","nameChars","split","names","join","fontFamilies","reduce","pre","cur","__defProp$4","__getOwnPropDesc$3","__decorateClass$3","PAGFont","fontFamily","fontStyle","_PAGFont","_create","family","fontFace","FontFace","fonts","add","load","vectorNames","VectorString","_SetFallbackFontNames","eventHandlers","addListener","node","handler","capture","addEventListener","removeListener","targetNode","targetHandler","removeEventListener","removeAllListeners","WorkerMessageType","WorkerMessageType2","messageCount","generateMessageName","postMessage","worker","transfer","BitmapImage","bitmap","close","WorkerVideoReader","proxyId","bitmapImage","targetFrame","playbackRate","VideoReader_prepare","setBitmap","VideoReader_play","VideoReader_pause","VideoReader_stop","VideoReader_getError","UHD_RESOLUTION","getWechatNetwork","WeixinJSBridge","invoke","waitVideoCanPlay","videoElement","canplayHandle","staticTimeRanges","isWorker","videoEl","canplay","disablePlaybackRate","bitmapCanvas","bitmapCtx","HTMLVideoElement","display","muted","playsInline","preload","then","blob","StaticTimeRanges","linkPlayer","slice","VideoReader_constructor","linkVideoReader","setError","currentTime","targetTime","play","round","contains","seek","abs","targetPlaybackRate","min","max","paused","fillRect","visibilityState","visibilityHandle","unlinkVideoReader","isCallback","setVideoState","seekCallback","timeRanges","timeRange","imageData","imageDataInt32Array","Int32Array","left","getLeftPixel","top","getTopPixel","right","getRightPixel","bottom","getBottomPixel","imageDataArray","verticalCount","acrossCount","j","ScalerContext","fontName","fauxBold","fauxItalic","fontBoundingBoxMap","loadCanvas","RegExp","text","emojiRegExp","isUnicodePropertyEscapeSupported","attributes","fallbackFontNames","unshift","font","fontString","metrics","bounds","actualBoundingBoxLeft","actualBoundingBoxAscent","ceil","actualBoundingBoxRight","actualBoundingBoxDescent","capHeight","xMetrics","xHeight","ascent","fontBoundingBoxAscent","descent","fontBoundingBoxDescent","fillText","setCanvas","setContext","willReadFrequently","ctx","pos","clearRect","getImageData","fontMeasure","fontBoundingBox","fontImageData","WebMask","cap","TGFXLineCap","Round","Square","TGFXLineJoin","Bevel","path","fillType","setTransform","TGFXPathFillType","InverseWinding","InverseEvenOdd","clip","fill","EvenOdd","webFont","texts","positions","matrixWasmIns","scalerContext","bold","italic","position","x","y","stroke","lineJoin","getLineJoin","miterLimit","lineCap","getLineCap","lineWidth","strokeText","GlobalCanvas","__defProp$3","__getOwnPropDesc$2","__decorateClass$2","fontSize","_PAGTextLayer","_fillColor","_setFillColor","_font","pagFont","_setFont","_fontSize","_setFontSize","_strokeColor","_setStrokeColor","_text","_setText","__defProp$2","__getOwnPropDesc$1","__decorateClass$1","_PAGImageLayer","_contentDuration","_getVideoRanges","_setImage","layerTime","_layerTimeToContent","contentTime","_contentTimeToLayer","_imageBytes","__defProp$1","__getOwnPropDesc","__decorateClass","solidColor","_PAGSolidLayer","_solidColor","color","_setSolidColor","createImage","createImageFromBytes","bytes","readImagePixels","hasWebpSupport","toDataURL","getSourceSize","videoWidth","videoHeight","uploadToTexture","alphaOnly","renderSource","bindTexture","TEXTURE_2D","pixelStorei","UNPACK_ALIGNMENT","texSubImage2D","ALPHA","UNSIGNED_BYTE","UNPACK_PREMULTIPLY_ALPHA_WEBGL","RGBA","isAndroidMiniprogram","wx","getSystemInfoSync","platform","releaseNativeImage","ImageBitmap","getBytesFromPath","fetch","arrayBuffer","tgfx","setMixin","traceImage","info","ImageData","Uint8ClampedArray","putImageData","body","appendChild","registerSoftwareDecoderFactory","_registerSoftwareDecoderFactory","SDKVersion","_SDKVersion","isIPhone","__defProp","__getOwnPropSymbols","__hasOwnProp","__propIsEnum","__defNormalProp","__spreadValues","binding","PAGInit$1","_scriptDir","currentScript","PAGInit2","readyPromiseResolve","readyPromiseReject","Module","moduleOverrides","assign","quit_","status","toThrow","ENVIRONMENT_IS_WEB","ENVIRONMENT_IS_WORKER","versions","read_","readAsync","readBinary","scriptDirectory","locateFile","location","href","lastIndexOf","url","xhr","XMLHttpRequest","open","send","responseText","responseType","response","out","warn","wasmBinary","wasmMemory","POINTER_SIZE","WebAssembly","abort","EXITSTATUS","ABORT","assert","condition","HEAP8","HEAP16","HEAPU16","HEAP32","HEAPU32","HEAPF32","HEAPF64","UTF8Decoder","TextDecoder","UTF8ArrayToString","heapOrArray","idx","maxBytesToRead","endIdx","endPtr","decode","subarray","str","u0","u1","u2","String","fromCharCode","ch","UTF8ToString","ptr","stringToUTF8Array","heap","outIdx","maxBytesToWrite","startIdx","i2","u","charCodeAt","stringToUTF8","outPtr","lengthBytesUTF8","len","updateGlobalBufferAndViews","buf","Int8Array","Int16Array","Uint16Array","Uint32Array","Float32Array","Float64Array","__ATPRERUN__","__ATINIT__","__ATPOSTRUN__","preRun","addOnPreRun","shift","callRuntimeCallbacks","initRuntime","FS","init","initialized","ignorePermissions","postRun","addOnPostRun","cb","addOnInit","runDependencies","dependenciesFulfilled","getUniqueRunDependency","addRunDependency","removeRunDependency","what","RuntimeError","wasmBinaryFile","tempDouble","tempI64","dataURIPrefix","isDataURI","filename","startsWith","getBinary","err2","getBinaryPromise","credentials","catch","createWasm","asmLibraryArg","receiveInstance","instance","exports2","instrumentWasmExports","receiveInstantiationResult","instantiateArrayBuffer","binary","instantiate","reason","instantiateAsync","instantiateStreaming","ExitStatus","callbacks","handleException","___assert_fail","line","func","___cxa_allocate_exception","ExceptionInfo","excPtr","set_type","get_type","set_destructor","destructor","get_destructor","set_refcount","refcount","set_caught","caught","get_caught","set_rethrown","rethrown","get_rethrown","set_adjusted_ptr","add_ref","release_ref","prev","adjustedPtr","get_adjusted_ptr","get_exception_ptr","isPointer","___cxa_is_pointer_type","adjusted","___cxa_throw","setErrNo","___errno_location","PATH","isAbs","charAt","splitPath","splitPathRe","normalizeArray","parts","allowAboveRoot","up","last","normalize","isAbsolute","trailingSlash","p","dirname","root","dir","basename","lastSlash","paths","arguments","join2","l","r","getRandomDevice","crypto","randomBuffer","getRandomValues","PATH_FS","resolvedPath","resolvedAbsolute","cwd","TypeError","relative","to","trim","arr","fromParts","toParts","samePartsLength","outputParts","intArrayFromString","stringy","dontAddNull","u8array","numBytesWritten","TTY","ttys","shutdown","dev","ops","input","output","registerDevice","stream_ops","stream","tty","rdev","ErrnoError","seekable","fsync","read","buffer2","offset","get_char","bytesRead","timestamp","write","put_char","default_tty_ops","prompt","readline","val","default_tty1_ops","mmapAlloc","MEMFS","ops_table","mount","createNode","parent","mode","isBlkdev","isFIFO","getattr","node_ops","setattr","lookup","mknod","rename","unlink","rmdir","readdir","symlink","llseek","allocate","mmap","msync","link","readlink","chrdev","chrdev_stream_ops","isDir","contents","isFile","usedBytes","isLink","isChrdev","getFileDataAsTypedArray","expandFileStorage","newCapacity","prevCapacity","CAPACITY_DOUBLING_MAX","oldContents","resizeFileStorage","newSize","attr","ino","nlink","uid","gid","atime","mtime","ctime","blksize","blocks","genericErrors","old_node","new_dir","new_name","new_node","lookupNode","entries","newname","oldpath","canOwn","whence","prot","flags","allocated","mmapFlags","asyncLoad","noRunDep","dep","mounts","devices","streams","nextInode","nameTable","currentPath","filesystems","syncFSRequests","lookupPath","opts","defaults","follow_mount","recurse_count","current","current_path","islast","isMountpoint","mounted","follow","getPath","isRoot","mountpoint","hashName","parentid","hash","hashAddNode","name_next","hashRemoveNode","errCode","mayLookup","nodeName","FSNode","destroyNode","isSocket","flagModes","modeStringToFlags","flagsToPermissionString","flag","perms","nodePermissions","includes","mayCreate","mayDelete","isdir","errno","mayOpen","MAX_OPEN_FDS","nextfd","fd_start","fd_end","fd","getStream","createStream","FSStream","shared","defineProperties","object","isRead","isWrite","isAppend","closeStream","device","getDevice","major","minor","makedev","ma","mi","getMounts","check","m","apply","syncfs","populate","completed","doCallback","done","errored","pseudo","mountRoot","unmount","next","mkdir","mkdirTree","dirs","mkdev","newpath","old_path","new_path","old_dir","old_dirname","new_dirname","old_name","stat","dontFollow","lstat","chmod","lchmod","fchmod","chown","lchown","fchown","truncate","ftruncate","utime","created","ungotten","readFiles","isClosed","getdents","seeking","bytesWritten","munmap","ioctl","cmd","arg","encoding","writeFile","actualNumBytes","isView","chdir","createDefaultDirectories","createDefaultDevices","random_device","createDevice","createSpecialDirectories","proc_self","createStandardStreams","ensureErrnoError","setErrno","errno2","code","stack","staticInit","quit","getMode","canRead","canWrite","findObject","dontResolveLastLink","analyzePath","exists","parentExists","parentPath","parentObject","createPath","reverse","part","createFile","properties","createDataFile","forceLoadFile","isDevice","isFolder","createLazyFile","LazyUint8Array","lengthKnown","chunks","chunkOffset","chunkSize","chunkNum","getter","setDataGetter","cacheLength","header","datalength","getResponseHeader","hasByteServing","usesGzip","doXHR","xhr2","setRequestHeader","overrideMimeType","lazyArray2","_length","_chunkSize","lazyArray","writeChunks","createPreloadedFile","dontCreateFile","preFinish","fullname","processData","byteArray","finish","byteArray2","Browser","handledByPreloadPlugin","indexedDB","mozIndexedDB","webkitIndexedDB","msIndexedDB","DB_NAME","pathname","DB_VERSION","DB_STORE_NAME","saveFilesToDB","openRequest","onupgradeneeded","db","createObjectStore","onsuccess","transaction","files","objectStore","ok","fail","total","putRequest","put","loadFilesFromDB","getRequest","SYSCALLS","DEFAULT_POLLMASK","calculateAt","dirfd","allowEmpty","dirstream","getStreamFromFD","doStat","doMsync","addr","varargs","getStr","___syscall_fcntl64","newStream","___syscall_ioctl","op","argp","___syscall_openat","structRegistrations","runDestructors","destructors","del","simpleReadValueFromPointer","pointer","awaitingDependencies","registeredTypes","typeDependencies","char_0","char_9","makeLegalFunctionName","f","createNamedFunction","Function","extendError","baseErrorType","errorName","errorClass","toString","InternalError","throwInternalError","whenDependentTypesAreResolved","myTypes","dependentTypes","getTypeConverters","onComplete","typeConverters2","myTypeConverters","registerType","typeConverters","unregisteredTypes","registered","dt","__embind_finalize_value_object","structType","reg","rawConstructor","rawDestructor","fieldRecords","fields","fieldTypes","map","field","getterReturnType","setterArgumentType","fieldTypes2","fieldName","getterContext","setter","setterContext","o","rv","destructorFunction","__embind_register_bigint","primitiveType","minRange","maxRange","getShiftFromSize","embind_init_charCodes","codes","embind_charCodes","readLatin1String","BindingError","throwBindingError","rawType","registeredInstance","options","ignoreDuplicateRegistrations","__embind_register_bool","trueValue","falseValue","wt","ClassHandle_isAliasOf","ClassHandle","leftClass","$$","ptrType","registeredClass","rightClass","baseClass","upcast","shallowCopyInternalPointer","deleteScheduled","preservePointerOnDelete","smartPtr","smartPtrType","throwInstanceAlreadyDeleted","getInstanceTypeName","finalizationRegistry","detachFinalizer","runDestructor","releaseClassHandle","toDelete","downcastPointer","ptrClass","desiredClass","downcast","registeredPointers","getInheritedInstanceCount","registeredInstances","getLiveInheritedInstances","k","deletionQueue","flushPendingDeletes","delayFunction","setDelayFunction","init_embind","getBasestPointer","class_","getInheritedInstance","makeClassHandle","record","hasSmartPtrType","hasSmartPtr","attachFinalizer","RegisteredPointer_fromWireType","rawPointer","getPointee","makeDefaultHandle","isSmartPointer","instancePrototype","pointeeType","toType","actualType","getActualType","registeredPointerRecord","isConst","constPointerType","pointerType","dp","FinalizationRegistry","handle2","unregister","ClassHandle_clone","clone","getPrototypeOf","ClassHandle_delete","ClassHandle_isDeleted","ClassHandle_deleteLater","init_ClassHandle","ensureOverloadTable","proto","humanName","overloadTable","prevFunc","argCount","exposePublicSymbol","numArguments","RegisteredClass","pureVirtualFunctions","upcastPointer","constNoSmartPtrRawPointerToWireType","isReference","embindRepr","handleClass","genericPointerToWireType","sharingPolicy","clonedHandle","rawShare","Emval","toHandle","nonConstNoSmartPtrRawPointerToWireType","RegisteredPointer_getPointee","rawGetPointee","RegisteredPointer_destructor","RegisteredPointer_deleteObject","init_RegisteredPointer","RegisteredPointer","replacePublicSymbol","dynCallLegacy","sig","dynCall","getDynCaller","argCache","embind__requireFunction","signature","rawFunction","makeDynCaller","fp","UnboundTypeError","getTypeName","___getTypeName","throwUnboundTypeError","unboundTypes","seen","visit","__embind_register_class","rawPointerType","rawConstPointerType","baseClassRawType","getActualTypeSignature","upcastSignature","downcastSignature","destructorSignature","legalFunctionName","base","basePrototype","constructor_body","referenceConverter","pointerConverter","constPointerConverter","new_","argumentList","dummy","runAndAbortIfError","callUserCallback","State","Normal","Unwinding","Rewinding","Disabled","state","StackSize","handleSleepReturnValue","exportCallStack","callStackNameToId","callStackIdToName","callStackId","asyncPromiseHandlers","sleepCallbacks","getCallStackId","funcName","instrumentWasmImports","imports","ASYNCIFY_IMPORTS","x2","original","maybeStopUnwind","_asyncify_stop_unwind","Fibers","trampoline","whenDone","allocateData","setDataHeader","setDataRewindFunc","stackSize","bottomOfCallStack","rewindId","getDataRewindFunc","doRewind","handleSleep","startAsync","reachedCallback","reachedAfterCallback","_asyncify_start_rewind","mainLoop","resume","asyncWasmReturnValue","isError","_asyncify_start_unwind","_asyncify_stop_rewind","handleAsync","wakeUp","craftInvokerFunction","argTypes","classType","cppInvokerFunc","cppTargetFunc","isClassMethodFunc","needsDestructorStack","returns","argsList","argsListWired","invokerFnBody","dtorStack","args1","args2","paramName","invokerFunction","heap32VectorToArray","firstElement","array","__embind_register_class_class_function","rawClassType","rawArgTypesAddr","invokerSignature","rawInvoker","rawArgTypes","unboundTypesHandler","Symbol","substring","invokerArgsArray","__embind_register_class_constructor","invoker","__embind_register_class_function","isPureVirtual","method","className","memberFunction","validateThis","this_","__embind_register_class_property","getterSignature","setterSignature","classType2","desc","v","getterReturnType2","desc2","setterArgumentType2","emval_free_list","emval_handle_array","__emval_decref","count_emval_handles","get_first_emval","init_emval","toValue","__embind_register_emval","enumReadValueFromPointer","signed","__embind_register_enum","isSigned","ctor","values","requireRegisteredType","impl","__embind_register_enum_value","rawEnumType","enumValue","enumType","Enum","Value","t","floatReadValueFromPointer","__embind_register_float","__embind_register_function","argTypes2","integerReadValueFromPointer","__embind_register_integer","fromWireType","bitshift","toWireType","isUnsignedType","checkAssertions","toTypeName","__embind_register_memory_view","dataTypeIndex","typeMapping","TA","decodeMemoryView","__embind_register_smart_ptr","rawPointeeType","getPointeeSignature","constructorSignature","shareSignature","registeredPointer","__embind_register_std_string","stdStringIsUTF8","payload","decodeStartPtr","currentBytePtr","maxRead","stringSegment","valueIsOfTypeString","charCode","UTF16Decoder","UTF16ToString","maxIdx","codeUnit","stringToUTF16","startPtr","numCharsToWrite","lengthBytesUTF16","UTF32ToString","utf32","stringToUTF32","trailSurrogate","lengthBytesUTF32","__embind_register_std_wstring","charSize","decodeString","encodeString","getHeap","lengthBytesUTF","HEAP","maxReadBytes","__embind_register_value_object","__embind_register_value_object_field","__embind_register_void","isVoid","nowIsMonotonic","__emscripten_get_now_is_monotonic","__emval_as","returnType","destructorsRef","rd","__emval_await","promise","emval_lookupTypes","__emval_call","argv","emval_allocateDestructors","emval_symbols","getStringOrSymbol","address","symbol","emval_methodCallers","__emval_call_method","caller","__emval_call_void_method","__emval_equals","first","second","emval_get_global","__emval_get_global","emval_addMethodCaller","emval_registeredMethods","__emval_get_method_caller","retType","signatureName","returnId","params","functionName","functionBody","__emval_get_module_property","__emval_get_property","__emval_incref","__emval_instanceof","craftEmvalAllocator","getMemory","emval_newers","__emval_new","newer","__emval_new_array","__emval_new_cstring","__emval_new_object","__emval_run_destructors","__emval_set_property","__emval_take_value","_abort","JSEvents","inEventHandler","removeAllEventListeners","_removeHandler","deferredCalls","registerRemoveEventListeners","removeEventListenersRegistered","deferCall","targetFunction","precedence","arraysHaveEqualContent","arrA","arrB","i3","sort","removeDeferredCalls","canPerformEventHandlerRequests","currentEventHandler","allowsDeferredCalls","runDeferredCalls","removeAllHandlersOnTarget","eventTypeString","h","eventListenerFunc","useCapture","registerOrRemoveHandler","eventHandler","jsEventHandler","handlerFunc","callbackfunc","getNodeNameForTarget","screen","fullscreenEnabled","webkitFullscreenEnabled","maybeCStringToJsString","cString","_emscripten_get_now","specialHTMLTargets","findEventTarget","domElement","querySelector","findCanvasEventTarget","_emscripten_get_canvas_element_size","__webgl_enable_ANGLE_instanced_arrays","ext","getExtension","divisor","primcount","indices","__webgl_enable_OES_vertex_array_object","vao","__webgl_enable_WEBGL_draw_buffers","n","bufs","__webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance","dibvbi","__webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance","mdibvbi","__webgl_enable_WEBGL_multi_draw","multiDrawWebgl","counter","buffers","programs","renderbuffers","shaders","vaos","offscreenCanvases","queries","samplers","transformFeedbacks","syncs","stringCache","stringiCache","unpackAlignment","recordError","errorCode","lastError","getSource","shader","string","createContext","webGLContextAttributes","getContextSafariWebGL2Fixed","fixedGetContext","ver","attrs","WebGLRenderingContext","version","GLctxObject","enableExtensionsByDefault","initExtensions","contextHandle","initExtensionsDone","GLctx2","disjointTimerQueryExt","exts","getSupportedExtensions","_emscripten_glActiveTexture","x0","_emscripten_glAttachShader","program","attachShader","_emscripten_glBindAttribLocation","bindAttribLocation","_emscripten_glBindBuffer","currentPixelPackBufferBinding","currentPixelUnpackBufferBinding","bindBuffer","_emscripten_glBindFramebuffer","bindFramebuffer","_emscripten_glBindRenderbuffer","renderbuffer","bindRenderbuffer","_emscripten_glBindTexture","_emscripten_glBindVertexArray","_emscripten_glBindVertexArrayOES","_emscripten_glBlendColor","x1","x3","_emscripten_glBlendEquation","_emscripten_glBlendEquationSeparate","_emscripten_glBlendFunc","_emscripten_glBlitFramebuffer","x4","x5","x6","x7","x8","x9","_emscripten_glBufferData","usage","bufferData","_emscripten_glCheckFramebufferStatus","_emscripten_glClear","_emscripten_glClearColor","_emscripten_glClearStencil","_emscripten_glColorMask","red","green","blue","alpha","colorMask","_emscripten_glCompileShader","compileShader","_emscripten_glCopyTexSubImage2D","_emscripten_glCreateProgram","createProgram","maxUniformLength","maxAttributeLength","maxUniformBlockNameLength","uniformIdCounter","_emscripten_glCreateShader","shaderType","createShader","_emscripten_glDeleteBuffers","deleteBuffer","_emscripten_glDeleteFramebuffers","deleteFramebuffer","_emscripten_glDeleteProgram","deleteProgram","_emscripten_glDeleteRenderbuffers","deleteRenderbuffer","_emscripten_glDeleteShader","deleteShader","_emscripten_glDeleteSync","sync","deleteSync","_emscripten_glDeleteTextures","deleteTexture","_emscripten_glDeleteVertexArrays","_emscripten_glDeleteVertexArraysOES","_emscripten_glDepthMask","depthMask","_emscripten_glDisable","_emscripten_glDisableVertexAttribArray","disableVertexAttribArray","_emscripten_glDrawArrays","drawArrays","_emscripten_glDrawElements","drawElements","_emscripten_glEnable","_emscripten_glEnableVertexAttribArray","enableVertexAttribArray","_emscripten_glFenceSync","fenceSync","_emscripten_glFinish","_emscripten_glFlush","_emscripten_glFramebufferRenderbuffer","attachment","renderbuffertarget","framebufferRenderbuffer","_emscripten_glFramebufferTexture2D","textarget","level","framebufferTexture2D","__glGenObject","createFunction","objectTable","_emscripten_glGenBuffers","_emscripten_glGenFramebuffers","ids","_emscripten_glGenRenderbuffers","_emscripten_glGenTextures","_emscripten_glGenVertexArrays","arrays","_emscripten_glGenVertexArraysOES","_emscripten_glGetAttribLocation","getAttribLocation","_emscripten_glGetBufferParameteriv","getBufferParameter","_emscripten_glGetError","_emscripten_glGetFramebufferAttachmentParameteriv","pname","getFramebufferAttachmentParameter","WebGLRenderbuffer","WebGLTexture","writeI53ToI64","num","emscriptenWebGLGet","name_","formats","getParameter","_emscripten_glGetIntegerv","_emscripten_glGetProgramInfoLog","maxLength","infoLog","getProgramInfoLog","numBytesWrittenExclNull","_emscripten_glGetProgramiv","getProgramParameter","getActiveUniform","getActiveAttrib","getActiveUniformBlockName","_emscripten_glGetRenderbufferParameteriv","getRenderbufferParameter","_emscripten_glGetShaderInfoLog","getShaderInfoLog","_emscripten_glGetShaderPrecisionFormat","precisionType","range","precision","getShaderPrecisionFormat","rangeMin","rangeMax","_emscripten_glGetShaderiv","logLength","getShaderSource","sourceLength","getShaderParameter","stringToNewUTF8","jsString","_emscripten_glGetString","s","glVersion","glslVersion","ver_re","ver_num","match","_emscripten_glGetStringi","jstoi_q","parseInt","webglGetLeftBracePos","webglPrepareUniformLocationsBeforeFirstUse","uniformLocsById","uniformSizeAndIdsByName","uniformArrayNamesById","nm","sz","lb","arrayName","_emscripten_glGetUniformLocation","arrayIndex","uniformBaseName","leftBrace","sizeAndId","getUniformLocation","_emscripten_glIsEnabled","_emscripten_glIsTexture","isTexture","_emscripten_glLineWidth","_emscripten_glLinkProgram","linkProgram","_emscripten_glPixelStorei","param","computeUnpackAlignedImageSize","sizePerPixel","alignment","roundedToNextMultipleOf","plainRowSize","alignedRowSize","__colorChannelsInGlTextureFormat","format","colorChannels","5","6","8","29502","29504","26917","26918","29846","29847","heapObjectForWebGLType","heapAccessShiftForWebGLHeap","clz32","BYTES_PER_ELEMENT","emscriptenWebGLGetTexPixelData","internalFormat","byteSize","_emscripten_glReadPixels","readPixels","pixelData","_emscripten_glRenderbufferStorage","_emscripten_glRenderbufferStorageMultisample","_emscripten_glScissor","_emscripten_glShaderSource","shaderSource","_emscripten_glTexImage2D","border","texImage2D","_emscripten_glTexParameterf","_emscripten_glTexParameterfv","texParameterf","_emscripten_glTexParameteri","_emscripten_glTexParameteriv","texParameteri","_emscripten_glTexSubImage2D","xoffset","yoffset","webglGetUniformLocation","currentProgram","webglLoc","_emscripten_glUniform1f","v0","uniform1f","miniTempWebGLFloatBuffers","_emscripten_glUniform1fv","uniform1fv","view","_emscripten_glUniform1i","uniform1i","__miniTempWebGLIntBuffers","_emscripten_glUniform1iv","uniform1iv","_emscripten_glUniform2f","v1","uniform2f","_emscripten_glUniform2fv","uniform2fv","_emscripten_glUniform2i","uniform2i","_emscripten_glUniform2iv","uniform2iv","_emscripten_glUniform3f","v2","uniform3f","_emscripten_glUniform3fv","uniform3fv","_emscripten_glUniform3i","uniform3i","_emscripten_glUniform3iv","uniform3iv","_emscripten_glUniform4f","v3","uniform4f","_emscripten_glUniform4fv","uniform4fv","dst","_emscripten_glUniform4i","uniform4i","_emscripten_glUniform4iv","uniform4iv","_emscripten_glUniformMatrix2fv","transpose","uniformMatrix2fv","_emscripten_glUniformMatrix3fv","uniformMatrix3fv","_emscripten_glUniformMatrix4fv","uniformMatrix4fv","_emscripten_glUseProgram","useProgram","_emscripten_glVertexAttrib1f","_emscripten_glVertexAttrib2fv","vertexAttrib2f","_emscripten_glVertexAttrib3fv","vertexAttrib3f","_emscripten_glVertexAttrib4fv","vertexAttrib4f","_emscripten_glVertexAttribPointer","normalized","stride","vertexAttribPointer","_emscripten_glViewport","convertI32PairToI53","lo","hi","_emscripten_glWaitSync","timeoutLo","timeoutHi","waitSync","getHeapMax","emscripten_realloc_buffer","grow","_emscripten_resize_heap","requestedSize","oldSize","maxHeapSize","alignUp","multiple","cutDown","overGrownHeapSize","replacement","__emscripten_webgl_power_preferences","_emscripten_webgl_do_create_context","powerPreference","explicitSwapControl","proxyContextToMainThread","renderViaOffscreenBackBuffer","_emscripten_webgl_create_context","_emscripten_webgl_destroy_context","_emscripten_webgl_do_get_current_context","_emscripten_webgl_get_current_context","_emscripten_webgl_init_context_attributes","_emscripten_webgl_make_context_current","success","_fd_close","doReadv","iov","iovcnt","curr","_fd_read","pnum","convertI32PairToI53Checked","NaN","_fd_seek","offset_low","offset_high","newOffset","isNaN","doWritev","_fd_write","readMode","writeMode","miniTempWebGLFloatBuffersStorage","__miniTempWebGLIntBuffersStorage","calledRun","run","doRun","runCaller","ready","WebAssemblyQueue","executing","queue","copyFn","execNextTask","task","pagFiles","registerPAGFile","deletePAGFile","pagViews","registerPAGView","deletePAGView","pagImages","registerPAGImage","deletePAGImage","textDataMap","registerTextData","deleteTextData","workerInit","onmessage","messageHandles","PAGInit","event2","option","fileUrl","PAG","PAGFile_load","key2","PAGView_init","pagFileKey","PAGView_destroy","pagViewKey","PAGFile_getTextData","getTextData","virtualTextData","PAGFile_replaceText","replaceText","PAGFile_replaceImage","pagImageKey","replaceImage","PAGFile_destroy","PAGImage_fromSource","PAGImage_destroy","TextDocument_delete","textDataKey","fnName","moduleOption","registerFallbackFontNames"],"mappings":"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","file":"manageStatic/js/chunk-2d0cba97.d5663d8a.js","sourcesContent":["/////////////////////////////////////////////////////////////////////////////////////////////////\n//\n// Tencent is pleased to support the open source community by making libpag available.\n//\n// Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file\n// except in compliance with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// unless required by applicable law or agreed to in writing, software distributed under the\n// license is distributed on an \"as is\" basis, without warranties or conditions of any kind,\n// either express or implied. see the license for the specific language governing permissions\n// and limitations under the license.\n//\n/////////////////////////////////////////////////////////////////////////////////////////////////\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.libpag = {}));\n})(this, (function (exports) { 'use strict';\n\n const getGlobalObject = () => {\n if (typeof globalThis !== \"undefined\") {\n return globalThis;\n }\n if (typeof window !== \"undefined\") {\n return window;\n }\n if (typeof global !== \"undefined\") {\n return global;\n }\n if (typeof self !== \"undefined\") {\n return self;\n }\n throw new Error(\"unable to locate global object\");\n };\n const globalObject = getGlobalObject();\n if (typeof globalObject.globalThis === \"undefined\") {\n Object.defineProperty(globalObject, \"globalThis\", {\n get() {\n return globalObject;\n }\n });\n }\n\n let PAGModule;\n const setPAGModule = (module) => {\n PAGModule = module;\n };\n\n function wasmAwaitRewind(constructor) {\n const ignoreStaticFunctions = [\"length\", \"name\", \"prototype\", \"wasmAsyncMethods\"];\n let staticFunctions = Object.getOwnPropertyNames(constructor).filter(\n (name) => ignoreStaticFunctions.indexOf(name) === -1\n );\n if (constructor.wasmAsyncMethods && constructor.wasmAsyncMethods.length > 0) {\n staticFunctions = staticFunctions.filter((name) => constructor.wasmAsyncMethods.indexOf(name) === -1);\n }\n let functions = Object.getOwnPropertyNames(constructor.prototype).filter(\n (name) => name !== \"constructor\" && typeof constructor.prototype[name] === \"function\"\n );\n if (constructor.prototype.wasmAsyncMethods && constructor.prototype.wasmAsyncMethods.length > 0) {\n functions = functions.filter((name) => constructor.prototype.wasmAsyncMethods.indexOf(name) === -1);\n }\n const proxyFn = (target, methodName) => {\n const fn = target[methodName];\n target[methodName] = function(...args) {\n if (PAGModule.Asyncify.currData !== null) {\n const currData = PAGModule.Asyncify.currData;\n PAGModule.Asyncify.currData = null;\n const ret = fn.call(this, ...args);\n PAGModule.Asyncify.currData = currData;\n return ret;\n } else {\n return fn.call(this, ...args);\n }\n };\n };\n staticFunctions.forEach((name) => proxyFn(constructor, name));\n functions.forEach((name) => proxyFn(constructor.prototype, name));\n }\n function wasmAsyncMethod(target, propertyKey, descriptor) {\n if (!target.wasmAsyncMethods) {\n target.wasmAsyncMethods = [];\n }\n target.wasmAsyncMethods.push(propertyKey);\n }\n function destroyVerify(constructor) {\n let functions = Object.getOwnPropertyNames(constructor.prototype).filter(\n (name) => name !== \"constructor\" && typeof constructor.prototype[name] === \"function\"\n );\n const proxyFn = (target, methodName) => {\n const fn = target[methodName];\n target[methodName] = function(...args) {\n if (this[\"isDestroyed\"]) {\n console.error(`Don't call ${methodName} of the ${constructor.name} that is destroyed.`);\n return;\n }\n return fn.call(this, ...args);\n };\n };\n functions.forEach((name) => proxyFn(constructor.prototype, name));\n }\n\n var PAGScaleMode = /* @__PURE__ */ ((PAGScaleMode2) => {\n PAGScaleMode2[PAGScaleMode2[\"None\"] = 0] = \"None\";\n PAGScaleMode2[PAGScaleMode2[\"Stretch\"] = 1] = \"Stretch\";\n PAGScaleMode2[PAGScaleMode2[\"LetterBox\"] = 2] = \"LetterBox\";\n PAGScaleMode2[PAGScaleMode2[\"Zoom\"] = 3] = \"Zoom\";\n return PAGScaleMode2;\n })(PAGScaleMode || {});\n var PAGViewListenerEvent = /* @__PURE__ */ ((PAGViewListenerEvent2) => {\n PAGViewListenerEvent2[\"onAnimationStart\"] = \"onAnimationStart\";\n PAGViewListenerEvent2[\"onAnimationEnd\"] = \"onAnimationEnd\";\n PAGViewListenerEvent2[\"onAnimationCancel\"] = \"onAnimationCancel\";\n PAGViewListenerEvent2[\"onAnimationRepeat\"] = \"onAnimationRepeat\";\n PAGViewListenerEvent2[\"onAnimationUpdate\"] = \"onAnimationUpdate\";\n PAGViewListenerEvent2[\"onAnimationPlay\"] = \"onAnimationPlay\";\n PAGViewListenerEvent2[\"onAnimationPause\"] = \"onAnimationPause\";\n PAGViewListenerEvent2[\"onAnimationFlushed\"] = \"onAnimationFlushed\";\n return PAGViewListenerEvent2;\n })(PAGViewListenerEvent || {});\n var ParagraphJustification = /* @__PURE__ */ ((ParagraphJustification2) => {\n ParagraphJustification2[ParagraphJustification2[\"LeftJustify\"] = 0] = \"LeftJustify\";\n ParagraphJustification2[ParagraphJustification2[\"CenterJustify\"] = 1] = \"CenterJustify\";\n ParagraphJustification2[ParagraphJustification2[\"RightJustify\"] = 2] = \"RightJustify\";\n ParagraphJustification2[ParagraphJustification2[\"FullJustifyLastLineLeft\"] = 3] = \"FullJustifyLastLineLeft\";\n ParagraphJustification2[ParagraphJustification2[\"FullJustifyLastLineRight\"] = 4] = \"FullJustifyLastLineRight\";\n ParagraphJustification2[ParagraphJustification2[\"FullJustifyLastLineCenter\"] = 5] = \"FullJustifyLastLineCenter\";\n ParagraphJustification2[ParagraphJustification2[\"FullJustifyLastLineFull\"] = 6] = \"FullJustifyLastLineFull\";\n return ParagraphJustification2;\n })(ParagraphJustification || {});\n var TextDirection = /* @__PURE__ */ ((TextDirection2) => {\n TextDirection2[TextDirection2[\"Default\"] = 0] = \"Default\";\n TextDirection2[TextDirection2[\"Horizontal\"] = 1] = \"Horizontal\";\n TextDirection2[TextDirection2[\"Vertical\"] = 2] = \"Vertical\";\n return TextDirection2;\n })(TextDirection || {});\n var LayerType = /* @__PURE__ */ ((LayerType2) => {\n LayerType2[LayerType2[\"Unknown\"] = 0] = \"Unknown\";\n LayerType2[LayerType2[\"Null\"] = 1] = \"Null\";\n LayerType2[LayerType2[\"Solid\"] = 2] = \"Solid\";\n LayerType2[LayerType2[\"Text\"] = 3] = \"Text\";\n LayerType2[LayerType2[\"Shape\"] = 4] = \"Shape\";\n LayerType2[LayerType2[\"Image\"] = 5] = \"Image\";\n LayerType2[LayerType2[\"PreCompose\"] = 6] = \"PreCompose\";\n return LayerType2;\n })(LayerType || {});\n var PAGTimeStretchMode = /* @__PURE__ */ ((PAGTimeStretchMode2) => {\n PAGTimeStretchMode2[PAGTimeStretchMode2[\"None\"] = 0] = \"None\";\n PAGTimeStretchMode2[PAGTimeStretchMode2[\"Scale\"] = 1] = \"Scale\";\n PAGTimeStretchMode2[PAGTimeStretchMode2[\"Repeat\"] = 2] = \"Repeat\";\n PAGTimeStretchMode2[PAGTimeStretchMode2[\"RepeatInverted\"] = 3] = \"RepeatInverted\";\n return PAGTimeStretchMode2;\n })(PAGTimeStretchMode || {});\n var MatrixIndex = /* @__PURE__ */ ((MatrixIndex2) => {\n MatrixIndex2[MatrixIndex2[\"a\"] = 0] = \"a\";\n MatrixIndex2[MatrixIndex2[\"c\"] = 1] = \"c\";\n MatrixIndex2[MatrixIndex2[\"tx\"] = 2] = \"tx\";\n MatrixIndex2[MatrixIndex2[\"b\"] = 3] = \"b\";\n MatrixIndex2[MatrixIndex2[\"d\"] = 4] = \"d\";\n MatrixIndex2[MatrixIndex2[\"ty\"] = 5] = \"ty\";\n return MatrixIndex2;\n })(MatrixIndex || {});\n var DecoderResult = /* @__PURE__ */ ((DecoderResult2) => {\n DecoderResult2[DecoderResult2[\"Success\"] = 0] = \"Success\";\n DecoderResult2[DecoderResult2[\"TryAgainLater\"] = -1] = \"TryAgainLater\";\n DecoderResult2[DecoderResult2[\"Error\"] = -2] = \"Error\";\n return DecoderResult2;\n })(DecoderResult || {});\n var ColorType = /* @__PURE__ */ ((ColorType2) => {\n ColorType2[ColorType2[\"Unknown\"] = 0] = \"Unknown\";\n ColorType2[ColorType2[\"ALPHA_8\"] = 1] = \"ALPHA_8\";\n ColorType2[ColorType2[\"RGBA_8888\"] = 2] = \"RGBA_8888\";\n ColorType2[ColorType2[\"BGRA_8888\"] = 3] = \"BGRA_8888\";\n return ColorType2;\n })(ColorType || {});\n var AlphaType = /* @__PURE__ */ ((AlphaType2) => {\n AlphaType2[AlphaType2[\"Unknown\"] = 0] = \"Unknown\";\n AlphaType2[AlphaType2[\"Opaque\"] = 1] = \"Opaque\";\n AlphaType2[AlphaType2[\"Premultiplied\"] = 2] = \"Premultiplied\";\n AlphaType2[AlphaType2[\"Unpremultiplied\"] = 3] = \"Unpremultiplied\";\n return AlphaType2;\n })(AlphaType || {});\n\n var types = /*#__PURE__*/Object.freeze({\n __proto__: null,\n PAGScaleMode: PAGScaleMode,\n PAGViewListenerEvent: PAGViewListenerEvent,\n ParagraphJustification: ParagraphJustification,\n TextDirection: TextDirection,\n LayerType: LayerType,\n PAGTimeStretchMode: PAGTimeStretchMode,\n MatrixIndex: MatrixIndex,\n DecoderResult: DecoderResult,\n ColorType: ColorType,\n AlphaType: AlphaType\n });\n\n var __defProp$e = Object.defineProperty;\n var __getOwnPropDesc$b = Object.getOwnPropertyDescriptor;\n var __decorateClass$b = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$b(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result)\n __defProp$e(target, key, result);\n return result;\n };\n let Matrix = class {\n constructor(wasmIns) {\n this.isDestroyed = false;\n this.wasmIns = wasmIns;\n }\n static makeAll(scaleX, skewX, transX, skewY, scaleY, transY, pers0 = 0, pers1 = 0, pers2 = 1) {\n const wasmIns = PAGModule._Matrix._MakeAll(scaleX, skewX, transX, skewY, scaleY, transY, pers0, pers1, pers2);\n if (!wasmIns)\n throw new Error(\"Matrix.makeAll fail, please check parameters valid!\");\n return new Matrix(wasmIns);\n }\n static makeScale(scaleX, scaleY) {\n let wasmIns;\n if (scaleY !== void 0) {\n wasmIns = PAGModule._Matrix._MakeScale(scaleX, scaleY);\n } else {\n wasmIns = PAGModule._Matrix._MakeScale(scaleX);\n }\n if (!wasmIns)\n throw new Error(\"Matrix.makeScale fail, please check parameters valid!\");\n return new Matrix(wasmIns);\n }\n static makeTrans(dx, dy) {\n const wasmIns = PAGModule._Matrix._MakeTrans(dx, dy);\n if (!wasmIns)\n throw new Error(\"Matrix.makeTrans fail, please check parameters valid!\");\n return new Matrix(wasmIns);\n }\n get a() {\n return this.wasmIns ? this.wasmIns._get(MatrixIndex.a) : 0;\n }\n set a(value) {\n var _a;\n (_a = this.wasmIns) == null ? void 0 : _a._set(MatrixIndex.a, value);\n }\n get b() {\n return this.wasmIns ? this.wasmIns._get(MatrixIndex.b) : 0;\n }\n set b(value) {\n var _a;\n (_a = this.wasmIns) == null ? void 0 : _a._set(MatrixIndex.b, value);\n }\n get c() {\n return this.wasmIns ? this.wasmIns._get(MatrixIndex.c) : 0;\n }\n set c(value) {\n var _a;\n (_a = this.wasmIns) == null ? void 0 : _a._set(MatrixIndex.c, value);\n }\n get d() {\n return this.wasmIns ? this.wasmIns._get(MatrixIndex.d) : 0;\n }\n set d(value) {\n var _a;\n (_a = this.wasmIns) == null ? void 0 : _a._set(MatrixIndex.d, value);\n }\n get tx() {\n return this.wasmIns ? this.wasmIns._get(MatrixIndex.tx) : 0;\n }\n set tx(value) {\n var _a;\n (_a = this.wasmIns) == null ? void 0 : _a._set(MatrixIndex.tx, value);\n }\n get ty() {\n return this.wasmIns ? this.wasmIns._get(MatrixIndex.ty) : 0;\n }\n set ty(value) {\n var _a;\n (_a = this.wasmIns) == null ? void 0 : _a._set(MatrixIndex.ty, value);\n }\n get(index) {\n return this.wasmIns ? this.wasmIns._get(index) : 0;\n }\n set(index, value) {\n var _a;\n (_a = this.wasmIns) == null ? void 0 : _a._set(index, value);\n }\n setAll(scaleX, skewX, transX, skewY, scaleY, transY) {\n var _a;\n (_a = this.wasmIns) == null ? void 0 : _a._setAll(scaleX, skewX, transX, skewY, scaleY, transY, 0, 0, 1);\n }\n setAffine(a, b, c, d, tx, ty) {\n var _a;\n (_a = this.wasmIns) == null ? void 0 : _a._setAffine(a, b, c, d, tx, ty);\n }\n reset() {\n var _a;\n (_a = this.wasmIns) == null ? void 0 : _a._reset();\n }\n setTranslate(dx, dy) {\n var _a;\n (_a = this.wasmIns) == null ? void 0 : _a._setTranslate(dx, dy);\n }\n setScale(sx, sy, px = 0, py = 0) {\n var _a;\n (_a = this.wasmIns) == null ? void 0 : _a._setScale(sx, sy, px, py);\n }\n setRotate(degrees, px = 0, py = 0) {\n var _a;\n (_a = this.wasmIns) == null ? void 0 : _a._setRotate(degrees, px, py);\n }\n setSinCos(sinV, cosV, px = 0, py = 0) {\n var _a;\n (_a = this.wasmIns) == null ? void 0 : _a._setSinCos(sinV, cosV, px, py);\n }\n setSkew(kx, ky, px = 0, py = 0) {\n var _a;\n (_a = this.wasmIns) == null ? void 0 : _a._setSkew(kx, ky, px, py);\n }\n setConcat(a, b) {\n var _a;\n (_a = this.wasmIns) == null ? void 0 : _a._setConcat(a.wasmIns, b.wasmIns);\n }\n preTranslate(dx, dy) {\n var _a;\n (_a = this.wasmIns) == null ? void 0 : _a._preTranslate(dx, dy);\n }\n preScale(sx, sy, px = 0, py = 0) {\n var _a;\n (_a = this.wasmIns) == null ? void 0 : _a._preScale(sx, sy, px, py);\n }\n preRotate(degrees, px = 0, py = 0) {\n var _a;\n (_a = this.wasmIns) == null ? void 0 : _a._preRotate(degrees, px, py);\n }\n preSkew(kx, ky, px = 0, py = 0) {\n var _a;\n (_a = this.wasmIns) == null ? void 0 : _a._preSkew(kx, ky, px, py);\n }\n preConcat(other) {\n var _a;\n (_a = this.wasmIns) == null ? void 0 : _a._preConcat(other.wasmIns);\n }\n postTranslate(dx, dy) {\n var _a;\n (_a = this.wasmIns) == null ? void 0 : _a._postTranslate(dx, dy);\n }\n postScale(sx, sy, px = 0, py = 0) {\n var _a;\n (_a = this.wasmIns) == null ? void 0 : _a._postScale(sx, sy, px, py);\n }\n postRotate(degrees, px = 0, py = 0) {\n var _a;\n (_a = this.wasmIns) == null ? void 0 : _a._postRotate(degrees, px, py);\n }\n postSkew(kx, ky, px = 0, py = 0) {\n var _a;\n (_a = this.wasmIns) == null ? void 0 : _a._postSkew(kx, ky, px, py);\n }\n postConcat(other) {\n var _a;\n (_a = this.wasmIns) == null ? void 0 : _a._postConcat(other.wasmIns);\n }\n destroy() {\n this.wasmIns.delete();\n }\n };\n Matrix = __decorateClass$b([\n destroyVerify,\n wasmAwaitRewind\n ], Matrix);\n\n const rewindData = (fn, scope, ...args) => {\n if (PAGModule.Asyncify.currData !== null) {\n const currData = PAGModule.Asyncify.currData;\n PAGModule.Asyncify.currData = null;\n const ret = fn.call(scope, ...args);\n PAGModule.Asyncify.currData = currData;\n return ret;\n } else {\n return fn.call(scope, ...args);\n }\n };\n const proxyVector = (vector, process) => {\n const proxy = new Proxy(vector, {\n get(target, property, receiver) {\n switch (property) {\n case \"get\":\n return (index) => {\n const wasmIns = rewindData(target.get, target, index);\n return !wasmIns ? wasmIns : process(wasmIns);\n };\n case \"push_back\":\n return (value) => {\n rewindData(target.push_back, target, value.wasmIns || value);\n return void 0;\n };\n case \"size\":\n return () => {\n return rewindData(target.size, target);\n };\n default:\n return Reflect.get(target, property, receiver);\n }\n }\n });\n return proxy;\n };\n const layer2typeLayer = (wasmIns) => {\n switch (rewindData(wasmIns._layerType, wasmIns)) {\n case LayerType.Solid:\n return new PAGModule.PAGSolidLayer(wasmIns);\n case LayerType.Text:\n return new PAGModule.PAGTextLayer(wasmIns);\n case LayerType.Image:\n return new PAGModule.PAGImageLayer(wasmIns);\n default:\n return new PAGModule.PAGLayer(wasmIns);\n }\n };\n const getLayerTypeName = (layerType) => {\n switch (layerType) {\n case LayerType.Solid:\n return \"Solid\";\n case LayerType.Text:\n return \"Text\";\n case LayerType.Shape:\n return \"Shape\";\n case LayerType.Image:\n return \"Image\";\n case LayerType.PreCompose:\n return \"PreCompose\";\n default:\n return \"Unknown\";\n }\n };\n const getWasmIns = (value) => {\n if (value == null ? void 0 : value.wasmIns) {\n return value.wasmIns;\n }\n return value;\n };\n const isInstanceOf = (value, type) => typeof type !== \"undefined\" && value instanceof type;\n\n var __defProp$d = Object.defineProperty;\n var __getOwnPropDesc$a = Object.getOwnPropertyDescriptor;\n var __decorateClass$a = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$a(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result)\n __defProp$d(target, key, result);\n return result;\n };\n let PAGLayer = class {\n constructor(wasmIns) {\n this.isDestroyed = false;\n this.wasmIns = wasmIns;\n }\n uniqueID() {\n return this.wasmIns._uniqueID();\n }\n layerType() {\n return this.wasmIns._layerType();\n }\n layerName() {\n return this.wasmIns._layerName();\n }\n matrix() {\n const wasmIns = this.wasmIns._matrix();\n if (!wasmIns)\n throw new Error(\"Get matrix fail!\");\n return new Matrix(wasmIns);\n }\n setMatrix(matrix) {\n this.wasmIns._setMatrix(matrix.wasmIns);\n }\n resetMatrix() {\n this.wasmIns._resetMatrix();\n }\n getTotalMatrix() {\n const wasmIns = this.wasmIns._getTotalMatrix();\n if (!wasmIns)\n throw new Error(\"Get total matrix fail!\");\n return new Matrix(this.wasmIns._getTotalMatrix());\n }\n alpha() {\n return this.wasmIns._alpha();\n }\n setAlpha(opacity) {\n this.wasmIns._setAlpha(opacity);\n }\n visible() {\n return this.wasmIns._visible();\n }\n setVisible(visible) {\n this.wasmIns._setVisible(visible);\n }\n editableIndex() {\n return this.wasmIns._editableIndex();\n }\n parent() {\n const wasmIns = this.wasmIns._parent();\n if (!wasmIns)\n throw new Error(\"Get total matrix fail!\");\n return new PAGComposition(wasmIns);\n }\n markers() {\n const wasmIns = this.wasmIns._markers();\n if (!wasmIns)\n throw new Error(\"Get markers fail!\");\n return proxyVector(wasmIns, (wasmIns2) => wasmIns2);\n }\n localTimeToGlobal(localTime) {\n return this.wasmIns._localTimeToGlobal(localTime);\n }\n globalToLocalTime(globalTime) {\n return this.wasmIns._globalToLocalTime(globalTime);\n }\n duration() {\n return this.wasmIns._duration();\n }\n frameRate() {\n return this.wasmIns._frameRate();\n }\n startTime() {\n return this.wasmIns._startTime();\n }\n setStartTime(time) {\n this.wasmIns._setStartTime(time);\n }\n currentTime() {\n return this.wasmIns._currentTime();\n }\n setCurrentTime(time) {\n this.wasmIns._setCurrentTime(time);\n }\n getProgress() {\n return this.wasmIns._getProgress();\n }\n setProgress(percent) {\n this.wasmIns._setProgress(percent);\n }\n preFrame() {\n this.wasmIns._preFrame();\n }\n nextFrame() {\n this.wasmIns._nextFrame();\n }\n getBounds() {\n return this.wasmIns._getBounds();\n }\n trackMatteLayer() {\n const wasmIns = this.wasmIns._trackMatteLayer();\n if (!wasmIns)\n throw new Error(\"Get track matte layer fail!\");\n return layer2typeLayer(wasmIns);\n }\n excludedFromTimeline() {\n return this.wasmIns._excludedFromTimeline();\n }\n setExcludedFromTimeline(value) {\n this.wasmIns._setExcludedFromTimeline(value);\n }\n isPAGFile() {\n return this.wasmIns._isPAGFile();\n }\n asTypeLayer() {\n return layer2typeLayer(this);\n }\n isDelete() {\n return this.wasmIns.isDelete();\n }\n destroy() {\n this.wasmIns.delete();\n this.isDestroyed = true;\n }\n };\n PAGLayer = __decorateClass$a([\n destroyVerify,\n wasmAwaitRewind\n ], PAGLayer);\n\n var __defProp$c = Object.defineProperty;\n var __getOwnPropDesc$9 = Object.getOwnPropertyDescriptor;\n var __decorateClass$9 = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$9(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result)\n __defProp$c(target, key, result);\n return result;\n };\n let PAGComposition = class extends PAGLayer {\n static make(width, height) {\n const wasmIns = PAGModule._PAGComposition._Make(width, height);\n if (!wasmIns)\n throw new Error(\"Make PAGComposition fail!\");\n return new PAGComposition(wasmIns);\n }\n width() {\n return this.wasmIns._width();\n }\n height() {\n return this.wasmIns._height();\n }\n setContentSize(width, height) {\n this.wasmIns._setContentSize(width, height);\n }\n numChildren() {\n return this.wasmIns._numChildren();\n }\n getLayerAt(index) {\n const wasmIns = this.wasmIns._getLayerAt(index);\n if (!wasmIns)\n throw new Error(`Get layer at ${index} fail!`);\n return layer2typeLayer(wasmIns);\n }\n getLayerIndex(pagLayer) {\n return this.wasmIns._getLayerIndex(pagLayer.wasmIns);\n }\n setLayerIndex(pagLayer, index) {\n return this.wasmIns._setLayerIndex(pagLayer.wasmIns, index);\n }\n addLayer(pagLayer) {\n return this.wasmIns._addLayer(pagLayer.wasmIns);\n }\n addLayerAt(pagLayer, index) {\n return this.wasmIns._addLayerAt(pagLayer.wasmIns, index);\n }\n contains(pagLayer) {\n return this.wasmIns._contains(pagLayer.wasmIns);\n }\n removeLayer(pagLayer) {\n const wasmIns = this.wasmIns._removeLayer(pagLayer.wasmIns);\n if (!wasmIns)\n throw new Error(\"Remove layer fail!\");\n return layer2typeLayer(wasmIns);\n }\n removeLayerAt(index) {\n const wasmIns = this.wasmIns._removeLayerAt(index);\n if (!wasmIns)\n throw new Error(`Remove layer at ${index} fail!`);\n return layer2typeLayer(wasmIns);\n }\n removeAllLayers() {\n this.wasmIns._removeAllLayers();\n }\n swapLayer(pagLayer1, pagLayer2) {\n this.wasmIns._swapLayer(pagLayer1.wasmIns, pagLayer2.wasmIns);\n }\n swapLayerAt(index1, index2) {\n this.wasmIns._swapLayerAt(index1, index2);\n }\n audioBytes() {\n return this.wasmIns._audioBytes();\n }\n audioMarkers() {\n const wasmIns = this.wasmIns._audioMarkers();\n if (!wasmIns)\n throw new Error(`Get audioMarkers fail!`);\n return proxyVector(wasmIns, (wasmIns2) => wasmIns2);\n }\n audioStartTime() {\n return this.wasmIns._audioStartTime();\n }\n getLayersByName(layerName) {\n const wasmIns = this.wasmIns._getLayersByName(layerName);\n if (!wasmIns)\n throw new Error(`Get layers by ${layerName} fail!`);\n return proxyVector(wasmIns, layer2typeLayer);\n }\n getLayersUnderPoint(localX, localY) {\n const wasmIns = this.wasmIns._getLayersUnderPoint(localX, localY);\n if (!wasmIns)\n throw new Error(`Get layers under point ${localX},${localY} fail!`);\n return proxyVector(wasmIns, layer2typeLayer);\n }\n };\n PAGComposition = __decorateClass$9([\n destroyVerify,\n wasmAwaitRewind\n ], PAGComposition);\n\n const readFile = (file) => new Promise((resolve) => {\n const reader = new FileReader();\n reader.onload = () => {\n resolve(reader.result);\n };\n reader.onerror = () => {\n console.error(reader.error.message);\n };\n reader.readAsArrayBuffer(file);\n });\n const transferToArrayBuffer = (data) => {\n if (isInstanceOf(data, globalThis.File)) {\n return readFile(data);\n } else if (isInstanceOf(data, globalThis.Blob)) {\n return readFile(new File([data], \"\"));\n } else if (isInstanceOf(data, globalThis.ArrayBuffer)) {\n return Promise.resolve(data);\n }\n return Promise.resolve(null);\n };\n\n const writeBufferToWasm = (module, data) => {\n const uint8Array = new Uint8Array(data);\n const numBytes = uint8Array.byteLength;\n const dataPtr = module._malloc(numBytes);\n const dataOnHeap = new Uint8Array(module.HEAPU8.buffer, dataPtr, numBytes);\n dataOnHeap.set(uint8Array);\n return { byteOffset: dataPtr, length: numBytes, free: () => module._free(dataPtr) };\n };\n const readBufferFromWasm = (module, data, handle) => {\n const uint8Array = new Uint8Array(data);\n const dataPtr = module._malloc(uint8Array.byteLength);\n if (!handle(dataPtr, uint8Array.byteLength))\n return { data: null, free: () => module._free(dataPtr) };\n const dataOnHeap = new Uint8Array(module.HEAPU8.buffer, dataPtr, uint8Array.byteLength);\n uint8Array.set(dataOnHeap);\n return { data: uint8Array, free: () => module._free(dataPtr) };\n };\n\n var __defProp$b = Object.defineProperty;\n var __getOwnPropDesc$8 = Object.getOwnPropertyDescriptor;\n var __decorateClass$8 = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$8(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result)\n __defProp$b(target, key, result);\n return result;\n };\n let PAGFile = class extends PAGComposition {\n static async load(data) {\n const buffer = await transferToArrayBuffer(data);\n if (!buffer)\n throw new Error(\n \"Initialize PAGFile data type error, please put check data type must to be File \\uFF5C Blob | ArrayBuffer!\"\n );\n return PAGFile.loadFromBuffer(buffer);\n }\n static loadFromBuffer(buffer) {\n if (!buffer || !(buffer.byteLength > 0))\n throw new Error(\"Initialize PAGFile data not be empty!\");\n const { byteOffset, length, free } = writeBufferToWasm(PAGModule, buffer);\n const wasmIns = PAGModule._PAGFile._Load(byteOffset, length);\n free();\n if (!wasmIns)\n throw new Error(\"Load PAGFile fail!\");\n const pagFile = new PAGFile(wasmIns);\n return pagFile;\n }\n static maxSupportedTagLevel() {\n return PAGModule._PAGFile._MaxSupportedTagLevel();\n }\n tagLevel() {\n return this.wasmIns._tagLevel();\n }\n numTexts() {\n return this.wasmIns._numTexts();\n }\n numImages() {\n return this.wasmIns._numImages();\n }\n numVideos() {\n return this.wasmIns._numVideos();\n }\n getTextData(editableTextIndex) {\n return this.wasmIns._getTextData(editableTextIndex);\n }\n replaceText(editableTextIndex, textData) {\n this.wasmIns._replaceText(editableTextIndex, textData);\n }\n replaceImage(editableImageIndex, pagImage) {\n this.wasmIns._replaceImage(editableImageIndex, pagImage.wasmIns);\n }\n getLayersByEditableIndex(editableIndex, layerType) {\n const wasmIns = this.wasmIns._getLayersByEditableIndex(editableIndex, layerType);\n if (!wasmIns)\n throw new Error(`Get ${getLayerTypeName(layerType)} layers by ${editableIndex} fail!`);\n return proxyVector(wasmIns, layer2typeLayer);\n }\n getEditableIndices(layerType) {\n return this.wasmIns._getEditableIndices(layerType);\n }\n timeStretchMode() {\n return this.wasmIns._timeStretchMode();\n }\n setTimeStretchMode(value) {\n this.wasmIns._setTimeStretchMode(value);\n }\n setDuration(duration) {\n this.wasmIns._setDuration(duration);\n }\n copyOriginal() {\n const wasmIns = this.wasmIns._copyOriginal();\n if (!wasmIns)\n throw new Error(`Copy original fail!`);\n return new PAGFile(wasmIns);\n }\n };\n __decorateClass$8([\n wasmAsyncMethod\n ], PAGFile, \"load\", 1);\n PAGFile = __decorateClass$8([\n destroyVerify,\n wasmAwaitRewind\n ], PAGFile);\n\n var __defProp$a = Object.defineProperty;\n var __getOwnPropDesc$7 = Object.getOwnPropertyDescriptor;\n var __decorateClass$7 = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$7(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result)\n __defProp$a(target, key, result);\n return result;\n };\n let PAGSurface = class {\n constructor(wasmIns) {\n this.isDestroyed = false;\n this.wasmIns = wasmIns;\n }\n static fromCanvas(canvasID) {\n const wasmIns = PAGModule._PAGSurface._FromCanvas(canvasID);\n if (!wasmIns)\n throw new Error(`Make PAGSurface from canvas ${canvasID} fail!`);\n return new PAGSurface(wasmIns);\n }\n static fromTexture(textureID, width, height, flipY) {\n const wasmIns = PAGModule._PAGSurface._FromTexture(textureID, width, height, flipY);\n if (!wasmIns)\n throw new Error(`Make PAGSurface from texture ${textureID} fail!`);\n return new PAGSurface(wasmIns);\n }\n static fromRenderTarget(frameBufferID, width, height, flipY) {\n const wasmIns = PAGModule._PAGSurface._FromRenderTarget(frameBufferID, width, height, flipY);\n if (!wasmIns)\n throw new Error(`Make PAGSurface from frameBuffer ${frameBufferID} fail!`);\n return new PAGSurface(wasmIns);\n }\n width() {\n return this.wasmIns._width();\n }\n height() {\n return this.wasmIns._height();\n }\n updateSize() {\n this.wasmIns._updateSize();\n }\n clearAll() {\n return this.wasmIns._clearAll();\n }\n freeCache() {\n this.wasmIns._freeCache();\n }\n readPixels(colorType, alphaType) {\n if (colorType === ColorType.Unknown)\n return null;\n const rowBytes = this.width() * (colorType === ColorType.ALPHA_8 ? 1 : 4);\n const length = rowBytes * this.height();\n const dataUint8Array = new Uint8Array(length);\n const { data, free } = readBufferFromWasm(PAGModule, dataUint8Array, (dataPtr) => {\n return this.wasmIns._readPixels(colorType, alphaType, dataPtr, rowBytes);\n });\n free();\n return data;\n }\n destroy() {\n this.wasmIns.delete();\n this.isDestroyed = true;\n }\n };\n PAGSurface = __decorateClass$7([\n destroyVerify,\n wasmAwaitRewind\n ], PAGSurface);\n\n var __defProp$9 = Object.defineProperty;\n var __getOwnPropDesc$6 = Object.getOwnPropertyDescriptor;\n var __decorateClass$6 = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$6(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result)\n __defProp$9(target, key, result);\n return result;\n };\n let PAGPlayer = class {\n constructor(wasmIns) {\n this.isDestroyed = false;\n this.videoReaders = [];\n this.wasmIns = wasmIns;\n }\n static create() {\n const wasmIns = new PAGModule._PAGPlayer();\n if (!wasmIns)\n throw new Error(\"Create PAGPlayer fail!\");\n return new PAGPlayer(wasmIns);\n }\n setProgress(progress) {\n this.wasmIns._setProgress(progress);\n }\n async flush() {\n return PAGModule.webAssemblyQueue.exec(this.wasmIns._flush, this.wasmIns);\n }\n async flushInternal(callback) {\n const res = await PAGModule.webAssemblyQueue.exec(async () => {\n PAGModule.currentPlayer = this;\n const res2 = await this.wasmIns._flush();\n PAGModule.currentPlayer = null;\n callback(res2);\n return res2;\n }, this.wasmIns);\n for (const videoReader of this.videoReaders) {\n const error = await videoReader.getError();\n if (error !== null) {\n throw error;\n }\n }\n return res;\n }\n duration() {\n return this.wasmIns._duration();\n }\n getProgress() {\n return this.wasmIns._getProgress();\n }\n currentFrame() {\n return this.wasmIns._currentFrame();\n }\n videoEnabled() {\n return this.wasmIns._videoEnabled();\n }\n setVideoEnabled(enabled) {\n this.wasmIns._setVideoEnabled(enabled);\n }\n cacheEnabled() {\n return this.wasmIns._cacheEnabled();\n }\n setCacheEnabled(enabled) {\n this.wasmIns._setCacheEnabled(enabled);\n }\n cacheScale() {\n return this.wasmIns._cacheScale();\n }\n setCacheScale(value) {\n this.wasmIns._setCacheScale(value);\n }\n maxFrameRate() {\n return this.wasmIns._maxFrameRate();\n }\n setMaxFrameRate(value) {\n this.wasmIns._setMaxFrameRate(value);\n }\n scaleMode() {\n return this.wasmIns._scaleMode();\n }\n setScaleMode(value) {\n this.wasmIns._setScaleMode(value);\n }\n setSurface(pagSurface) {\n this.wasmIns._setSurface(getWasmIns(pagSurface));\n }\n getComposition() {\n const wasmIns = this.wasmIns._getComposition();\n if (!wasmIns)\n throw new Error(\"Get composition fail!\");\n if (wasmIns._isPAGFile()) {\n return new PAGFile(wasmIns);\n }\n return new PAGComposition(wasmIns);\n }\n setComposition(pagComposition) {\n this.wasmIns._setComposition(getWasmIns(pagComposition));\n }\n getSurface() {\n const wasmIns = this.wasmIns._getSurface();\n if (!wasmIns)\n throw new Error(\"Get surface fail!\");\n return new PAGSurface(wasmIns);\n }\n matrix() {\n const wasmIns = this.wasmIns._matrix();\n if (!wasmIns)\n throw new Error(\"Get matrix fail!\");\n return new Matrix(wasmIns);\n }\n setMatrix(matrix) {\n this.wasmIns._setMatrix(matrix.wasmIns);\n }\n nextFrame() {\n this.wasmIns._nextFrame();\n }\n preFrame() {\n this.wasmIns._preFrame();\n }\n autoClear() {\n return this.wasmIns._autoClear();\n }\n setAutoClear(value) {\n this.wasmIns._setAutoClear(value);\n }\n getBounds(pagLayer) {\n return this.wasmIns._getBounds(pagLayer.wasmIns);\n }\n getLayersUnderPoint(localX, localY) {\n const wasmIns = this.wasmIns._getLayersUnderPoint(localX, localY);\n if (!wasmIns)\n throw new Error(`Get layers under point, x: ${localX} y:${localY} fail!`);\n return proxyVector(wasmIns, layer2typeLayer);\n }\n hitTestPoint(pagLayer, surfaceX, surfaceY, pixelHitTest = false) {\n return this.wasmIns._hitTestPoint(pagLayer.wasmIns, surfaceX, surfaceY, pixelHitTest);\n }\n renderingTime() {\n return this.wasmIns._renderingTime();\n }\n imageDecodingTime() {\n return this.wasmIns._imageDecodingTime();\n }\n presentingTime() {\n return this.wasmIns._presentingTime();\n }\n graphicsMemory() {\n return this.wasmIns._graphicsMemory();\n }\n prepare() {\n return PAGModule.webAssemblyQueue.exec(async () => {\n PAGModule.currentPlayer = this;\n await this.wasmIns._prepare();\n PAGModule.currentPlayer = null;\n }, this.wasmIns);\n }\n destroy() {\n this.wasmIns.delete();\n this.isDestroyed = true;\n }\n linkVideoReader(videoReader) {\n this.videoReaders.push(videoReader);\n }\n unlinkVideoReader(videoReader) {\n const index = this.videoReaders.indexOf(videoReader);\n if (index !== -1) {\n this.videoReaders.splice(index, 1);\n }\n }\n };\n __decorateClass$6([\n wasmAsyncMethod\n ], PAGPlayer.prototype, \"flush\", 1);\n __decorateClass$6([\n wasmAsyncMethod\n ], PAGPlayer.prototype, \"flushInternal\", 1);\n PAGPlayer = __decorateClass$6([\n destroyVerify,\n wasmAwaitRewind\n ], PAGPlayer);\n\n var __defProp$8 = Object.defineProperty;\n var __getOwnPropDesc$5 = Object.getOwnPropertyDescriptor;\n var __decorateClass$5 = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$5(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result)\n __defProp$8(target, key, result);\n return result;\n };\n let PAGImage = class {\n constructor(wasmIns) {\n this.isDestroyed = false;\n this.wasmIns = wasmIns;\n }\n static async fromFile(data) {\n return new Promise((resolve, reject) => {\n const image = new Image();\n image.onload = async () => {\n resolve(PAGImage.fromSource(image));\n };\n image.onerror = (error) => {\n reject(error);\n };\n image.src = URL.createObjectURL(data);\n });\n }\n static fromSource(source) {\n const wasmIns = PAGModule._PAGImage._FromNativeImage(source);\n if (!wasmIns)\n throw new Error(\"Make PAGImage from source fail!\");\n return new PAGImage(wasmIns);\n }\n static fromPixels(pixels, width, height, colorType, alphaType) {\n const rowBytes = width * (colorType === ColorType.ALPHA_8 ? 1 : 4);\n const { byteOffset, free } = writeBufferToWasm(PAGModule, pixels);\n const wasmIns = PAGModule._PAGImage._FromPixels(byteOffset, width, height, rowBytes, colorType, alphaType);\n free();\n if (!wasmIns)\n throw new Error(\"Make PAGImage from pixels fail!\");\n return new PAGImage(wasmIns);\n }\n static fromTexture(textureID, width, height, flipY) {\n const wasmIns = PAGModule._PAGImage._FromTexture(textureID, width, height, flipY);\n if (!wasmIns)\n throw new Error(\"Make PAGImage from texture fail!\");\n return new PAGImage(wasmIns);\n }\n width() {\n return this.wasmIns._width();\n }\n height() {\n return this.wasmIns._height();\n }\n scaleMode() {\n return this.wasmIns._scaleMode();\n }\n setScaleMode(scaleMode) {\n this.wasmIns._setScaleMode(scaleMode);\n }\n matrix() {\n const wasmIns = this.wasmIns._matrix();\n if (!wasmIns)\n throw new Error(\"Get matrix fail!\");\n return new Matrix(wasmIns);\n }\n setMatrix(matrix) {\n this.wasmIns._setMatrix(matrix.wasmIns);\n }\n destroy() {\n this.wasmIns.delete();\n this.isDestroyed = true;\n }\n };\n __decorateClass$5([\n wasmAsyncMethod\n ], PAGImage, \"fromFile\", 1);\n PAGImage = __decorateClass$5([\n destroyVerify,\n wasmAwaitRewind\n ], PAGImage);\n\n class EventManager {\n constructor() {\n this.listenerMap = /* @__PURE__ */ new Map();\n }\n on(eventName, listener) {\n let listenerList = [];\n if (this.listenerMap.has(eventName)) {\n listenerList = this.listenerMap.get(eventName);\n }\n listenerList.push(listener);\n this.listenerMap.set(eventName, listenerList);\n }\n off(eventName, listener) {\n if (!this.listenerMap.has(eventName))\n return false;\n const listenerList = this.listenerMap.get(eventName);\n if (listenerList.length === 0)\n return false;\n if (!listener) {\n this.listenerMap.delete(eventName);\n return true;\n }\n const index = listenerList.indexOf(listener);\n if (index === -1)\n return false;\n listenerList.splice(index, 1);\n return true;\n }\n emit(eventName, event) {\n if (!this.listenerMap.has(eventName))\n return false;\n const listenerList = this.listenerMap.get(eventName);\n if (listenerList.length === 0)\n return false;\n listenerList.forEach((listener) => listener(event));\n return true;\n }\n }\n\n const VIDEO_DECODE_WAIT_FRAME = 3;\n const VIDEO_DECODE_SEEK_TIMEOUT_FRAME = 12;\n const DEFAULT_CANVAS_SIZE = 2560;\n const WEBGL_CONTEXT_ATTRIBUTES = {\n depth: false,\n stencil: false,\n antialias: false\n };\n const VIDEO_PLAYBACK_RATE_MIN = 0.125;\n const VIDEO_PLAYBACK_RATE_MAX = 4;\n const CANVAS_POOL_MAX_SIZE = 10;\n\n const nav = (navigator == null ? void 0 : navigator.userAgent) || \"\";\n const ANDROID = /android|adr/i.test(nav);\n const MOBILE = /(mobile)/i.test(nav) && ANDROID;\n !(/(mobile)/i.test(nav) || MOBILE) && /Mac OS X/i.test(nav);\n const IPHONE = /(iphone|ipad|ipod)/i.test(nav);\n const WECHAT = /MicroMessenger/i.test(nav);\n const SAFARI_OR_IOS_WEBVIEW = /^((?!chrome|android).)*safari/i.test(nav) || IPHONE;\n const WORKER = typeof globalThis.importScripts === \"function\";\n\n const canvasPool = new Array();\n const isOffscreenCanvas = (element) => isInstanceOf(element, globalThis.OffscreenCanvas);\n const isCanvas = (element) => isOffscreenCanvas(element) || isInstanceOf(element, globalThis.HTMLCanvasElement);\n const getCanvas2D = (width, height) => {\n let canvas = canvasPool.pop() || createCanvas2D();\n if (canvas !== null) {\n canvas.width = width;\n canvas.height = height;\n }\n return canvas;\n };\n const releaseCanvas2D = (canvas) => {\n if (canvasPool.length < CANVAS_POOL_MAX_SIZE) {\n canvasPool.push(canvas);\n }\n };\n const createCanvas2D = () => {\n if (SAFARI_OR_IOS_WEBVIEW && !WORKER) {\n return document.createElement(\"canvas\");\n }\n try {\n const offscreenCanvas = new OffscreenCanvas(0, 0);\n const context = offscreenCanvas.getContext(\"2d\");\n if (typeof context.measureText === \"function\")\n return offscreenCanvas;\n return document.createElement(\"canvas\");\n } catch (err) {\n return document.createElement(\"canvas\");\n }\n };\n const calculateDisplaySize = (canvas) => {\n const styleDeclaration = globalThis.getComputedStyle(canvas, null);\n const computedSize = {\n width: Number(styleDeclaration.width.replace(\"px\", \"\")),\n height: Number(styleDeclaration.height.replace(\"px\", \"\"))\n };\n if (computedSize.width > 0 && computedSize.height > 0) {\n return computedSize;\n } else {\n const styleSize = {\n width: Number(canvas.style.width.replace(\"px\", \"\")),\n height: Number(canvas.style.height.replace(\"px\", \"\"))\n };\n if (styleSize.width > 0 && styleSize.height > 0) {\n return styleSize;\n } else {\n return {\n width: canvas.width,\n height: canvas.height\n };\n }\n }\n };\n\n var __defProp$7 = Object.defineProperty;\n var __getOwnPropSymbols$3 = Object.getOwnPropertySymbols;\n var __hasOwnProp$3 = Object.prototype.hasOwnProperty;\n var __propIsEnum$3 = Object.prototype.propertyIsEnumerable;\n var __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\n var __spreadValues$3 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$3.call(b, prop))\n __defNormalProp$3(a, prop, b[prop]);\n if (__getOwnPropSymbols$3)\n for (var prop of __getOwnPropSymbols$3(b)) {\n if (__propIsEnum$3.call(b, prop))\n __defNormalProp$3(a, prop, b[prop]);\n }\n return a;\n };\n class BackendContext {\n constructor(handle, adopted = false) {\n this.isDestroyed = false;\n this.oldHandle = 0;\n this.handle = handle;\n this.adopted = adopted;\n }\n static from(gl) {\n if (gl instanceof BackendContext) {\n return new BackendContext(gl.handle, true);\n } else {\n const majorVersion = isInstanceOf(gl, globalThis.WebGL2RenderingContext) ? 2 : 1;\n const { GL } = PAGModule;\n let id = 0;\n if (GL.contexts.length > 0) {\n id = GL.contexts.findIndex((context) => (context == null ? void 0 : context.GLctx) === gl);\n }\n if (id < 1) {\n id = GL.registerContext(gl, __spreadValues$3({\n majorVersion,\n minorVersion: 0\n }, WEBGL_CONTEXT_ATTRIBUTES));\n return new BackendContext(id);\n }\n return new BackendContext(id, true);\n }\n }\n getContext() {\n return PAGModule.GL.getContext(this.handle).GLctx;\n }\n makeCurrent() {\n var _a;\n if (this.isDestroyed)\n return false;\n this.oldHandle = ((_a = PAGModule.GL.currentContext) == null ? void 0 : _a.handle) || 0;\n if (this.oldHandle === this.handle)\n return true;\n return PAGModule.GL.makeContextCurrent(this.handle);\n }\n clearCurrent() {\n if (this.isDestroyed)\n return;\n if (this.oldHandle === this.handle)\n return;\n PAGModule.GL.makeContextCurrent(0);\n if (this.oldHandle) {\n PAGModule.GL.makeContextCurrent(this.oldHandle);\n }\n }\n registerTexture(texture) {\n return this.register(PAGModule.GL.textures, texture);\n }\n getTexture(handled) {\n return PAGModule.GL.textures[handled];\n }\n unregisterTexture(handle) {\n PAGModule.GL.textures[handle] = null;\n }\n registerRenderTarget(framebuffer) {\n return this.register(PAGModule.GL.framebuffers, framebuffer);\n }\n getRenderTarget(handle) {\n return PAGModule.GL.framebuffers[handle];\n }\n unregisterRenderTarget(handle) {\n PAGModule.GL.framebuffers[handle] = null;\n }\n destroy() {\n if (this.adopted)\n return;\n PAGModule.GL.deleteContext(this.handle);\n }\n register(table, item) {\n const handle = PAGModule.GL.getNewId(table);\n table[handle] = item;\n return handle;\n }\n }\n\n var __defProp$6 = Object.defineProperty;\n var __getOwnPropSymbols$2 = Object.getOwnPropertySymbols;\n var __hasOwnProp$2 = Object.prototype.hasOwnProperty;\n var __propIsEnum$2 = Object.prototype.propertyIsEnumerable;\n var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\n var __spreadValues$2 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$2.call(b, prop))\n __defNormalProp$2(a, prop, b[prop]);\n if (__getOwnPropSymbols$2)\n for (var prop of __getOwnPropSymbols$2(b)) {\n if (__propIsEnum$2.call(b, prop))\n __defNormalProp$2(a, prop, b[prop]);\n }\n return a;\n };\n const renderCanvasList = [];\n class RenderCanvas {\n constructor(canvas, contextAttributes) {\n this._canvas = null;\n this._glContext = null;\n this.retainCount = 0;\n this._canvas = canvas;\n const gl = canvas.getContext(\"webgl\", __spreadValues$2(__spreadValues$2({}, WEBGL_CONTEXT_ATTRIBUTES), contextAttributes));\n if (!gl)\n throw new Error(\"Canvas context is not WebGL!\");\n this._glContext = BackendContext.from(gl);\n }\n static from(canvas, contextAttributes) {\n let renderCanvas = renderCanvasList.find((targetCanvas) => targetCanvas.canvas === canvas);\n if (renderCanvas)\n return renderCanvas;\n renderCanvas = new RenderCanvas(canvas, contextAttributes);\n renderCanvasList.push(renderCanvas);\n return renderCanvas;\n }\n retain() {\n this.retainCount += 1;\n }\n release() {\n this.retainCount -= 1;\n if (this.retainCount === 0) {\n if (!this._glContext)\n return;\n this._glContext.destroy();\n this._glContext = null;\n this._canvas = null;\n }\n }\n get canvas() {\n return this._canvas;\n }\n get glContext() {\n return this._glContext;\n }\n }\n\n let getTime;\n try {\n getTime = performance.now.bind(performance);\n } catch (e) {\n getTime = Date.now.bind(Date);\n }\n class Clock {\n constructor() {\n this.startTime = getTime();\n this.markers = {};\n }\n reset() {\n this.startTime = getTime();\n this.markers = {};\n }\n mark(key) {\n if (!key) {\n console.log(\"Clock.mark(): An empty marker name was specified!\");\n return;\n }\n if (Object.keys(this.markers).find((markerKey) => markerKey === key)) {\n console.log(`Clock.mark(): The specified marker name '${key}' already exists!`);\n return;\n }\n this.markers[key] = getTime();\n }\n measure(makerFrom, makerTo) {\n let start;\n let end;\n if (!makerFrom) {\n start = this.startTime;\n } else {\n if (!Object.keys(this.markers).find((markerKey) => markerKey === makerFrom)) {\n console.log(`Clock.measure(): The specified makerFrom '${makerFrom}' does not exist!`);\n return 0;\n }\n start = this.markers[makerFrom];\n }\n if (!makerTo) {\n end = getTime();\n } else {\n if (!Object.keys(this.markers).find((markerKey) => markerKey === makerTo)) {\n console.log(`Clock.measure(): The specified makerTo '${makerTo}' does not exist!`);\n return 0;\n }\n end = this.markers[makerTo];\n }\n return end - start;\n }\n }\n\n var __defProp$5 = Object.defineProperty;\n var __getOwnPropDesc$4 = Object.getOwnPropertyDescriptor;\n var __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;\n var __hasOwnProp$1 = Object.prototype.hasOwnProperty;\n var __propIsEnum$1 = Object.prototype.propertyIsEnumerable;\n var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\n var __spreadValues$1 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$1.call(b, prop))\n __defNormalProp$1(a, prop, b[prop]);\n if (__getOwnPropSymbols$1)\n for (var prop of __getOwnPropSymbols$1(b)) {\n if (__propIsEnum$1.call(b, prop))\n __defNormalProp$1(a, prop, b[prop]);\n }\n return a;\n };\n var __decorateClass$4 = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$4(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result)\n __defProp$5(target, key, result);\n return result;\n };\n let PAGView = class {\n constructor(pagPlayer, canvasElement) {\n this.repeatCount = 0;\n this.isPlaying = false;\n this.isDestroyed = false;\n this.pagViewOptions = {\n useScale: true,\n useCanvas2D: false,\n firstFrame: true\n };\n this.renderCanvas = null;\n this.pagGlContext = null;\n this.frameRate = 0;\n this.pagSurface = null;\n this.playFrame = -1;\n this.timer = null;\n this.flushingNextFrame = false;\n this.playTime = 0;\n this.startTime = 0;\n this.repeatedTimes = 0;\n this.eventManager = new EventManager();\n this.rawWidth = 0;\n this.rawHeight = 0;\n this.debugData = {\n FPS: 0,\n flushTime: 0\n };\n this.fpsBuffer = [];\n this.player = pagPlayer;\n this.canvasElement = canvasElement;\n }\n static async init(file, canvas, initOptions = {}) {\n let canvasElement = null;\n if (typeof canvas === \"string\") {\n canvasElement = document.getElementById(canvas.substr(1));\n } else if (typeof window !== \"undefined\" && isInstanceOf(canvas, globalThis.HTMLCanvasElement)) {\n canvasElement = canvas;\n } else if (isOffscreenCanvas(canvas)) {\n canvasElement = canvas;\n }\n if (!canvasElement)\n throw new Error(\"Canvas is not found!\");\n const pagPlayer = PAGModule.PAGPlayer.create();\n const pagView = new PAGView(pagPlayer, canvasElement);\n pagView.pagViewOptions = __spreadValues$1(__spreadValues$1({}, pagView.pagViewOptions), initOptions);\n if (pagView.pagViewOptions.useCanvas2D) {\n PAGModule.globalCanvas.retain();\n pagView.pagGlContext = BackendContext.from(PAGModule.globalCanvas.glContext);\n } else {\n pagView.renderCanvas = RenderCanvas.from(canvasElement);\n pagView.renderCanvas.retain();\n pagView.pagGlContext = BackendContext.from(pagView.renderCanvas.glContext);\n }\n pagView.resetSize(pagView.pagViewOptions.useScale);\n pagView.frameRate = file.frameRate();\n pagView.pagSurface = this.makePAGSurface(pagView.pagGlContext, pagView.rawWidth, pagView.rawHeight);\n pagView.player.setSurface(pagView.pagSurface);\n pagView.player.setComposition(file);\n pagView.setProgress(0);\n if (pagView.pagViewOptions.firstFrame) {\n await pagView.flush();\n pagView.playFrame = 0;\n }\n return pagView;\n }\n static makePAGSurface(pagGlContext, width, height) {\n if (!pagGlContext.makeCurrent())\n throw new Error(\"Make context current fail!\");\n const pagSurface = PAGSurface.fromRenderTarget(0, width, height, true);\n pagGlContext.clearCurrent();\n return pagSurface;\n }\n duration() {\n return this.player.duration();\n }\n addListener(eventName, listener) {\n return this.eventManager.on(eventName, listener);\n }\n removeListener(eventName, listener) {\n return this.eventManager.off(eventName, listener);\n }\n async play() {\n if (this.isPlaying)\n return;\n this.isPlaying = true;\n this.startTime = this.getNowTime() * 1e3 - this.playTime;\n for (const videoReader of this.player.videoReaders) {\n videoReader.isPlaying = true;\n }\n const playTime = this.playTime;\n await this.flushLoop(true);\n if (playTime === 0) {\n this.eventManager.emit(\"onAnimationStart\", this);\n }\n this.eventManager.emit(\"onAnimationPlay\", this);\n if (this.playFrame === 0) {\n this.eventManager.emit(\"onAnimationUpdate\", this);\n }\n }\n pause() {\n if (!this.isPlaying)\n return;\n this.clearTimer();\n for (const videoReader of this.player.videoReaders) {\n videoReader.pause();\n }\n this.isPlaying = false;\n this.eventManager.emit(\"onAnimationPause\", this);\n }\n async stop(notification = true) {\n this.clearTimer();\n this.playTime = 0;\n this.player.setProgress(0);\n this.playFrame = 0;\n await this.flush();\n for (const videoReader of this.player.videoReaders) {\n videoReader.stop();\n }\n this.isPlaying = false;\n if (notification) {\n this.eventManager.emit(\"onAnimationCancel\", this);\n }\n }\n setRepeatCount(repeatCount) {\n this.repeatCount = repeatCount < 0 ? 0 : repeatCount - 1;\n }\n getProgress() {\n return this.player.getProgress();\n }\n currentFrame() {\n return this.player.currentFrame();\n }\n setProgress(progress) {\n this.playTime = progress * this.duration();\n this.startTime = this.getNowTime() * 1e3 - this.playTime;\n if (!this.isPlaying) {\n this.player.setProgress(progress);\n }\n return progress;\n }\n videoEnabled() {\n return this.player.videoEnabled();\n }\n setVideoEnabled(enable) {\n this.player.setVideoEnabled(enable);\n }\n cacheEnabled() {\n return this.player.cacheEnabled();\n }\n setCacheEnabled(enable) {\n this.player.setCacheEnabled(enable);\n }\n cacheScale() {\n return this.player.cacheScale();\n }\n setCacheScale(value) {\n this.player.setCacheScale(value);\n }\n maxFrameRate() {\n return this.player.maxFrameRate();\n }\n setMaxFrameRate(value) {\n this.player.setMaxFrameRate(value);\n }\n scaleMode() {\n return this.player.scaleMode();\n }\n setScaleMode(value) {\n this.player.setScaleMode(value);\n }\n async flush() {\n const clock = new Clock();\n const res = await this.player.flushInternal((res2) => {\n var _a, _b;\n if (this.pagViewOptions.useCanvas2D && res2 && PAGModule.globalCanvas.canvas) {\n if (!this.canvasContext)\n this.canvasContext = (_a = this.canvasElement) == null ? void 0 : _a.getContext(\"2d\");\n const compositeOperation = this.canvasContext.globalCompositeOperation;\n this.canvasContext.globalCompositeOperation = \"copy\";\n (_b = this.canvasContext) == null ? void 0 : _b.drawImage(\n PAGModule.globalCanvas.canvas,\n 0,\n PAGModule.globalCanvas.canvas.height - this.rawHeight,\n this.rawWidth,\n this.rawHeight,\n 0,\n 0,\n this.canvasContext.canvas.width,\n this.canvasContext.canvas.height\n );\n this.canvasContext.globalCompositeOperation = compositeOperation;\n }\n clock.mark(\"flush\");\n this.setDebugData({ flushTime: clock.measure(\"\", \"flush\") });\n this.updateFPS();\n });\n this.eventManager.emit(\"onAnimationUpdate\", this);\n if (res) {\n this.eventManager.emit(\"onAnimationFlushed\", this);\n }\n return res;\n }\n freeCache() {\n var _a;\n (_a = this.pagSurface) == null ? void 0 : _a.freeCache();\n }\n getComposition() {\n return this.player.getComposition();\n }\n setComposition(pagComposition) {\n this.player.setComposition(pagComposition);\n }\n matrix() {\n return this.player.matrix();\n }\n setMatrix(matrix) {\n this.player.setMatrix(matrix);\n }\n getLayersUnderPoint(localX, localY) {\n return this.player.getLayersUnderPoint(localX, localY);\n }\n updateSize() {\n var _a;\n if (!this.canvasElement) {\n throw new Error(\"Canvas element is not found!\");\n }\n this.rawWidth = this.canvasElement.width;\n this.rawHeight = this.canvasElement.height;\n if (!this.pagGlContext)\n return;\n const pagSurface = PAGView.makePAGSurface(this.pagGlContext, this.rawWidth, this.rawHeight);\n this.player.setSurface(pagSurface);\n (_a = this.pagSurface) == null ? void 0 : _a.destroy();\n this.pagSurface = pagSurface;\n }\n prepare() {\n return this.player.prepare();\n }\n makeSnapshot() {\n return createImageBitmap(this.canvasElement);\n }\n destroy() {\n var _a, _b, _c;\n this.clearTimer();\n this.player.destroy();\n (_a = this.pagSurface) == null ? void 0 : _a.destroy();\n if (this.pagViewOptions.useCanvas2D) {\n PAGModule.globalCanvas.release();\n } else {\n (_b = this.renderCanvas) == null ? void 0 : _b.release();\n }\n (_c = this.pagGlContext) == null ? void 0 : _c.destroy();\n this.pagGlContext = null;\n this.canvasContext = null;\n this.canvasElement = null;\n this.isDestroyed = true;\n }\n getDebugData() {\n return this.debugData;\n }\n setDebugData(data) {\n this.debugData = __spreadValues$1(__spreadValues$1({}, this.debugData), data);\n }\n async flushLoop(force = false) {\n if (!this.isPlaying) {\n return;\n }\n this.setTimer();\n if (this.flushingNextFrame)\n return;\n try {\n this.flushingNextFrame = true;\n await this.flushNextFrame(force);\n this.flushingNextFrame = false;\n } catch (e) {\n this.flushingNextFrame = false;\n if (e.message !== \"The play() request was interrupted because the document was hidden!\") {\n this.clearTimer();\n }\n throw e;\n }\n }\n async flushNextFrame(force = false) {\n const duration = this.duration();\n this.playTime = this.getNowTime() * 1e3 - this.startTime;\n const playFrame = Math.floor(this.playTime / 1e6 * this.frameRate);\n const count = Math.floor(this.playTime / duration);\n if (!force && this.repeatCount >= 0 && count > this.repeatCount) {\n this.clearTimer();\n this.player.setProgress(1);\n await this.flush();\n this.playTime = 0;\n this.isPlaying = false;\n this.repeatedTimes = 0;\n this.eventManager.emit(\"onAnimationEnd\", this);\n return true;\n }\n if (!force && this.repeatedTimes === count && this.playFrame === playFrame) {\n return false;\n }\n if (this.repeatedTimes < count) {\n this.eventManager.emit(\"onAnimationRepeat\", this);\n }\n this.player.setProgress(this.playTime % duration / duration);\n const res = await this.flush();\n if (this.needResetStartTime()) {\n this.startTime = this.getNowTime() * 1e3 - this.playTime;\n }\n this.playFrame = playFrame;\n this.repeatedTimes = count;\n return res;\n }\n getNowTime() {\n try {\n return performance.now();\n } catch (e) {\n return Date.now();\n }\n }\n setTimer() {\n if (WORKER) {\n this.timer = self.setTimeout(() => {\n this.flushLoop();\n }, 1 / this.frameRate * 1e3);\n } else {\n this.timer = globalThis.requestAnimationFrame(() => {\n this.flushLoop();\n });\n }\n }\n clearTimer() {\n if (this.timer) {\n if (WORKER) {\n self.clearTimeout(this.timer);\n } else {\n globalThis.cancelAnimationFrame(this.timer);\n }\n this.timer = null;\n }\n }\n resetSize(useScale = true) {\n if (!this.canvasElement) {\n throw new Error(\"Canvas element is not found!\");\n }\n if (!useScale || isOffscreenCanvas(this.canvasElement)) {\n this.rawWidth = this.canvasElement.width;\n this.rawHeight = this.canvasElement.height;\n return;\n }\n const canvas = this.canvasElement;\n const displaySize = calculateDisplaySize(canvas);\n canvas.style.width = `${displaySize.width}px`;\n canvas.style.height = `${displaySize.height}px`;\n this.rawWidth = displaySize.width * globalThis.devicePixelRatio;\n this.rawHeight = displaySize.height * globalThis.devicePixelRatio;\n canvas.width = this.rawWidth;\n canvas.height = this.rawHeight;\n }\n updateFPS() {\n let now;\n try {\n now = performance.now();\n } catch (e) {\n now = Date.now();\n }\n this.fpsBuffer = this.fpsBuffer.filter((value) => now - value <= 1e3);\n this.fpsBuffer.push(now);\n this.setDebugData({ FPS: this.fpsBuffer.length });\n }\n needResetStartTime() {\n for (const VideoReader of this.player.videoReaders) {\n if (VideoReader.isSought)\n return true;\n }\n return false;\n }\n };\n PAGView = __decorateClass$4([\n destroyVerify\n ], PAGView);\n\n const fontNames = [\"Arial\", '\"Courier New\"', \"Georgia\", '\"Times New Roman\"', '\"Trebuchet MS\"', \"Verdana\"];\n const defaultFontNames = (() => {\n return [\"emoji\"].concat(...fontNames);\n })();\n const getFontFamilies = (name, style = \"\") => {\n if (!name)\n return [];\n const nameChars = name.split(\" \");\n let names = [];\n if (nameChars.length === 1) {\n names.push(name);\n } else {\n names.push(nameChars.join(\"\"));\n names.push(nameChars.join(\" \"));\n }\n const fontFamilies = names.reduce((pre, cur) => {\n if (!style) {\n pre.push(`\"${cur}\"`);\n } else {\n pre.push(`\"${cur} ${style}\"`);\n pre.push(`\"${cur}-${style}\"`);\n }\n return pre;\n }, []);\n if (style !== \"\") {\n fontFamilies.push(`\"${name}\"`);\n }\n return fontFamilies;\n };\n\n var __defProp$4 = Object.defineProperty;\n var __getOwnPropDesc$3 = Object.getOwnPropertyDescriptor;\n var __decorateClass$3 = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$3(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result)\n __defProp$4(target, key, result);\n return result;\n };\n let PAGFont = class {\n constructor(wasmIns) {\n this.isDestroyed = false;\n this.wasmIns = wasmIns;\n this.fontFamily = this.wasmIns.fontFamily;\n this.fontStyle = this.wasmIns.fontStyle;\n }\n static create(fontFamily, fontStyle) {\n const wasmIns = PAGModule._PAGFont._create(fontFamily, fontStyle);\n if (!wasmIns)\n throw new Error(\"Create PAGFont fail!\");\n return new PAGFont(wasmIns);\n }\n static async registerFont(family, data) {\n const buffer = await readFile(data);\n if (!buffer || !(buffer.byteLength > 0)) {\n throw new Error(\"Initialize PAGFont data not be empty!\");\n }\n const dataUint8Array = new Uint8Array(buffer);\n const fontFace = new FontFace(family, dataUint8Array);\n document.fonts.add(fontFace);\n await fontFace.load();\n }\n static registerFallbackFontNames(fontNames = []) {\n const vectorNames = new PAGModule.VectorString();\n const names = fontNames.concat(defaultFontNames);\n for (const name of names) {\n vectorNames.push_back(name);\n }\n PAGModule._PAGFont._SetFallbackFontNames(vectorNames);\n vectorNames.delete();\n }\n destroy() {\n this.wasmIns.delete();\n this.isDestroyed = true;\n }\n };\n __decorateClass$3([\n wasmAsyncMethod\n ], PAGFont, \"registerFont\", 1);\n PAGFont = __decorateClass$3([\n destroyVerify,\n wasmAwaitRewind\n ], PAGFont);\n\n let eventHandlers = {};\n const addListener = (node, event, handler, capture = false) => {\n var _a;\n if (!(event in eventHandlers)) {\n eventHandlers[event] = [];\n }\n (_a = eventHandlers[event]) == null ? void 0 : _a.push({ node, handler, capture });\n node.addEventListener(event, handler, capture);\n };\n const removeListener = (targetNode, event, targetHandler) => {\n var _a;\n if (!(event in eventHandlers))\n return;\n (_a = eventHandlers[event]) == null ? void 0 : _a.filter(({ node, handler }) => node === targetNode && handler === targetHandler).forEach(({ node, handler, capture }) => node.removeEventListener(event, handler, capture));\n };\n const removeAllListeners = (targetNode, event) => {\n var _a, _b;\n if (!(event in eventHandlers))\n return;\n (_a = eventHandlers[event]) == null ? void 0 : _a.filter(({ node }) => node === targetNode).forEach(({ node, handler, capture }) => node.removeEventListener(event, handler, capture));\n eventHandlers[event] = (_b = eventHandlers[event]) == null ? void 0 : _b.filter(({ node }) => node !== targetNode);\n };\n\n var WorkerMessageType = /* @__PURE__ */ ((WorkerMessageType2) => {\n WorkerMessageType2[\"PAGInit\"] = \"PAGInit\";\n WorkerMessageType2[\"PAGView_init\"] = \"PAGView.init\";\n WorkerMessageType2[\"PAGView_duration\"] = \"PAGView.duration\";\n WorkerMessageType2[\"PAGView_play\"] = \"PAGView.play\";\n WorkerMessageType2[\"PAGView_pause\"] = \"PAGView.pause\";\n WorkerMessageType2[\"PAGView_stop\"] = \"PAGView.stop\";\n WorkerMessageType2[\"PAGView_setRepeatCount\"] = \"PAGView.setRepeatCount\";\n WorkerMessageType2[\"PAGView_getProgress\"] = \"PAGView.getProgress\";\n WorkerMessageType2[\"PAGView_currentFrame\"] = \"PAGView.currentFrame\";\n WorkerMessageType2[\"PAGView_setProgress\"] = \"PAGView.setProgress\";\n WorkerMessageType2[\"PAGView_scaleMode\"] = \"PAGView.scaleMode\";\n WorkerMessageType2[\"PAGView_setScaleMode\"] = \"PAGView.setScaleMode\";\n WorkerMessageType2[\"PAGView_flush\"] = \"PAGView.flush\";\n WorkerMessageType2[\"PAGView_getDebugData\"] = \"PAGView.getDebugData\";\n WorkerMessageType2[\"PAGView_destroy\"] = \"PAGView.destroy\";\n WorkerMessageType2[\"PAGFile_load\"] = \"PAGFile.load\";\n WorkerMessageType2[\"PAGFile_getTextData\"] = \"PAGFile.getTextData\";\n WorkerMessageType2[\"PAGFile_replaceText\"] = \"PAGFile.replaceText\";\n WorkerMessageType2[\"PAGFile_replaceImage\"] = \"PAGFile.replaceImage\";\n WorkerMessageType2[\"PAGFile_destroy\"] = \"PAGFile.destroy\";\n WorkerMessageType2[\"PAGImage_fromSource\"] = \"PAGImage.fromSource\";\n WorkerMessageType2[\"PAGImage_destroy\"] = \"PAGImage.destroy\";\n WorkerMessageType2[\"VideoReader_constructor\"] = \"VideoReader.constructor\";\n WorkerMessageType2[\"VideoReader_prepare\"] = \"VideoReader.prepare\";\n WorkerMessageType2[\"VideoReader_play\"] = \"VideoReader.play\";\n WorkerMessageType2[\"VideoReader_pause\"] = \"VideoReader.pause\";\n WorkerMessageType2[\"VideoReader_stop\"] = \"VideoReader.stop\";\n WorkerMessageType2[\"VideoReader_getError\"] = \"VideoReader.getError\";\n WorkerMessageType2[\"PAGModule_linkVideoReader\"] = \"PAGModule.linkVideoReader\";\n WorkerMessageType2[\"TextDocument_delete\"] = \"TextDocument.delete\";\n return WorkerMessageType2;\n })(WorkerMessageType || {});\n\n let messageCount = 0;\n const generateMessageName = (name) => `${name}_${messageCount++}`;\n const postMessage = (worker, message, callback, transfer = []) => {\n return new Promise((resolve) => {\n const name = generateMessageName(message.name);\n const handle = (event) => {\n if (event.data.name === name) {\n worker.removeEventListener(\"message\", handle);\n resolve(callback(...event.data.args));\n }\n };\n worker.addEventListener(\"message\", handle);\n worker.postMessage({ name, args: message.args }, transfer);\n });\n };\n\n class BitmapImage {\n constructor(bitmap) {\n this.bitmap = bitmap;\n }\n setBitmap(bitmap) {\n if (this.bitmap) {\n this.bitmap.close();\n }\n this.bitmap = bitmap;\n }\n }\n\n class WorkerVideoReader {\n constructor(proxyId) {\n this.bitmap = null;\n this.isSought = false;\n this.isPlaying = false;\n this.bitmapImage = new BitmapImage(null);\n this.proxyId = proxyId;\n }\n prepare(targetFrame, playbackRate) {\n return new Promise((resolve) => {\n postMessage(\n self,\n { name: WorkerMessageType.VideoReader_prepare, args: [this.proxyId, targetFrame, playbackRate] },\n (res) => {\n this.bitmapImage.setBitmap(res);\n resolve();\n }\n );\n });\n }\n getVideo() {\n return this.bitmapImage;\n }\n onDestroy() {\n self.postMessage({ name: \"VideoReader.onDestroy\", args: [this.proxyId] });\n }\n play() {\n return new Promise((resolve) => {\n postMessage(self, { name: WorkerMessageType.VideoReader_play, args: [this.proxyId] }, () => {\n resolve();\n });\n });\n }\n pause() {\n postMessage(self, { name: WorkerMessageType.VideoReader_pause, args: [this.proxyId] }, () => {\n });\n }\n stop() {\n postMessage(self, { name: WorkerMessageType.VideoReader_stop, args: [this.proxyId] }, () => {\n });\n }\n getError() {\n return new Promise((resolve) => {\n postMessage(self, { name: WorkerMessageType.VideoReader_getError, args: [this.proxyId] }, (res) => {\n resolve(res);\n });\n });\n }\n }\n\n const UHD_RESOLUTION = 3840;\n const getWechatNetwork = () => {\n return new Promise((resolve) => {\n window.WeixinJSBridge.invoke(\n \"getNetworkType\",\n {},\n () => {\n resolve();\n },\n () => {\n resolve();\n }\n );\n });\n };\n const waitVideoCanPlay = (videoElement) => {\n return new Promise((resolve) => {\n const canplayHandle = () => {\n removeListener(videoElement, \"canplay\", canplayHandle);\n clearTimeout(timer);\n resolve(true);\n };\n addListener(videoElement, \"canplay\", canplayHandle);\n const timer = setTimeout(() => {\n removeListener(videoElement, \"canplay\", canplayHandle);\n resolve(false);\n }, 1e3);\n });\n };\n class VideoReader {\n constructor(source, width, height, frameRate, staticTimeRanges, isWorker = false) {\n this.isSought = false;\n this.isPlaying = false;\n this.bitmap = null;\n this.videoEl = null;\n this.frameRate = 0;\n this.canplay = false;\n this.staticTimeRanges = null;\n this.disablePlaybackRate = false;\n this.error = null;\n this.player = null;\n this.width = 0;\n this.height = 0;\n this.bitmapCanvas = null;\n this.bitmapCtx = null;\n if (isInstanceOf(source, globalThis.HTMLVideoElement)) {\n this.videoEl = source;\n this.canplay = true;\n } else {\n this.videoEl = document.createElement(\"video\");\n this.videoEl.style.display = \"none\";\n this.videoEl.muted = true;\n this.videoEl.playsInline = true;\n this.videoEl.preload = \"auto\";\n this.videoEl.width = width;\n this.videoEl.height = height;\n waitVideoCanPlay(this.videoEl).then(() => {\n this.canplay = true;\n });\n const blob = new Blob([source], { type: \"video/mp4\" });\n this.videoEl.src = URL.createObjectURL(blob);\n if (IPHONE) {\n this.videoEl.load();\n }\n }\n this.frameRate = frameRate;\n this.width = width;\n this.height = height;\n this.staticTimeRanges = new StaticTimeRanges(staticTimeRanges);\n if (UHD_RESOLUTION < width || UHD_RESOLUTION < height) {\n this.disablePlaybackRate = true;\n }\n if (!isWorker) {\n this.linkPlayer(PAGModule.currentPlayer);\n }\n }\n static async create(source, width, height, frameRate, staticTimeRanges) {\n var _a;\n if (WORKER) {\n const proxyId = await new Promise((resolve) => {\n const uint8Array = source;\n const buffer = uint8Array.buffer.slice(uint8Array.byteOffset, uint8Array.byteOffset + uint8Array.byteLength);\n postMessage(\n self,\n {\n name: WorkerMessageType.VideoReader_constructor,\n args: [buffer, width, height, frameRate, staticTimeRanges, true]\n },\n (res) => {\n resolve(res);\n },\n [buffer]\n );\n });\n const videoReader = new WorkerVideoReader(proxyId);\n (_a = PAGModule.currentPlayer) == null ? void 0 : _a.linkVideoReader(videoReader);\n return videoReader;\n }\n return new VideoReader(source, width, height, frameRate, staticTimeRanges);\n }\n async prepare(targetFrame, playbackRate) {\n var _a;\n this.setError(null);\n this.isSought = false;\n const { currentTime } = this.videoEl;\n const targetTime = targetFrame / this.frameRate;\n if (currentTime === 0 && targetTime === 0) {\n if (!this.canplay && !SAFARI_OR_IOS_WEBVIEW) {\n await waitVideoCanPlay(this.videoEl);\n } else {\n try {\n await this.play();\n } catch (e) {\n this.setError(e);\n }\n await new Promise((resolve) => {\n requestAnimationFrame(() => {\n this.pause();\n resolve();\n });\n });\n }\n } else {\n if (Math.round(targetTime * this.frameRate) === Math.round(currentTime * this.frameRate)) ; else if ((_a = this.staticTimeRanges) == null ? void 0 : _a.contains(targetFrame)) {\n await this.seek(targetTime, false);\n return;\n } else if (Math.abs(currentTime - targetTime) < 1 / this.frameRate * VIDEO_DECODE_WAIT_FRAME) ; else {\n this.isSought = true;\n await this.seek(targetTime);\n return;\n }\n }\n const targetPlaybackRate = Math.min(Math.max(playbackRate, VIDEO_PLAYBACK_RATE_MIN), VIDEO_PLAYBACK_RATE_MAX);\n if (!this.disablePlaybackRate && this.videoEl.playbackRate !== targetPlaybackRate) {\n this.videoEl.playbackRate = targetPlaybackRate;\n }\n if (this.isPlaying && this.videoEl.paused) {\n try {\n await this.play();\n } catch (e) {\n this.setError(e);\n }\n }\n }\n getVideo() {\n return this.videoEl;\n }\n async generateBitmap() {\n var _a, _b;\n if (!this.bitmapCanvas) {\n this.bitmapCanvas = new OffscreenCanvas(this.width, this.height);\n this.bitmapCanvas.width = this.width;\n this.bitmapCanvas.height = this.height;\n this.bitmapCtx = this.bitmapCanvas.getContext(\"2d\");\n }\n (_a = this.bitmapCtx) == null ? void 0 : _a.fillRect(0, 0, this.width, this.height);\n (_b = this.bitmapCtx) == null ? void 0 : _b.drawImage(this.videoEl, 0, 0, this.width, this.height);\n this.bitmap = await createImageBitmap(this.bitmapCanvas);\n return this.bitmap;\n }\n async play() {\n var _a;\n if (!this.videoEl.paused)\n return;\n if (WECHAT && window.WeixinJSBridge) {\n await getWechatNetwork();\n }\n if (document.visibilityState !== \"visible\") {\n const visibilityHandle = () => {\n if (document.visibilityState === \"visible\") {\n if (this.videoEl)\n this.videoEl.play();\n window.removeEventListener(\"visibilitychange\", visibilityHandle);\n }\n };\n window.addEventListener(\"visibilitychange\", visibilityHandle);\n throw new Error(\"The play() request was interrupted because the document was hidden!\");\n }\n await ((_a = this.videoEl) == null ? void 0 : _a.play());\n }\n pause() {\n var _a;\n this.isPlaying = false;\n if (this.videoEl.paused)\n return;\n (_a = this.videoEl) == null ? void 0 : _a.pause();\n }\n stop() {\n var _a;\n this.isPlaying = false;\n if (!this.videoEl.paused) {\n (_a = this.videoEl) == null ? void 0 : _a.pause();\n }\n this.videoEl.currentTime = 0;\n }\n getError() {\n return this.error;\n }\n onDestroy() {\n if (this.player) {\n this.player.unlinkVideoReader(this);\n }\n removeAllListeners(this.videoEl, \"playing\");\n removeAllListeners(this.videoEl, \"timeupdate\");\n this.videoEl = null;\n this.bitmapCanvas = null;\n this.bitmapCtx = null;\n }\n seek(targetTime, play = true) {\n return new Promise((resolve) => {\n let isCallback = false;\n let timer = null;\n const setVideoState = async () => {\n var _a;\n if (play && this.videoEl.paused) {\n try {\n await this.play();\n } catch (e) {\n this.setError(e);\n }\n } else if (!play && !this.videoEl.paused) {\n (_a = this.videoEl) == null ? void 0 : _a.pause();\n }\n };\n const seekCallback = async () => {\n if (!this.videoEl) {\n this.setError(new Error(\"Video element doesn't exist!\"));\n resolve();\n return;\n }\n removeListener(this.videoEl, \"seeked\", seekCallback);\n await setVideoState();\n isCallback = true;\n clearTimeout(timer);\n timer = null;\n resolve();\n };\n if (!this.videoEl) {\n this.setError(new Error(\"Video element doesn't exist!\"));\n resolve();\n return;\n }\n addListener(this.videoEl, \"seeked\", seekCallback);\n this.videoEl.currentTime = targetTime;\n timer = setTimeout(() => {\n if (!isCallback) {\n if (!this.videoEl) {\n this.setError(new Error(\"Video element doesn't exist!\"));\n resolve();\n return;\n } else {\n removeListener(this.videoEl, \"seeked\", seekCallback);\n setVideoState();\n resolve();\n }\n }\n }, 1e3 / this.frameRate * VIDEO_DECODE_SEEK_TIMEOUT_FRAME);\n });\n }\n setError(e) {\n this.error = e;\n }\n linkPlayer(player) {\n this.player = player;\n if (player) {\n player.linkVideoReader(this);\n }\n }\n }\n class StaticTimeRanges {\n constructor(timeRanges) {\n this.timeRanges = timeRanges;\n }\n contains(targetFrame) {\n if (this.timeRanges.length === 0)\n return false;\n for (let timeRange of this.timeRanges) {\n if (timeRange.start <= targetFrame && targetFrame < timeRange.end) {\n return true;\n }\n }\n return false;\n }\n }\n\n const measureText = (imageData) => {\n const imageDataInt32Array = new Int32Array(imageData.data.buffer);\n let left = getLeftPixel(imageDataInt32Array, imageData.width, imageData.height);\n let top = getTopPixel(imageDataInt32Array, imageData.width, imageData.height);\n let right = getRightPixel(imageDataInt32Array, imageData.width, imageData.height);\n let bottom = getBottomPixel(imageDataInt32Array, imageData.width, imageData.height);\n return { left, top, right, bottom };\n };\n const getLeftPixel = (imageDataArray, width, height) => {\n const verticalCount = imageDataArray.length / width;\n const acrossCount = imageDataArray.length / height;\n for (let i = 0; i < acrossCount; i++) {\n for (let j = 0; j < verticalCount; j++) {\n if (imageDataArray[i + j * width] !== 0)\n return i;\n }\n }\n return acrossCount;\n };\n const getTopPixel = (imageDataArray, width, height) => {\n const verticalCount = imageDataArray.length / width;\n const acrossCount = imageDataArray.length / height;\n for (let i = 0; i < verticalCount; i++) {\n for (let j = 0; j < acrossCount; j++) {\n if (imageDataArray[i * width + j] !== 0)\n return i;\n }\n }\n return verticalCount;\n };\n const getRightPixel = (imageDataArray, width, height) => {\n const verticalCount = imageDataArray.length / width;\n const acrossCount = imageDataArray.length / height;\n for (let i = acrossCount - 1; i > 0; i--) {\n for (let j = verticalCount - 1; j > 0; j--) {\n if (imageDataArray[i + width * j] !== 0)\n return i;\n }\n }\n return 0;\n };\n const getBottomPixel = (imageDataArray, width, height) => {\n const verticalCount = imageDataArray.length / width;\n const acrossCount = imageDataArray.length / height;\n for (let i = verticalCount - 1; i > 0; i--) {\n for (let j = acrossCount - 1; j > 0; j--) {\n if (imageDataArray[i * width + j] !== 0)\n return i;\n }\n }\n return 0;\n };\n\n class ScalerContext {\n constructor(fontName, fontStyle, size, fauxBold = false, fauxItalic = false) {\n this.fontBoundingBoxMap = [];\n this.fontName = fontName;\n this.fontStyle = fontStyle;\n this.size = size;\n this.fauxBold = fauxBold;\n this.fauxItalic = fauxItalic;\n this.loadCanvas();\n }\n static setCanvas(canvas) {\n ScalerContext.canvas = canvas;\n }\n static setContext(context) {\n ScalerContext.context = context;\n }\n static isUnicodePropertyEscapeSupported() {\n try {\n const regex = new RegExp(\"\\\\p{L}\", \"u\");\n return true;\n } catch (e) {\n return false;\n }\n }\n static isEmoji(text) {\n let emojiRegExp;\n if (this.isUnicodePropertyEscapeSupported()) {\n emojiRegExp = new RegExp(\"\\\\p{Extended_Pictographic}|[#*0-9]\\\\uFE0F?\\\\u20E3|[\\\\uD83C\\\\uDDE6-\\\\uD83C\\\\uDDFF]\", \"u\");\n } else {\n emojiRegExp = /(\\u00a9|\\u00ae|[\\u2000-\\u3300]|\\ud83c[\\ud000-\\udfff]|\\ud83d[\\ud000-\\udfff]|\\ud83e[\\ud000-\\udfff])/;\n }\n return emojiRegExp.test(text);\n }\n fontString() {\n const attributes = [];\n if (this.fauxItalic) {\n attributes.push(\"italic\");\n }\n if (this.fauxBold) {\n attributes.push(\"bold\");\n }\n attributes.push(`${this.size}px`);\n const fallbackFontNames = defaultFontNames.concat();\n fallbackFontNames.unshift(...getFontFamilies(this.fontName, this.fontStyle));\n attributes.push(`${fallbackFontNames.join(\",\")}`);\n return attributes.join(\" \");\n }\n getTextAdvance(text) {\n const { context } = ScalerContext;\n context.font = this.fontString();\n return context.measureText(text).width;\n }\n getTextBounds(text) {\n const { context } = ScalerContext;\n context.font = this.fontString();\n const metrics = this.measureText(context, text);\n const bounds = {\n left: Math.floor(-metrics.actualBoundingBoxLeft),\n top: Math.floor(-metrics.actualBoundingBoxAscent),\n right: Math.ceil(metrics.actualBoundingBoxRight),\n bottom: Math.ceil(metrics.actualBoundingBoxDescent)\n };\n return bounds;\n }\n generateFontMetrics() {\n const { context } = ScalerContext;\n context.font = this.fontString();\n const metrics = this.measureText(context, \"\\u4E2D\");\n const capHeight = metrics.actualBoundingBoxAscent;\n const xMetrics = this.measureText(context, \"x\");\n const xHeight = xMetrics.actualBoundingBoxAscent;\n return {\n ascent: -metrics.fontBoundingBoxAscent,\n descent: metrics.fontBoundingBoxDescent,\n xHeight,\n capHeight\n };\n }\n generateImage(text, bounds) {\n const canvas = getCanvas2D(bounds.right - bounds.left, bounds.bottom - bounds.top);\n const context = canvas.getContext(\"2d\");\n context.font = this.fontString();\n context.fillText(text, -bounds.left, -bounds.top);\n return canvas;\n }\n loadCanvas() {\n if (!ScalerContext.canvas) {\n ScalerContext.setCanvas(getCanvas2D(10, 10));\n ScalerContext.setContext(\n ScalerContext.canvas.getContext(\"2d\", { willReadFrequently: true })\n );\n }\n }\n measureText(ctx, text) {\n const metrics = ctx.measureText(text);\n if (metrics == null ? void 0 : metrics.actualBoundingBoxAscent)\n return metrics;\n ctx.canvas.width = this.size * 1.5;\n ctx.canvas.height = this.size * 1.5;\n const pos = [0, this.size];\n ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);\n ctx.font = this.fontString();\n ctx.fillText(text, pos[0], pos[1]);\n const imageData = ctx.getImageData(0, 0, ctx.canvas.width, ctx.canvas.height);\n const { left, top, right, bottom } = measureText(imageData);\n ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);\n let fontMeasure;\n const fontBoundingBox = this.fontBoundingBoxMap.find((item) => item.key === this.fontName);\n if (fontBoundingBox) {\n fontMeasure = fontBoundingBox.value;\n } else {\n ctx.font = this.fontString();\n ctx.fillText(\"\\u6D4B\", pos[0], pos[1]);\n const fontImageData = ctx.getImageData(0, 0, ctx.canvas.width, ctx.canvas.height);\n fontMeasure = measureText(fontImageData);\n this.fontBoundingBoxMap.push({ key: this.fontName, value: fontMeasure });\n ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);\n }\n return {\n actualBoundingBoxAscent: pos[1] - top,\n actualBoundingBoxRight: right - pos[0],\n actualBoundingBoxDescent: bottom - pos[1],\n actualBoundingBoxLeft: pos[0] - left,\n fontBoundingBoxAscent: fontMeasure.bottom - fontMeasure.top,\n fontBoundingBoxDescent: 0,\n width: fontMeasure.right - fontMeasure.left\n };\n }\n }\n\n class WebMask {\n static create(canvas) {\n return new WebMask(canvas);\n }\n static getLineCap(cap) {\n switch (cap) {\n case PAGModule.TGFXLineCap.Round:\n return \"round\";\n case PAGModule.TGFXLineCap.Square:\n return \"square\";\n default:\n return \"butt\";\n }\n }\n static getLineJoin(join) {\n switch (join) {\n case PAGModule.TGFXLineJoin.Round:\n return \"round\";\n case PAGModule.TGFXLineJoin.Bevel:\n return \"bevel\";\n default:\n return \"miter\";\n }\n }\n constructor(canvas) {\n this.canvas = canvas;\n this.context = this.canvas.getContext(\"2d\");\n }\n updateCanvas(canvas) {\n this.canvas = canvas;\n }\n fillPath(path, fillType) {\n this.context.setTransform(1, 0, 0, 1, 0, 0);\n if (fillType === PAGModule.TGFXPathFillType.InverseWinding || fillType === PAGModule.TGFXPathFillType.InverseEvenOdd) {\n this.context.clip(path, fillType === PAGModule.TGFXPathFillType.InverseEvenOdd ? \"evenodd\" : \"nonzero\");\n this.context.fillRect(0, 0, this.canvas.width, this.canvas.height);\n } else {\n this.context.fill(path, fillType === PAGModule.TGFXPathFillType.EvenOdd ? \"evenodd\" : \"nonzero\");\n }\n }\n fillText(webFont, texts, positions, matrixWasmIns) {\n const scalerContext = new ScalerContext(webFont.name, webFont.style, webFont.size, webFont.bold, webFont.italic);\n const matrix = new Matrix(matrixWasmIns);\n this.context.setTransform(matrix.a, matrix.b, matrix.c, matrix.d, matrix.tx, matrix.ty);\n this.context.font = scalerContext.fontString();\n for (let i = 0; i < texts.size(); i++) {\n const position = positions.get(i);\n this.context.fillText(texts.get(i), position.x, position.y);\n }\n }\n strokeText(webFont, stroke, texts, positions, matrixWasmIns) {\n if (stroke.width < 0.5) {\n return;\n }\n const scalerContext = new ScalerContext(webFont.name, webFont.style, webFont.size, webFont.bold, webFont.italic);\n const matrix = new Matrix(matrixWasmIns);\n this.context.setTransform(matrix.a, matrix.b, matrix.c, matrix.d, matrix.tx, matrix.ty);\n this.context.font = scalerContext.fontString();\n this.context.lineJoin = WebMask.getLineJoin(stroke.join);\n this.context.miterLimit = stroke.miterLimit;\n this.context.lineCap = WebMask.getLineCap(stroke.cap);\n this.context.lineWidth = stroke.width;\n for (let i = 0; i < texts.size(); i++) {\n const position = positions.get(i);\n this.context.strokeText(texts.get(i), position.x, position.y);\n }\n }\n clear() {\n this.context.clearRect(0, 0, this.canvas.width, this.canvas.height);\n }\n }\n\n class GlobalCanvas {\n constructor() {\n this._canvas = null;\n this._glContext = null;\n this.width = DEFAULT_CANVAS_SIZE;\n this.height = DEFAULT_CANVAS_SIZE;\n this.retainCount = 0;\n }\n retain() {\n if (this.retainCount === 0) {\n try {\n this._canvas = new OffscreenCanvas(0, 0);\n } catch (error) {\n this._canvas = document.createElement(\"canvas\");\n }\n this._canvas.width = this.width;\n this._canvas.height = this.height;\n const gl = this._canvas.getContext(\"webgl\", WEBGL_CONTEXT_ATTRIBUTES);\n if (!gl)\n throw new Error(\"Canvas context is not WebGL!\");\n this._glContext = BackendContext.from(gl);\n }\n this.retainCount += 1;\n }\n release() {\n this.retainCount -= 1;\n if (this.retainCount === 0) {\n if (!this._glContext)\n return;\n this._glContext.destroy();\n this._glContext = null;\n this._canvas = null;\n }\n }\n get canvas() {\n return this._canvas;\n }\n get glContext() {\n return this._glContext;\n }\n setCanvasSize(width = DEFAULT_CANVAS_SIZE, height = DEFAULT_CANVAS_SIZE) {\n this.width = width;\n this.height = height;\n if (this._glContext && this._canvas) {\n this._canvas.width = width;\n this._canvas.height = height;\n }\n }\n }\n\n var __defProp$3 = Object.defineProperty;\n var __getOwnPropDesc$2 = Object.getOwnPropertyDescriptor;\n var __decorateClass$2 = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$2(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result)\n __defProp$3(target, key, result);\n return result;\n };\n let PAGTextLayer = class extends PAGLayer {\n static make(duration, text, fontSize = 0, fontFamily = \"\", fontStyle = \"\") {\n if (typeof text === \"string\") {\n return new PAGTextLayer(PAGModule._PAGTextLayer._Make(duration, text, fontSize, fontFamily, fontStyle));\n } else {\n return new PAGTextLayer(PAGModule._PAGTextLayer._Make(duration, text));\n }\n }\n fillColor() {\n return this.wasmIns._fillColor();\n }\n setFillColor(value) {\n this.wasmIns._setFillColor(value);\n }\n font() {\n return new PAGFont(this.wasmIns._font());\n }\n setFont(pagFont) {\n this.wasmIns._setFont(pagFont.wasmIns);\n }\n fontSize() {\n return this.wasmIns._fontSize();\n }\n setFontSize(size) {\n this.wasmIns._setFontSize(size);\n }\n strokeColor() {\n return this.wasmIns._strokeColor();\n }\n setStrokeColor(value) {\n this.wasmIns._setStrokeColor(value);\n }\n text() {\n return this.wasmIns._text();\n }\n setText(text) {\n this.wasmIns._setText(text);\n }\n reset() {\n this.wasmIns._reset();\n }\n };\n PAGTextLayer = __decorateClass$2([\n destroyVerify,\n wasmAwaitRewind\n ], PAGTextLayer);\n\n var __defProp$2 = Object.defineProperty;\n var __getOwnPropDesc$1 = Object.getOwnPropertyDescriptor;\n var __decorateClass$1 = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$1(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result)\n __defProp$2(target, key, result);\n return result;\n };\n let PAGImageLayer = class extends PAGLayer {\n static make(width, height, duration) {\n const wasmIns = PAGModule._PAGImageLayer._Make(width, height, duration);\n if (!wasmIns)\n throw new Error(\"Make PAGImageLayer fail!\");\n return new PAGImageLayer(wasmIns);\n }\n contentDuration() {\n return this.wasmIns._contentDuration();\n }\n getVideoRanges() {\n return this.wasmIns._getVideoRanges();\n }\n replaceImage(pagImage) {\n this.wasmIns._replaceImage(pagImage.wasmIns);\n }\n setImage(pagImage) {\n this.wasmIns._setImage(pagImage.wasmIns);\n }\n layerTimeToContent(layerTime) {\n return this.wasmIns._layerTimeToContent(layerTime);\n }\n contentTimeToLayer(contentTime) {\n return this.wasmIns._contentTimeToLayer(contentTime);\n }\n imageBytes() {\n return this.wasmIns._imageBytes();\n }\n };\n PAGImageLayer = __decorateClass$1([\n destroyVerify,\n wasmAwaitRewind\n ], PAGImageLayer);\n\n var __defProp$1 = Object.defineProperty;\n var __getOwnPropDesc = Object.getOwnPropertyDescriptor;\n var __decorateClass = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result)\n __defProp$1(target, key, result);\n return result;\n };\n let PAGSolidLayer = class extends PAGLayer {\n static make(duration, width, height, solidColor, opacity) {\n const wasmIns = PAGModule._PAGSolidLayer._Make(duration, width, height, solidColor, opacity);\n if (!wasmIns)\n throw new Error(\"Make PAGSolidLayer fail!\");\n return new PAGSolidLayer(wasmIns);\n }\n solidColor() {\n return this.wasmIns._solidColor();\n }\n setSolidColor(color) {\n this.wasmIns._setSolidColor(color);\n }\n };\n PAGSolidLayer = __decorateClass([\n destroyVerify,\n wasmAwaitRewind\n ], PAGSolidLayer);\n\n const createImage = (source) => {\n return new Promise((resolve) => {\n const image = new Image();\n image.onload = function() {\n resolve(image);\n };\n image.onerror = function() {\n console.error(\"image create from bytes error.\");\n resolve(null);\n };\n image.src = source;\n });\n };\n const createImageFromBytes = (bytes) => {\n const blob = new Blob([bytes], { type: \"image/*\" });\n return createImage(URL.createObjectURL(blob));\n };\n const readImagePixels = (module, image, width, height) => {\n if (!image) {\n return null;\n }\n const canvas = getCanvas2D(width, height);\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n return null;\n }\n ctx.drawImage(image, 0, 0, width, height);\n const { data } = ctx.getImageData(0, 0, width, height);\n releaseCanvas2D(canvas);\n if (data.length === 0) {\n return null;\n }\n return writeBufferToWasm(module, data);\n };\n const hasWebpSupport = () => {\n try {\n return document.createElement(\"canvas\").toDataURL(\"image/webp\", 0.5).indexOf(\"data:image/webp\") === 0;\n } catch (err) {\n return false;\n }\n };\n const getSourceSize = (source) => {\n if (isInstanceOf(source, globalThis.HTMLVideoElement)) {\n return {\n width: source.videoWidth,\n height: source.videoHeight\n };\n }\n return { width: source.width, height: source.height };\n };\n const uploadToTexture = (GL, source, textureID, alphaOnly) => {\n var _a;\n let renderSource = source instanceof BitmapImage ? source.bitmap : source;\n if (!renderSource)\n return;\n const gl = (_a = GL.currentContext) == null ? void 0 : _a.GLctx;\n gl.bindTexture(gl.TEXTURE_2D, GL.textures[textureID]);\n if (alphaOnly) {\n gl.pixelStorei(gl.UNPACK_ALIGNMENT, 1);\n gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, gl.ALPHA, gl.UNSIGNED_BYTE, renderSource);\n } else {\n gl.pixelStorei(gl.UNPACK_ALIGNMENT, 4);\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);\n gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, gl.RGBA, gl.UNSIGNED_BYTE, renderSource);\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, false);\n }\n };\n const isAndroidMiniprogram = () => {\n if (typeof wx !== \"undefined\" && wx.getSystemInfoSync) {\n return wx.getSystemInfoSync().platform === \"android\";\n }\n };\n const releaseNativeImage = (source) => {\n if (isInstanceOf(source, globalThis.ImageBitmap)) {\n source.close();\n } else if (isCanvas(source)) {\n releaseCanvas2D(source);\n }\n };\n const getBytesFromPath = async (module, path) => {\n const buffer = await fetch(path).then((res) => res.arrayBuffer());\n return writeBufferToWasm(module, buffer);\n };\n\n var tgfx = /*#__PURE__*/Object.freeze({\n __proto__: null,\n createImage: createImage,\n createImageFromBytes: createImageFromBytes,\n readImagePixels: readImagePixels,\n hasWebpSupport: hasWebpSupport,\n getSourceSize: getSourceSize,\n uploadToTexture: uploadToTexture,\n isAndroidMiniprogram: isAndroidMiniprogram,\n releaseNativeImage: releaseNativeImage,\n getBytesFromPath: getBytesFromPath,\n createCanvas2D: getCanvas2D\n });\n\n const setMixin = (module) => {\n module.traceImage = function(info, pixels) {\n const canvas = document.createElement(\"canvas\");\n canvas.width = info.width;\n canvas.height = info.height;\n const context = canvas.getContext(\"2d\");\n const imageData = new ImageData(new Uint8ClampedArray(pixels), canvas.width, canvas.height);\n context.putImageData(imageData, 0, 0);\n document.body.appendChild(canvas);\n };\n module.registerSoftwareDecoderFactory = function(factory = null) {\n module._registerSoftwareDecoderFactory(factory);\n };\n module.SDKVersion = function() {\n return module._SDKVersion();\n };\n module.isIPhone = () => IPHONE;\n };\n\n var __defProp = Object.defineProperty;\n var __getOwnPropSymbols = Object.getOwnPropertySymbols;\n var __hasOwnProp = Object.prototype.hasOwnProperty;\n var __propIsEnum = Object.prototype.propertyIsEnumerable;\n var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\n var __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n };\n const binding = (module) => {\n setPAGModule(module);\n module.module = module;\n module.PAGFile = PAGFile;\n module.PAGPlayer = PAGPlayer;\n module.PAGView = PAGView;\n module.PAGFont = PAGFont;\n module.PAGImage = PAGImage;\n module.PAGLayer = PAGLayer;\n module.PAGComposition = PAGComposition;\n module.PAGSurface = PAGSurface;\n module.PAGTextLayer = PAGTextLayer;\n module.PAGImageLayer = PAGImageLayer;\n module.PAGSolidLayer = PAGSolidLayer;\n module.VideoReader = VideoReader;\n module.ScalerContext = ScalerContext;\n module.WebMask = WebMask;\n module.GlobalCanvas = GlobalCanvas;\n module.BackendContext = BackendContext;\n module.Matrix = Matrix;\n module.RenderCanvas = RenderCanvas;\n setMixin(module);\n module.tgfx = __spreadValues({}, tgfx);\n };\n\n var PAGInit$1 = (() => {\n var _scriptDir = typeof document !== \"undefined\" && document.currentScript ? document.currentScript.src : void 0;\n return function(PAGInit2) {\n PAGInit2 = PAGInit2 || {};\n var Module = typeof PAGInit2 != \"undefined\" ? PAGInit2 : {};\n var readyPromiseResolve, readyPromiseReject;\n Module[\"ready\"] = new Promise(function(resolve, reject) {\n readyPromiseResolve = resolve;\n readyPromiseReject = reject;\n });\n var moduleOverrides = Object.assign({}, Module);\n var quit_ = (status, toThrow) => {\n throw toThrow;\n };\n var ENVIRONMENT_IS_WEB = typeof window == \"object\";\n var ENVIRONMENT_IS_WORKER = typeof importScripts == \"function\";\n typeof process == \"object\" && typeof process.versions == \"object\" && typeof process.versions.node == \"string\";\n var scriptDirectory = \"\";\n function locateFile(path) {\n if (Module[\"locateFile\"]) {\n return Module[\"locateFile\"](path, scriptDirectory);\n }\n return scriptDirectory + path;\n }\n var read_, readAsync, readBinary;\n if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n if (ENVIRONMENT_IS_WORKER) {\n scriptDirectory = self.location.href;\n } else if (typeof document != \"undefined\" && document.currentScript) {\n scriptDirectory = document.currentScript.src;\n }\n if (_scriptDir) {\n scriptDirectory = _scriptDir;\n }\n if (scriptDirectory.indexOf(\"blob:\") !== 0) {\n scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, \"\").lastIndexOf(\"/\") + 1);\n } else {\n scriptDirectory = \"\";\n }\n {\n read_ = (url) => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.send(null);\n return xhr.responseText;\n };\n if (ENVIRONMENT_IS_WORKER) {\n readBinary = (url) => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.responseType = \"arraybuffer\";\n xhr.send(null);\n return new Uint8Array(xhr.response);\n };\n }\n readAsync = (url, onload, onerror) => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n xhr.responseType = \"arraybuffer\";\n xhr.onload = () => {\n if (xhr.status == 200 || xhr.status == 0 && xhr.response) {\n onload(xhr.response);\n return;\n }\n onerror();\n };\n xhr.onerror = onerror;\n xhr.send(null);\n };\n }\n }\n var out = Module[\"print\"] || console.log.bind(console);\n var err = Module[\"printErr\"] || console.warn.bind(console);\n Object.assign(Module, moduleOverrides);\n moduleOverrides = null;\n if (Module[\"arguments\"])\n Module[\"arguments\"];\n if (Module[\"thisProgram\"])\n Module[\"thisProgram\"];\n if (Module[\"quit\"])\n quit_ = Module[\"quit\"];\n var POINTER_SIZE = 4;\n var wasmBinary;\n if (Module[\"wasmBinary\"])\n wasmBinary = Module[\"wasmBinary\"];\n Module[\"noExitRuntime\"] || true;\n if (typeof WebAssembly != \"object\") {\n abort(\"no native wasm support detected\");\n }\n var wasmMemory;\n var ABORT = false;\n var EXITSTATUS;\n function assert(condition, text) {\n if (!condition) {\n abort(text);\n }\n }\n var UTF8Decoder = typeof TextDecoder != \"undefined\" ? new TextDecoder(\"utf8\") : void 0;\n function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) {\n var endIdx = idx + maxBytesToRead;\n var endPtr = idx;\n while (heapOrArray[endPtr] && !(endPtr >= endIdx))\n ++endPtr;\n if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) {\n return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr));\n }\n var str = \"\";\n while (idx < endPtr) {\n var u0 = heapOrArray[idx++];\n if (!(u0 & 128)) {\n str += String.fromCharCode(u0);\n continue;\n }\n var u1 = heapOrArray[idx++] & 63;\n if ((u0 & 224) == 192) {\n str += String.fromCharCode((u0 & 31) << 6 | u1);\n continue;\n }\n var u2 = heapOrArray[idx++] & 63;\n if ((u0 & 240) == 224) {\n u0 = (u0 & 15) << 12 | u1 << 6 | u2;\n } else {\n u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heapOrArray[idx++] & 63;\n }\n if (u0 < 65536) {\n str += String.fromCharCode(u0);\n } else {\n var ch = u0 - 65536;\n str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);\n }\n }\n return str;\n }\n function UTF8ToString(ptr, maxBytesToRead) {\n return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : \"\";\n }\n function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) {\n if (!(maxBytesToWrite > 0))\n return 0;\n var startIdx = outIdx;\n var endIdx = outIdx + maxBytesToWrite - 1;\n for (var i2 = 0; i2 < str.length; ++i2) {\n var u = str.charCodeAt(i2);\n if (u >= 55296 && u <= 57343) {\n var u1 = str.charCodeAt(++i2);\n u = 65536 + ((u & 1023) << 10) | u1 & 1023;\n }\n if (u <= 127) {\n if (outIdx >= endIdx)\n break;\n heap[outIdx++] = u;\n } else if (u <= 2047) {\n if (outIdx + 1 >= endIdx)\n break;\n heap[outIdx++] = 192 | u >> 6;\n heap[outIdx++] = 128 | u & 63;\n } else if (u <= 65535) {\n if (outIdx + 2 >= endIdx)\n break;\n heap[outIdx++] = 224 | u >> 12;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n } else {\n if (outIdx + 3 >= endIdx)\n break;\n heap[outIdx++] = 240 | u >> 18;\n heap[outIdx++] = 128 | u >> 12 & 63;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n }\n }\n heap[outIdx] = 0;\n return outIdx - startIdx;\n }\n function stringToUTF8(str, outPtr, maxBytesToWrite) {\n return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n }\n function lengthBytesUTF8(str) {\n var len = 0;\n for (var i2 = 0; i2 < str.length; ++i2) {\n var c = str.charCodeAt(i2);\n if (c <= 127) {\n len++;\n } else if (c <= 2047) {\n len += 2;\n } else if (c >= 55296 && c <= 57343) {\n len += 4;\n ++i2;\n } else {\n len += 3;\n }\n }\n return len;\n }\n var buffer, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n function updateGlobalBufferAndViews(buf) {\n buffer = buf;\n Module[\"HEAP8\"] = HEAP8 = new Int8Array(buf);\n Module[\"HEAP16\"] = HEAP16 = new Int16Array(buf);\n Module[\"HEAP32\"] = HEAP32 = new Int32Array(buf);\n Module[\"HEAPU8\"] = HEAPU8 = new Uint8Array(buf);\n Module[\"HEAPU16\"] = HEAPU16 = new Uint16Array(buf);\n Module[\"HEAPU32\"] = HEAPU32 = new Uint32Array(buf);\n Module[\"HEAPF32\"] = HEAPF32 = new Float32Array(buf);\n Module[\"HEAPF64\"] = HEAPF64 = new Float64Array(buf);\n }\n Module[\"INITIAL_MEMORY\"] || 16777216;\n var __ATPRERUN__ = [];\n var __ATINIT__ = [];\n var __ATPOSTRUN__ = [];\n function preRun() {\n if (Module[\"preRun\"]) {\n if (typeof Module[\"preRun\"] == \"function\")\n Module[\"preRun\"] = [Module[\"preRun\"]];\n while (Module[\"preRun\"].length) {\n addOnPreRun(Module[\"preRun\"].shift());\n }\n }\n callRuntimeCallbacks(__ATPRERUN__);\n }\n function initRuntime() {\n if (!Module[\"noFSInit\"] && !FS.init.initialized)\n FS.init();\n FS.ignorePermissions = false;\n callRuntimeCallbacks(__ATINIT__);\n }\n function postRun() {\n if (Module[\"postRun\"]) {\n if (typeof Module[\"postRun\"] == \"function\")\n Module[\"postRun\"] = [Module[\"postRun\"]];\n while (Module[\"postRun\"].length) {\n addOnPostRun(Module[\"postRun\"].shift());\n }\n }\n callRuntimeCallbacks(__ATPOSTRUN__);\n }\n function addOnPreRun(cb) {\n __ATPRERUN__.unshift(cb);\n }\n function addOnInit(cb) {\n __ATINIT__.unshift(cb);\n }\n function addOnPostRun(cb) {\n __ATPOSTRUN__.unshift(cb);\n }\n var runDependencies = 0;\n var dependenciesFulfilled = null;\n function getUniqueRunDependency(id) {\n return id;\n }\n function addRunDependency(id) {\n runDependencies++;\n if (Module[\"monitorRunDependencies\"]) {\n Module[\"monitorRunDependencies\"](runDependencies);\n }\n }\n function removeRunDependency(id) {\n runDependencies--;\n if (Module[\"monitorRunDependencies\"]) {\n Module[\"monitorRunDependencies\"](runDependencies);\n }\n if (runDependencies == 0) {\n if (dependenciesFulfilled) {\n var callback = dependenciesFulfilled;\n dependenciesFulfilled = null;\n callback();\n }\n }\n }\n function abort(what) {\n {\n if (Module[\"onAbort\"]) {\n Module[\"onAbort\"](what);\n }\n }\n what = \"Aborted(\" + what + \")\";\n err(what);\n ABORT = true;\n EXITSTATUS = 1;\n what += \". Build with -sASSERTIONS for more info.\";\n var e = new WebAssembly.RuntimeError(what);\n readyPromiseReject(e);\n throw e;\n }\n var dataURIPrefix = \"data:application/octet-stream;base64,\";\n function isDataURI(filename) {\n return filename.startsWith(dataURIPrefix);\n }\n var wasmBinaryFile;\n wasmBinaryFile = \"libpag.wasm\";\n if (!isDataURI(wasmBinaryFile)) {\n wasmBinaryFile = locateFile(wasmBinaryFile);\n }\n function getBinary(file) {\n try {\n if (file == wasmBinaryFile && wasmBinary) {\n return new Uint8Array(wasmBinary);\n }\n if (readBinary) {\n return readBinary(file);\n }\n throw \"both async and sync fetching of the wasm failed\";\n } catch (err2) {\n abort(err2);\n }\n }\n function getBinaryPromise() {\n if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) {\n if (typeof fetch == \"function\") {\n return fetch(wasmBinaryFile, { credentials: \"same-origin\" }).then(function(response) {\n if (!response[\"ok\"]) {\n throw \"failed to load wasm binary file at '\" + wasmBinaryFile + \"'\";\n }\n return response[\"arrayBuffer\"]();\n }).catch(function() {\n return getBinary(wasmBinaryFile);\n });\n }\n }\n return Promise.resolve().then(function() {\n return getBinary(wasmBinaryFile);\n });\n }\n function createWasm() {\n var info = { \"a\": asmLibraryArg };\n function receiveInstance(instance, module) {\n var exports2 = instance.exports;\n exports2 = Asyncify.instrumentWasmExports(exports2);\n Module[\"asm\"] = exports2;\n wasmMemory = Module[\"asm\"][\"hc\"];\n updateGlobalBufferAndViews(wasmMemory.buffer);\n Module[\"asm\"][\"jc\"];\n addOnInit(Module[\"asm\"][\"ic\"]);\n removeRunDependency();\n }\n addRunDependency();\n function receiveInstantiationResult(result) {\n receiveInstance(result[\"instance\"]);\n }\n function instantiateArrayBuffer(receiver) {\n return getBinaryPromise().then(function(binary) {\n return WebAssembly.instantiate(binary, info);\n }).then(function(instance) {\n return instance;\n }).then(receiver, function(reason) {\n err(\"failed to asynchronously prepare wasm: \" + reason);\n abort(reason);\n });\n }\n function instantiateAsync() {\n if (!wasmBinary && typeof WebAssembly.instantiateStreaming == \"function\" && !isDataURI(wasmBinaryFile) && typeof fetch == \"function\") {\n return fetch(wasmBinaryFile, { credentials: \"same-origin\" }).then(function(response) {\n var result = WebAssembly.instantiateStreaming(response, info);\n return result.then(receiveInstantiationResult, function(reason) {\n err(\"wasm streaming compile failed: \" + reason);\n err(\"falling back to ArrayBuffer instantiation\");\n return instantiateArrayBuffer(receiveInstantiationResult);\n });\n });\n } else {\n return instantiateArrayBuffer(receiveInstantiationResult);\n }\n }\n if (Module[\"instantiateWasm\"]) {\n try {\n var exports = Module[\"instantiateWasm\"](info, receiveInstance);\n exports = Asyncify.instrumentWasmExports(exports);\n return exports;\n } catch (e) {\n err(\"Module.instantiateWasm callback failed with error: \" + e);\n return false;\n }\n }\n instantiateAsync().catch(readyPromiseReject);\n return {};\n }\n var tempDouble;\n var tempI64;\n function ExitStatus(status) {\n this.name = \"ExitStatus\";\n this.message = \"Program terminated with exit(\" + status + \")\";\n this.status = status;\n }\n function callRuntimeCallbacks(callbacks) {\n while (callbacks.length > 0) {\n callbacks.shift()(Module);\n }\n }\n function handleException(e) {\n if (e instanceof ExitStatus || e == \"unwind\") {\n return EXITSTATUS;\n }\n quit_(1, e);\n }\n function ___assert_fail(condition, filename, line, func) {\n abort(\"Assertion failed: \" + UTF8ToString(condition) + \", at: \" + [filename ? UTF8ToString(filename) : \"unknown filename\", line, func ? UTF8ToString(func) : \"unknown function\"]);\n }\n function ___cxa_allocate_exception(size) {\n return _malloc(size + 24) + 24;\n }\n function ExceptionInfo(excPtr) {\n this.excPtr = excPtr;\n this.ptr = excPtr - 24;\n this.set_type = function(type) {\n HEAPU32[this.ptr + 4 >> 2] = type;\n };\n this.get_type = function() {\n return HEAPU32[this.ptr + 4 >> 2];\n };\n this.set_destructor = function(destructor) {\n HEAPU32[this.ptr + 8 >> 2] = destructor;\n };\n this.get_destructor = function() {\n return HEAPU32[this.ptr + 8 >> 2];\n };\n this.set_refcount = function(refcount) {\n HEAP32[this.ptr >> 2] = refcount;\n };\n this.set_caught = function(caught) {\n caught = caught ? 1 : 0;\n HEAP8[this.ptr + 12 >> 0] = caught;\n };\n this.get_caught = function() {\n return HEAP8[this.ptr + 12 >> 0] != 0;\n };\n this.set_rethrown = function(rethrown) {\n rethrown = rethrown ? 1 : 0;\n HEAP8[this.ptr + 13 >> 0] = rethrown;\n };\n this.get_rethrown = function() {\n return HEAP8[this.ptr + 13 >> 0] != 0;\n };\n this.init = function(type, destructor) {\n this.set_adjusted_ptr(0);\n this.set_type(type);\n this.set_destructor(destructor);\n this.set_refcount(0);\n this.set_caught(false);\n this.set_rethrown(false);\n };\n this.add_ref = function() {\n var value = HEAP32[this.ptr >> 2];\n HEAP32[this.ptr >> 2] = value + 1;\n };\n this.release_ref = function() {\n var prev = HEAP32[this.ptr >> 2];\n HEAP32[this.ptr >> 2] = prev - 1;\n return prev === 1;\n };\n this.set_adjusted_ptr = function(adjustedPtr) {\n HEAPU32[this.ptr + 16 >> 2] = adjustedPtr;\n };\n this.get_adjusted_ptr = function() {\n return HEAPU32[this.ptr + 16 >> 2];\n };\n this.get_exception_ptr = function() {\n var isPointer = ___cxa_is_pointer_type(this.get_type());\n if (isPointer) {\n return HEAPU32[this.excPtr >> 2];\n }\n var adjusted = this.get_adjusted_ptr();\n if (adjusted !== 0)\n return adjusted;\n return this.excPtr;\n };\n }\n function ___cxa_throw(ptr, type, destructor) {\n var info = new ExceptionInfo(ptr);\n info.init(type, destructor);\n throw ptr;\n }\n function setErrNo(value) {\n HEAP32[___errno_location() >> 2] = value;\n return value;\n }\n var PATH = { isAbs: (path) => path.charAt(0) === \"/\", splitPath: (filename) => {\n var splitPathRe = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\n return splitPathRe.exec(filename).slice(1);\n }, normalizeArray: (parts, allowAboveRoot) => {\n var up = 0;\n for (var i2 = parts.length - 1; i2 >= 0; i2--) {\n var last = parts[i2];\n if (last === \".\") {\n parts.splice(i2, 1);\n } else if (last === \"..\") {\n parts.splice(i2, 1);\n up++;\n } else if (up) {\n parts.splice(i2, 1);\n up--;\n }\n }\n if (allowAboveRoot) {\n for (; up; up--) {\n parts.unshift(\"..\");\n }\n }\n return parts;\n }, normalize: (path) => {\n var isAbsolute = PATH.isAbs(path), trailingSlash = path.substr(-1) === \"/\";\n path = PATH.normalizeArray(path.split(\"/\").filter((p) => !!p), !isAbsolute).join(\"/\");\n if (!path && !isAbsolute) {\n path = \".\";\n }\n if (path && trailingSlash) {\n path += \"/\";\n }\n return (isAbsolute ? \"/\" : \"\") + path;\n }, dirname: (path) => {\n var result = PATH.splitPath(path), root = result[0], dir = result[1];\n if (!root && !dir) {\n return \".\";\n }\n if (dir) {\n dir = dir.substr(0, dir.length - 1);\n }\n return root + dir;\n }, basename: (path) => {\n if (path === \"/\")\n return \"/\";\n path = PATH.normalize(path);\n path = path.replace(/\\/$/, \"\");\n var lastSlash = path.lastIndexOf(\"/\");\n if (lastSlash === -1)\n return path;\n return path.substr(lastSlash + 1);\n }, join: function() {\n var paths = Array.prototype.slice.call(arguments);\n return PATH.normalize(paths.join(\"/\"));\n }, join2: (l, r) => {\n return PATH.normalize(l + \"/\" + r);\n } };\n function getRandomDevice() {\n if (typeof crypto == \"object\" && typeof crypto[\"getRandomValues\"] == \"function\") {\n var randomBuffer = new Uint8Array(1);\n return () => {\n crypto.getRandomValues(randomBuffer);\n return randomBuffer[0];\n };\n } else\n return () => abort(\"randomDevice\");\n }\n var PATH_FS = { resolve: function() {\n var resolvedPath = \"\", resolvedAbsolute = false;\n for (var i2 = arguments.length - 1; i2 >= -1 && !resolvedAbsolute; i2--) {\n var path = i2 >= 0 ? arguments[i2] : FS.cwd();\n if (typeof path != \"string\") {\n throw new TypeError(\"Arguments to path.resolve must be strings\");\n } else if (!path) {\n return \"\";\n }\n resolvedPath = path + \"/\" + resolvedPath;\n resolvedAbsolute = PATH.isAbs(path);\n }\n resolvedPath = PATH.normalizeArray(resolvedPath.split(\"/\").filter((p) => !!p), !resolvedAbsolute).join(\"/\");\n return (resolvedAbsolute ? \"/\" : \"\") + resolvedPath || \".\";\n }, relative: (from, to) => {\n from = PATH_FS.resolve(from).substr(1);\n to = PATH_FS.resolve(to).substr(1);\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== \"\")\n break;\n }\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== \"\")\n break;\n }\n if (start > end)\n return [];\n return arr.slice(start, end - start + 1);\n }\n var fromParts = trim(from.split(\"/\"));\n var toParts = trim(to.split(\"/\"));\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i2 = 0; i2 < length; i2++) {\n if (fromParts[i2] !== toParts[i2]) {\n samePartsLength = i2;\n break;\n }\n }\n var outputParts = [];\n for (var i2 = samePartsLength; i2 < fromParts.length; i2++) {\n outputParts.push(\"..\");\n }\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n return outputParts.join(\"/\");\n } };\n function intArrayFromString(stringy, dontAddNull, length) {\n var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;\n var u8array = new Array(len);\n var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);\n if (dontAddNull)\n u8array.length = numBytesWritten;\n return u8array;\n }\n var TTY = { ttys: [], init: function() {\n }, shutdown: function() {\n }, register: function(dev, ops) {\n TTY.ttys[dev] = { input: [], output: [], ops };\n FS.registerDevice(dev, TTY.stream_ops);\n }, stream_ops: { open: function(stream) {\n var tty = TTY.ttys[stream.node.rdev];\n if (!tty) {\n throw new FS.ErrnoError(43);\n }\n stream.tty = tty;\n stream.seekable = false;\n }, close: function(stream) {\n stream.tty.ops.fsync(stream.tty);\n }, fsync: function(stream) {\n stream.tty.ops.fsync(stream.tty);\n }, read: function(stream, buffer2, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.get_char) {\n throw new FS.ErrnoError(60);\n }\n var bytesRead = 0;\n for (var i2 = 0; i2 < length; i2++) {\n var result;\n try {\n result = stream.tty.ops.get_char(stream.tty);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === void 0 && bytesRead === 0) {\n throw new FS.ErrnoError(6);\n }\n if (result === null || result === void 0)\n break;\n bytesRead++;\n buffer2[offset + i2] = result;\n }\n if (bytesRead) {\n stream.node.timestamp = Date.now();\n }\n return bytesRead;\n }, write: function(stream, buffer2, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.put_char) {\n throw new FS.ErrnoError(60);\n }\n try {\n for (var i2 = 0; i2 < length; i2++) {\n stream.tty.ops.put_char(stream.tty, buffer2[offset + i2]);\n }\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (length) {\n stream.node.timestamp = Date.now();\n }\n return i2;\n } }, default_tty_ops: { get_char: function(tty) {\n if (!tty.input.length) {\n var result = null;\n if (typeof window != \"undefined\" && typeof window.prompt == \"function\") {\n result = window.prompt(\"Input: \");\n if (result !== null) {\n result += \"\\n\";\n }\n } else if (typeof readline == \"function\") {\n result = readline();\n if (result !== null) {\n result += \"\\n\";\n }\n }\n if (!result) {\n return null;\n }\n tty.input = intArrayFromString(result, true);\n }\n return tty.input.shift();\n }, put_char: function(tty, val) {\n if (val === null || val === 10) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else {\n if (val != 0)\n tty.output.push(val);\n }\n }, fsync: function(tty) {\n if (tty.output && tty.output.length > 0) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n } }, default_tty1_ops: { put_char: function(tty, val) {\n if (val === null || val === 10) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else {\n if (val != 0)\n tty.output.push(val);\n }\n }, fsync: function(tty) {\n if (tty.output && tty.output.length > 0) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n } } };\n function mmapAlloc(size) {\n abort();\n }\n var MEMFS = { ops_table: null, mount: function(mount) {\n return MEMFS.createNode(null, \"/\", 16384 | 511, 0);\n }, createNode: function(parent, name, mode, dev) {\n if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {\n throw new FS.ErrnoError(63);\n }\n if (!MEMFS.ops_table) {\n MEMFS.ops_table = { dir: { node: { getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr, lookup: MEMFS.node_ops.lookup, mknod: MEMFS.node_ops.mknod, rename: MEMFS.node_ops.rename, unlink: MEMFS.node_ops.unlink, rmdir: MEMFS.node_ops.rmdir, readdir: MEMFS.node_ops.readdir, symlink: MEMFS.node_ops.symlink }, stream: { llseek: MEMFS.stream_ops.llseek } }, file: { node: { getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr }, stream: { llseek: MEMFS.stream_ops.llseek, read: MEMFS.stream_ops.read, write: MEMFS.stream_ops.write, allocate: MEMFS.stream_ops.allocate, mmap: MEMFS.stream_ops.mmap, msync: MEMFS.stream_ops.msync } }, link: { node: { getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr, readlink: MEMFS.node_ops.readlink }, stream: {} }, chrdev: { node: { getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr }, stream: FS.chrdev_stream_ops } };\n }\n var node = FS.createNode(parent, name, mode, dev);\n if (FS.isDir(node.mode)) {\n node.node_ops = MEMFS.ops_table.dir.node;\n node.stream_ops = MEMFS.ops_table.dir.stream;\n node.contents = {};\n } else if (FS.isFile(node.mode)) {\n node.node_ops = MEMFS.ops_table.file.node;\n node.stream_ops = MEMFS.ops_table.file.stream;\n node.usedBytes = 0;\n node.contents = null;\n } else if (FS.isLink(node.mode)) {\n node.node_ops = MEMFS.ops_table.link.node;\n node.stream_ops = MEMFS.ops_table.link.stream;\n } else if (FS.isChrdev(node.mode)) {\n node.node_ops = MEMFS.ops_table.chrdev.node;\n node.stream_ops = MEMFS.ops_table.chrdev.stream;\n }\n node.timestamp = Date.now();\n if (parent) {\n parent.contents[name] = node;\n parent.timestamp = node.timestamp;\n }\n return node;\n }, getFileDataAsTypedArray: function(node) {\n if (!node.contents)\n return new Uint8Array(0);\n if (node.contents.subarray)\n return node.contents.subarray(0, node.usedBytes);\n return new Uint8Array(node.contents);\n }, expandFileStorage: function(node, newCapacity) {\n var prevCapacity = node.contents ? node.contents.length : 0;\n if (prevCapacity >= newCapacity)\n return;\n var CAPACITY_DOUBLING_MAX = 1024 * 1024;\n newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) >>> 0);\n if (prevCapacity != 0)\n newCapacity = Math.max(newCapacity, 256);\n var oldContents = node.contents;\n node.contents = new Uint8Array(newCapacity);\n if (node.usedBytes > 0)\n node.contents.set(oldContents.subarray(0, node.usedBytes), 0);\n }, resizeFileStorage: function(node, newSize) {\n if (node.usedBytes == newSize)\n return;\n if (newSize == 0) {\n node.contents = null;\n node.usedBytes = 0;\n } else {\n var oldContents = node.contents;\n node.contents = new Uint8Array(newSize);\n if (oldContents) {\n node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes)));\n }\n node.usedBytes = newSize;\n }\n }, node_ops: { getattr: function(node) {\n var attr = {};\n attr.dev = FS.isChrdev(node.mode) ? node.id : 1;\n attr.ino = node.id;\n attr.mode = node.mode;\n attr.nlink = 1;\n attr.uid = 0;\n attr.gid = 0;\n attr.rdev = node.rdev;\n if (FS.isDir(node.mode)) {\n attr.size = 4096;\n } else if (FS.isFile(node.mode)) {\n attr.size = node.usedBytes;\n } else if (FS.isLink(node.mode)) {\n attr.size = node.link.length;\n } else {\n attr.size = 0;\n }\n attr.atime = new Date(node.timestamp);\n attr.mtime = new Date(node.timestamp);\n attr.ctime = new Date(node.timestamp);\n attr.blksize = 4096;\n attr.blocks = Math.ceil(attr.size / attr.blksize);\n return attr;\n }, setattr: function(node, attr) {\n if (attr.mode !== void 0) {\n node.mode = attr.mode;\n }\n if (attr.timestamp !== void 0) {\n node.timestamp = attr.timestamp;\n }\n if (attr.size !== void 0) {\n MEMFS.resizeFileStorage(node, attr.size);\n }\n }, lookup: function(parent, name) {\n throw FS.genericErrors[44];\n }, mknod: function(parent, name, mode, dev) {\n return MEMFS.createNode(parent, name, mode, dev);\n }, rename: function(old_node, new_dir, new_name) {\n if (FS.isDir(old_node.mode)) {\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {\n }\n if (new_node) {\n for (var i2 in new_node.contents) {\n throw new FS.ErrnoError(55);\n }\n }\n }\n delete old_node.parent.contents[old_node.name];\n old_node.parent.timestamp = Date.now();\n old_node.name = new_name;\n new_dir.contents[new_name] = old_node;\n new_dir.timestamp = old_node.parent.timestamp;\n old_node.parent = new_dir;\n }, unlink: function(parent, name) {\n delete parent.contents[name];\n parent.timestamp = Date.now();\n }, rmdir: function(parent, name) {\n var node = FS.lookupNode(parent, name);\n for (var i2 in node.contents) {\n throw new FS.ErrnoError(55);\n }\n delete parent.contents[name];\n parent.timestamp = Date.now();\n }, readdir: function(node) {\n var entries = [\".\", \"..\"];\n for (var key in node.contents) {\n if (!node.contents.hasOwnProperty(key)) {\n continue;\n }\n entries.push(key);\n }\n return entries;\n }, symlink: function(parent, newname, oldpath) {\n var node = MEMFS.createNode(parent, newname, 511 | 40960, 0);\n node.link = oldpath;\n return node;\n }, readlink: function(node) {\n if (!FS.isLink(node.mode)) {\n throw new FS.ErrnoError(28);\n }\n return node.link;\n } }, stream_ops: { read: function(stream, buffer2, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= stream.node.usedBytes)\n return 0;\n var size = Math.min(stream.node.usedBytes - position, length);\n if (size > 8 && contents.subarray) {\n buffer2.set(contents.subarray(position, position + size), offset);\n } else {\n for (var i2 = 0; i2 < size; i2++)\n buffer2[offset + i2] = contents[position + i2];\n }\n return size;\n }, write: function(stream, buffer2, offset, length, position, canOwn) {\n if (buffer2.buffer === HEAP8.buffer) {\n canOwn = false;\n }\n if (!length)\n return 0;\n var node = stream.node;\n node.timestamp = Date.now();\n if (buffer2.subarray && (!node.contents || node.contents.subarray)) {\n if (canOwn) {\n node.contents = buffer2.subarray(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (node.usedBytes === 0 && position === 0) {\n node.contents = buffer2.slice(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (position + length <= node.usedBytes) {\n node.contents.set(buffer2.subarray(offset, offset + length), position);\n return length;\n }\n }\n MEMFS.expandFileStorage(node, position + length);\n if (node.contents.subarray && buffer2.subarray) {\n node.contents.set(buffer2.subarray(offset, offset + length), position);\n } else {\n for (var i2 = 0; i2 < length; i2++) {\n node.contents[position + i2] = buffer2[offset + i2];\n }\n }\n node.usedBytes = Math.max(node.usedBytes, position + length);\n return length;\n }, llseek: function(stream, offset, whence) {\n var position = offset;\n if (whence === 1) {\n position += stream.position;\n } else if (whence === 2) {\n if (FS.isFile(stream.node.mode)) {\n position += stream.node.usedBytes;\n }\n }\n if (position < 0) {\n throw new FS.ErrnoError(28);\n }\n return position;\n }, allocate: function(stream, offset, length) {\n MEMFS.expandFileStorage(stream.node, offset + length);\n stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length);\n }, mmap: function(stream, length, position, prot, flags) {\n if (!FS.isFile(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n var ptr;\n var allocated;\n var contents = stream.node.contents;\n if (!(flags & 2) && contents.buffer === buffer) {\n allocated = false;\n ptr = contents.byteOffset;\n } else {\n if (position > 0 || position + length < contents.length) {\n if (contents.subarray) {\n contents = contents.subarray(position, position + length);\n } else {\n contents = Array.prototype.slice.call(contents, position, position + length);\n }\n }\n allocated = true;\n ptr = mmapAlloc();\n if (!ptr) {\n throw new FS.ErrnoError(48);\n }\n HEAP8.set(contents, ptr);\n }\n return { ptr, allocated };\n }, msync: function(stream, buffer2, offset, length, mmapFlags) {\n if (!FS.isFile(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n if (mmapFlags & 2) {\n return 0;\n }\n MEMFS.stream_ops.write(stream, buffer2, 0, length, offset, false);\n return 0;\n } } };\n function asyncLoad(url, onload, onerror, noRunDep) {\n var dep = !noRunDep ? getUniqueRunDependency(\"al \" + url) : \"\";\n readAsync(url, (arrayBuffer) => {\n assert(arrayBuffer, 'Loading data file \"' + url + '\" failed (no arrayBuffer).');\n onload(new Uint8Array(arrayBuffer));\n if (dep)\n removeRunDependency();\n }, (event) => {\n if (onerror) {\n onerror();\n } else {\n throw 'Loading data file \"' + url + '\" failed.';\n }\n });\n if (dep)\n addRunDependency();\n }\n var FS = { root: null, mounts: [], devices: {}, streams: [], nextInode: 1, nameTable: null, currentPath: \"/\", initialized: false, ignorePermissions: true, ErrnoError: null, genericErrors: {}, filesystems: null, syncFSRequests: 0, lookupPath: (path, opts = {}) => {\n path = PATH_FS.resolve(FS.cwd(), path);\n if (!path)\n return { path: \"\", node: null };\n var defaults = { follow_mount: true, recurse_count: 0 };\n opts = Object.assign(defaults, opts);\n if (opts.recurse_count > 8) {\n throw new FS.ErrnoError(32);\n }\n var parts = PATH.normalizeArray(path.split(\"/\").filter((p) => !!p), false);\n var current = FS.root;\n var current_path = \"/\";\n for (var i2 = 0; i2 < parts.length; i2++) {\n var islast = i2 === parts.length - 1;\n if (islast && opts.parent) {\n break;\n }\n current = FS.lookupNode(current, parts[i2]);\n current_path = PATH.join2(current_path, parts[i2]);\n if (FS.isMountpoint(current)) {\n if (!islast || islast && opts.follow_mount) {\n current = current.mounted.root;\n }\n }\n if (!islast || opts.follow) {\n var count = 0;\n while (FS.isLink(current.mode)) {\n var link = FS.readlink(current_path);\n current_path = PATH_FS.resolve(PATH.dirname(current_path), link);\n var lookup = FS.lookupPath(current_path, { recurse_count: opts.recurse_count + 1 });\n current = lookup.node;\n if (count++ > 40) {\n throw new FS.ErrnoError(32);\n }\n }\n }\n }\n return { path: current_path, node: current };\n }, getPath: (node) => {\n var path;\n while (true) {\n if (FS.isRoot(node)) {\n var mount = node.mount.mountpoint;\n if (!path)\n return mount;\n return mount[mount.length - 1] !== \"/\" ? mount + \"/\" + path : mount + path;\n }\n path = path ? node.name + \"/\" + path : node.name;\n node = node.parent;\n }\n }, hashName: (parentid, name) => {\n var hash = 0;\n for (var i2 = 0; i2 < name.length; i2++) {\n hash = (hash << 5) - hash + name.charCodeAt(i2) | 0;\n }\n return (parentid + hash >>> 0) % FS.nameTable.length;\n }, hashAddNode: (node) => {\n var hash = FS.hashName(node.parent.id, node.name);\n node.name_next = FS.nameTable[hash];\n FS.nameTable[hash] = node;\n }, hashRemoveNode: (node) => {\n var hash = FS.hashName(node.parent.id, node.name);\n if (FS.nameTable[hash] === node) {\n FS.nameTable[hash] = node.name_next;\n } else {\n var current = FS.nameTable[hash];\n while (current) {\n if (current.name_next === node) {\n current.name_next = node.name_next;\n break;\n }\n current = current.name_next;\n }\n }\n }, lookupNode: (parent, name) => {\n var errCode = FS.mayLookup(parent);\n if (errCode) {\n throw new FS.ErrnoError(errCode, parent);\n }\n var hash = FS.hashName(parent.id, name);\n for (var node = FS.nameTable[hash]; node; node = node.name_next) {\n var nodeName = node.name;\n if (node.parent.id === parent.id && nodeName === name) {\n return node;\n }\n }\n return FS.lookup(parent, name);\n }, createNode: (parent, name, mode, rdev) => {\n var node = new FS.FSNode(parent, name, mode, rdev);\n FS.hashAddNode(node);\n return node;\n }, destroyNode: (node) => {\n FS.hashRemoveNode(node);\n }, isRoot: (node) => {\n return node === node.parent;\n }, isMountpoint: (node) => {\n return !!node.mounted;\n }, isFile: (mode) => {\n return (mode & 61440) === 32768;\n }, isDir: (mode) => {\n return (mode & 61440) === 16384;\n }, isLink: (mode) => {\n return (mode & 61440) === 40960;\n }, isChrdev: (mode) => {\n return (mode & 61440) === 8192;\n }, isBlkdev: (mode) => {\n return (mode & 61440) === 24576;\n }, isFIFO: (mode) => {\n return (mode & 61440) === 4096;\n }, isSocket: (mode) => {\n return (mode & 49152) === 49152;\n }, flagModes: { \"r\": 0, \"r+\": 2, \"w\": 577, \"w+\": 578, \"a\": 1089, \"a+\": 1090 }, modeStringToFlags: (str) => {\n var flags = FS.flagModes[str];\n if (typeof flags == \"undefined\") {\n throw new Error(\"Unknown file open mode: \" + str);\n }\n return flags;\n }, flagsToPermissionString: (flag) => {\n var perms = [\"r\", \"w\", \"rw\"][flag & 3];\n if (flag & 512) {\n perms += \"w\";\n }\n return perms;\n }, nodePermissions: (node, perms) => {\n if (FS.ignorePermissions) {\n return 0;\n }\n if (perms.includes(\"r\") && !(node.mode & 292)) {\n return 2;\n } else if (perms.includes(\"w\") && !(node.mode & 146)) {\n return 2;\n } else if (perms.includes(\"x\") && !(node.mode & 73)) {\n return 2;\n }\n return 0;\n }, mayLookup: (dir) => {\n var errCode = FS.nodePermissions(dir, \"x\");\n if (errCode)\n return errCode;\n if (!dir.node_ops.lookup)\n return 2;\n return 0;\n }, mayCreate: (dir, name) => {\n try {\n var node = FS.lookupNode(dir, name);\n return 20;\n } catch (e) {\n }\n return FS.nodePermissions(dir, \"wx\");\n }, mayDelete: (dir, name, isdir) => {\n var node;\n try {\n node = FS.lookupNode(dir, name);\n } catch (e) {\n return e.errno;\n }\n var errCode = FS.nodePermissions(dir, \"wx\");\n if (errCode) {\n return errCode;\n }\n if (isdir) {\n if (!FS.isDir(node.mode)) {\n return 54;\n }\n if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) {\n return 10;\n }\n } else {\n if (FS.isDir(node.mode)) {\n return 31;\n }\n }\n return 0;\n }, mayOpen: (node, flags) => {\n if (!node) {\n return 44;\n }\n if (FS.isLink(node.mode)) {\n return 32;\n } else if (FS.isDir(node.mode)) {\n if (FS.flagsToPermissionString(flags) !== \"r\" || flags & 512) {\n return 31;\n }\n }\n return FS.nodePermissions(node, FS.flagsToPermissionString(flags));\n }, MAX_OPEN_FDS: 4096, nextfd: (fd_start = 0, fd_end = FS.MAX_OPEN_FDS) => {\n for (var fd = fd_start; fd <= fd_end; fd++) {\n if (!FS.streams[fd]) {\n return fd;\n }\n }\n throw new FS.ErrnoError(33);\n }, getStream: (fd) => FS.streams[fd], createStream: (stream, fd_start, fd_end) => {\n if (!FS.FSStream) {\n FS.FSStream = function() {\n this.shared = {};\n };\n FS.FSStream.prototype = {};\n Object.defineProperties(FS.FSStream.prototype, { object: { get: function() {\n return this.node;\n }, set: function(val) {\n this.node = val;\n } }, isRead: { get: function() {\n return (this.flags & 2097155) !== 1;\n } }, isWrite: { get: function() {\n return (this.flags & 2097155) !== 0;\n } }, isAppend: { get: function() {\n return this.flags & 1024;\n } }, flags: { get: function() {\n return this.shared.flags;\n }, set: function(val) {\n this.shared.flags = val;\n } }, position: { get: function() {\n return this.shared.position;\n }, set: function(val) {\n this.shared.position = val;\n } } });\n }\n stream = Object.assign(new FS.FSStream(), stream);\n var fd = FS.nextfd(fd_start, fd_end);\n stream.fd = fd;\n FS.streams[fd] = stream;\n return stream;\n }, closeStream: (fd) => {\n FS.streams[fd] = null;\n }, chrdev_stream_ops: { open: (stream) => {\n var device = FS.getDevice(stream.node.rdev);\n stream.stream_ops = device.stream_ops;\n if (stream.stream_ops.open) {\n stream.stream_ops.open(stream);\n }\n }, llseek: () => {\n throw new FS.ErrnoError(70);\n } }, major: (dev) => dev >> 8, minor: (dev) => dev & 255, makedev: (ma, mi) => ma << 8 | mi, registerDevice: (dev, ops) => {\n FS.devices[dev] = { stream_ops: ops };\n }, getDevice: (dev) => FS.devices[dev], getMounts: (mount) => {\n var mounts = [];\n var check = [mount];\n while (check.length) {\n var m = check.pop();\n mounts.push(m);\n check.push.apply(check, m.mounts);\n }\n return mounts;\n }, syncfs: (populate, callback) => {\n if (typeof populate == \"function\") {\n callback = populate;\n populate = false;\n }\n FS.syncFSRequests++;\n if (FS.syncFSRequests > 1) {\n err(\"warning: \" + FS.syncFSRequests + \" FS.syncfs operations in flight at once, probably just doing extra work\");\n }\n var mounts = FS.getMounts(FS.root.mount);\n var completed = 0;\n function doCallback(errCode) {\n FS.syncFSRequests--;\n return callback(errCode);\n }\n function done(errCode) {\n if (errCode) {\n if (!done.errored) {\n done.errored = true;\n return doCallback(errCode);\n }\n return;\n }\n if (++completed >= mounts.length) {\n doCallback(null);\n }\n }\n mounts.forEach((mount) => {\n if (!mount.type.syncfs) {\n return done(null);\n }\n mount.type.syncfs(mount, populate, done);\n });\n }, mount: (type, opts, mountpoint) => {\n var root = mountpoint === \"/\";\n var pseudo = !mountpoint;\n var node;\n if (root && FS.root) {\n throw new FS.ErrnoError(10);\n } else if (!root && !pseudo) {\n var lookup = FS.lookupPath(mountpoint, { follow_mount: false });\n mountpoint = lookup.path;\n node = lookup.node;\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n if (!FS.isDir(node.mode)) {\n throw new FS.ErrnoError(54);\n }\n }\n var mount = { type, opts, mountpoint, mounts: [] };\n var mountRoot = type.mount(mount);\n mountRoot.mount = mount;\n mount.root = mountRoot;\n if (root) {\n FS.root = mountRoot;\n } else if (node) {\n node.mounted = mount;\n if (node.mount) {\n node.mount.mounts.push(mount);\n }\n }\n return mountRoot;\n }, unmount: (mountpoint) => {\n var lookup = FS.lookupPath(mountpoint, { follow_mount: false });\n if (!FS.isMountpoint(lookup.node)) {\n throw new FS.ErrnoError(28);\n }\n var node = lookup.node;\n var mount = node.mounted;\n var mounts = FS.getMounts(mount);\n Object.keys(FS.nameTable).forEach((hash) => {\n var current = FS.nameTable[hash];\n while (current) {\n var next = current.name_next;\n if (mounts.includes(current.mount)) {\n FS.destroyNode(current);\n }\n current = next;\n }\n });\n node.mounted = null;\n var idx = node.mount.mounts.indexOf(mount);\n node.mount.mounts.splice(idx, 1);\n }, lookup: (parent, name) => {\n return parent.node_ops.lookup(parent, name);\n }, mknod: (path, mode, dev) => {\n var lookup = FS.lookupPath(path, { parent: true });\n var parent = lookup.node;\n var name = PATH.basename(path);\n if (!name || name === \".\" || name === \"..\") {\n throw new FS.ErrnoError(28);\n }\n var errCode = FS.mayCreate(parent, name);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.mknod) {\n throw new FS.ErrnoError(63);\n }\n return parent.node_ops.mknod(parent, name, mode, dev);\n }, create: (path, mode) => {\n mode = mode !== void 0 ? mode : 438;\n mode &= 4095;\n mode |= 32768;\n return FS.mknod(path, mode, 0);\n }, mkdir: (path, mode) => {\n mode = mode !== void 0 ? mode : 511;\n mode &= 511 | 512;\n mode |= 16384;\n return FS.mknod(path, mode, 0);\n }, mkdirTree: (path, mode) => {\n var dirs = path.split(\"/\");\n var d = \"\";\n for (var i2 = 0; i2 < dirs.length; ++i2) {\n if (!dirs[i2])\n continue;\n d += \"/\" + dirs[i2];\n try {\n FS.mkdir(d, mode);\n } catch (e) {\n if (e.errno != 20)\n throw e;\n }\n }\n }, mkdev: (path, mode, dev) => {\n if (typeof dev == \"undefined\") {\n dev = mode;\n mode = 438;\n }\n mode |= 8192;\n return FS.mknod(path, mode, dev);\n }, symlink: (oldpath, newpath) => {\n if (!PATH_FS.resolve(oldpath)) {\n throw new FS.ErrnoError(44);\n }\n var lookup = FS.lookupPath(newpath, { parent: true });\n var parent = lookup.node;\n if (!parent) {\n throw new FS.ErrnoError(44);\n }\n var newname = PATH.basename(newpath);\n var errCode = FS.mayCreate(parent, newname);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.symlink) {\n throw new FS.ErrnoError(63);\n }\n return parent.node_ops.symlink(parent, newname, oldpath);\n }, rename: (old_path, new_path) => {\n var old_dirname = PATH.dirname(old_path);\n var new_dirname = PATH.dirname(new_path);\n var old_name = PATH.basename(old_path);\n var new_name = PATH.basename(new_path);\n var lookup, old_dir, new_dir;\n lookup = FS.lookupPath(old_path, { parent: true });\n old_dir = lookup.node;\n lookup = FS.lookupPath(new_path, { parent: true });\n new_dir = lookup.node;\n if (!old_dir || !new_dir)\n throw new FS.ErrnoError(44);\n if (old_dir.mount !== new_dir.mount) {\n throw new FS.ErrnoError(75);\n }\n var old_node = FS.lookupNode(old_dir, old_name);\n var relative = PATH_FS.relative(old_path, new_dirname);\n if (relative.charAt(0) !== \".\") {\n throw new FS.ErrnoError(28);\n }\n relative = PATH_FS.relative(new_path, old_dirname);\n if (relative.charAt(0) !== \".\") {\n throw new FS.ErrnoError(55);\n }\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {\n }\n if (old_node === new_node) {\n return;\n }\n var isdir = FS.isDir(old_node.mode);\n var errCode = FS.mayDelete(old_dir, old_name, isdir);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n errCode = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!old_dir.node_ops.rename) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(old_node) || new_node && FS.isMountpoint(new_node)) {\n throw new FS.ErrnoError(10);\n }\n if (new_dir !== old_dir) {\n errCode = FS.nodePermissions(old_dir, \"w\");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n }\n FS.hashRemoveNode(old_node);\n try {\n old_dir.node_ops.rename(old_node, new_dir, new_name);\n } catch (e) {\n throw e;\n } finally {\n FS.hashAddNode(old_node);\n }\n }, rmdir: (path) => {\n var lookup = FS.lookupPath(path, { parent: true });\n var parent = lookup.node;\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, true);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.rmdir) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n parent.node_ops.rmdir(parent, name);\n FS.destroyNode(node);\n }, readdir: (path) => {\n var lookup = FS.lookupPath(path, { follow: true });\n var node = lookup.node;\n if (!node.node_ops.readdir) {\n throw new FS.ErrnoError(54);\n }\n return node.node_ops.readdir(node);\n }, unlink: (path) => {\n var lookup = FS.lookupPath(path, { parent: true });\n var parent = lookup.node;\n if (!parent) {\n throw new FS.ErrnoError(44);\n }\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, false);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.unlink) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n parent.node_ops.unlink(parent, name);\n FS.destroyNode(node);\n }, readlink: (path) => {\n var lookup = FS.lookupPath(path);\n var link = lookup.node;\n if (!link) {\n throw new FS.ErrnoError(44);\n }\n if (!link.node_ops.readlink) {\n throw new FS.ErrnoError(28);\n }\n return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link));\n }, stat: (path, dontFollow) => {\n var lookup = FS.lookupPath(path, { follow: !dontFollow });\n var node = lookup.node;\n if (!node) {\n throw new FS.ErrnoError(44);\n }\n if (!node.node_ops.getattr) {\n throw new FS.ErrnoError(63);\n }\n return node.node_ops.getattr(node);\n }, lstat: (path) => {\n return FS.stat(path, true);\n }, chmod: (path, mode, dontFollow) => {\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, { follow: !dontFollow });\n node = lookup.node;\n } else {\n node = path;\n }\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n node.node_ops.setattr(node, { mode: mode & 4095 | node.mode & ~4095, timestamp: Date.now() });\n }, lchmod: (path, mode) => {\n FS.chmod(path, mode, true);\n }, fchmod: (fd, mode) => {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n FS.chmod(stream.node, mode);\n }, chown: (path, uid, gid, dontFollow) => {\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, { follow: !dontFollow });\n node = lookup.node;\n } else {\n node = path;\n }\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n node.node_ops.setattr(node, { timestamp: Date.now() });\n }, lchown: (path, uid, gid) => {\n FS.chown(path, uid, gid, true);\n }, fchown: (fd, uid, gid) => {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n FS.chown(stream.node, uid, gid);\n }, truncate: (path, len) => {\n if (len < 0) {\n throw new FS.ErrnoError(28);\n }\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, { follow: true });\n node = lookup.node;\n } else {\n node = path;\n }\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isDir(node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!FS.isFile(node.mode)) {\n throw new FS.ErrnoError(28);\n }\n var errCode = FS.nodePermissions(node, \"w\");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n node.node_ops.setattr(node, { size: len, timestamp: Date.now() });\n }, ftruncate: (fd, len) => {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(28);\n }\n FS.truncate(stream.node, len);\n }, utime: (path, atime, mtime) => {\n var lookup = FS.lookupPath(path, { follow: true });\n var node = lookup.node;\n node.node_ops.setattr(node, { timestamp: Math.max(atime, mtime) });\n }, open: (path, flags, mode) => {\n if (path === \"\") {\n throw new FS.ErrnoError(44);\n }\n flags = typeof flags == \"string\" ? FS.modeStringToFlags(flags) : flags;\n mode = typeof mode == \"undefined\" ? 438 : mode;\n if (flags & 64) {\n mode = mode & 4095 | 32768;\n } else {\n mode = 0;\n }\n var node;\n if (typeof path == \"object\") {\n node = path;\n } else {\n path = PATH.normalize(path);\n try {\n var lookup = FS.lookupPath(path, { follow: !(flags & 131072) });\n node = lookup.node;\n } catch (e) {\n }\n }\n var created = false;\n if (flags & 64) {\n if (node) {\n if (flags & 128) {\n throw new FS.ErrnoError(20);\n }\n } else {\n node = FS.mknod(path, mode, 0);\n created = true;\n }\n }\n if (!node) {\n throw new FS.ErrnoError(44);\n }\n if (FS.isChrdev(node.mode)) {\n flags &= ~512;\n }\n if (flags & 65536 && !FS.isDir(node.mode)) {\n throw new FS.ErrnoError(54);\n }\n if (!created) {\n var errCode = FS.mayOpen(node, flags);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n }\n if (flags & 512 && !created) {\n FS.truncate(node, 0);\n }\n flags &= ~(128 | 512 | 131072);\n var stream = FS.createStream({ node, path: FS.getPath(node), flags, seekable: true, position: 0, stream_ops: node.stream_ops, ungotten: [], error: false });\n if (stream.stream_ops.open) {\n stream.stream_ops.open(stream);\n }\n if (Module[\"logReadFiles\"] && !(flags & 1)) {\n if (!FS.readFiles)\n FS.readFiles = {};\n if (!(path in FS.readFiles)) {\n FS.readFiles[path] = 1;\n }\n }\n return stream;\n }, close: (stream) => {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if (stream.getdents)\n stream.getdents = null;\n try {\n if (stream.stream_ops.close) {\n stream.stream_ops.close(stream);\n }\n } catch (e) {\n throw e;\n } finally {\n FS.closeStream(stream.fd);\n }\n stream.fd = null;\n }, isClosed: (stream) => {\n return stream.fd === null;\n }, llseek: (stream, offset, whence) => {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if (!stream.seekable || !stream.stream_ops.llseek) {\n throw new FS.ErrnoError(70);\n }\n if (whence != 0 && whence != 1 && whence != 2) {\n throw new FS.ErrnoError(28);\n }\n stream.position = stream.stream_ops.llseek(stream, offset, whence);\n stream.ungotten = [];\n return stream.position;\n }, read: (stream, buffer2, offset, length, position) => {\n if (length < 0 || position < 0) {\n throw new FS.ErrnoError(28);\n }\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if ((stream.flags & 2097155) === 1) {\n throw new FS.ErrnoError(8);\n }\n if (FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!stream.stream_ops.read) {\n throw new FS.ErrnoError(28);\n }\n var seeking = typeof position != \"undefined\";\n if (!seeking) {\n position = stream.position;\n } else if (!stream.seekable) {\n throw new FS.ErrnoError(70);\n }\n var bytesRead = stream.stream_ops.read(stream, buffer2, offset, length, position);\n if (!seeking)\n stream.position += bytesRead;\n return bytesRead;\n }, write: (stream, buffer2, offset, length, position, canOwn) => {\n if (length < 0 || position < 0) {\n throw new FS.ErrnoError(28);\n }\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(8);\n }\n if (FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!stream.stream_ops.write) {\n throw new FS.ErrnoError(28);\n }\n if (stream.seekable && stream.flags & 1024) {\n FS.llseek(stream, 0, 2);\n }\n var seeking = typeof position != \"undefined\";\n if (!seeking) {\n position = stream.position;\n } else if (!stream.seekable) {\n throw new FS.ErrnoError(70);\n }\n var bytesWritten = stream.stream_ops.write(stream, buffer2, offset, length, position, canOwn);\n if (!seeking)\n stream.position += bytesWritten;\n return bytesWritten;\n }, allocate: (stream, offset, length) => {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if (offset < 0 || length <= 0) {\n throw new FS.ErrnoError(28);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(8);\n }\n if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n if (!stream.stream_ops.allocate) {\n throw new FS.ErrnoError(138);\n }\n stream.stream_ops.allocate(stream, offset, length);\n }, mmap: (stream, length, position, prot, flags) => {\n if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) {\n throw new FS.ErrnoError(2);\n }\n if ((stream.flags & 2097155) === 1) {\n throw new FS.ErrnoError(2);\n }\n if (!stream.stream_ops.mmap) {\n throw new FS.ErrnoError(43);\n }\n return stream.stream_ops.mmap(stream, length, position, prot, flags);\n }, msync: (stream, buffer2, offset, length, mmapFlags) => {\n if (!stream || !stream.stream_ops.msync) {\n return 0;\n }\n return stream.stream_ops.msync(stream, buffer2, offset, length, mmapFlags);\n }, munmap: (stream) => 0, ioctl: (stream, cmd, arg) => {\n if (!stream.stream_ops.ioctl) {\n throw new FS.ErrnoError(59);\n }\n return stream.stream_ops.ioctl(stream, cmd, arg);\n }, readFile: (path, opts = {}) => {\n opts.flags = opts.flags || 0;\n opts.encoding = opts.encoding || \"binary\";\n if (opts.encoding !== \"utf8\" && opts.encoding !== \"binary\") {\n throw new Error('Invalid encoding type \"' + opts.encoding + '\"');\n }\n var ret;\n var stream = FS.open(path, opts.flags);\n var stat = FS.stat(path);\n var length = stat.size;\n var buf = new Uint8Array(length);\n FS.read(stream, buf, 0, length, 0);\n if (opts.encoding === \"utf8\") {\n ret = UTF8ArrayToString(buf, 0);\n } else if (opts.encoding === \"binary\") {\n ret = buf;\n }\n FS.close(stream);\n return ret;\n }, writeFile: (path, data, opts = {}) => {\n opts.flags = opts.flags || 577;\n var stream = FS.open(path, opts.flags, opts.mode);\n if (typeof data == \"string\") {\n var buf = new Uint8Array(lengthBytesUTF8(data) + 1);\n var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);\n FS.write(stream, buf, 0, actualNumBytes, void 0, opts.canOwn);\n } else if (ArrayBuffer.isView(data)) {\n FS.write(stream, data, 0, data.byteLength, void 0, opts.canOwn);\n } else {\n throw new Error(\"Unsupported data type\");\n }\n FS.close(stream);\n }, cwd: () => FS.currentPath, chdir: (path) => {\n var lookup = FS.lookupPath(path, { follow: true });\n if (lookup.node === null) {\n throw new FS.ErrnoError(44);\n }\n if (!FS.isDir(lookup.node.mode)) {\n throw new FS.ErrnoError(54);\n }\n var errCode = FS.nodePermissions(lookup.node, \"x\");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n FS.currentPath = lookup.path;\n }, createDefaultDirectories: () => {\n FS.mkdir(\"/tmp\");\n FS.mkdir(\"/home\");\n FS.mkdir(\"/home/web_user\");\n }, createDefaultDevices: () => {\n FS.mkdir(\"/dev\");\n FS.registerDevice(FS.makedev(1, 3), { read: () => 0, write: (stream, buffer2, offset, length, pos) => length });\n FS.mkdev(\"/dev/null\", FS.makedev(1, 3));\n TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);\n TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);\n FS.mkdev(\"/dev/tty\", FS.makedev(5, 0));\n FS.mkdev(\"/dev/tty1\", FS.makedev(6, 0));\n var random_device = getRandomDevice();\n FS.createDevice(\"/dev\", \"random\", random_device);\n FS.createDevice(\"/dev\", \"urandom\", random_device);\n FS.mkdir(\"/dev/shm\");\n FS.mkdir(\"/dev/shm/tmp\");\n }, createSpecialDirectories: () => {\n FS.mkdir(\"/proc\");\n var proc_self = FS.mkdir(\"/proc/self\");\n FS.mkdir(\"/proc/self/fd\");\n FS.mount({ mount: () => {\n var node = FS.createNode(proc_self, \"fd\", 16384 | 511, 73);\n node.node_ops = { lookup: (parent, name) => {\n var fd = +name;\n var stream = FS.getStream(fd);\n if (!stream)\n throw new FS.ErrnoError(8);\n var ret = { parent: null, mount: { mountpoint: \"fake\" }, node_ops: { readlink: () => stream.path } };\n ret.parent = ret;\n return ret;\n } };\n return node;\n } }, {}, \"/proc/self/fd\");\n }, createStandardStreams: () => {\n if (Module[\"stdin\"]) {\n FS.createDevice(\"/dev\", \"stdin\", Module[\"stdin\"]);\n } else {\n FS.symlink(\"/dev/tty\", \"/dev/stdin\");\n }\n if (Module[\"stdout\"]) {\n FS.createDevice(\"/dev\", \"stdout\", null, Module[\"stdout\"]);\n } else {\n FS.symlink(\"/dev/tty\", \"/dev/stdout\");\n }\n if (Module[\"stderr\"]) {\n FS.createDevice(\"/dev\", \"stderr\", null, Module[\"stderr\"]);\n } else {\n FS.symlink(\"/dev/tty1\", \"/dev/stderr\");\n }\n FS.open(\"/dev/stdin\", 0);\n FS.open(\"/dev/stdout\", 1);\n FS.open(\"/dev/stderr\", 1);\n }, ensureErrnoError: () => {\n if (FS.ErrnoError)\n return;\n FS.ErrnoError = function ErrnoError(errno, node) {\n this.node = node;\n this.setErrno = function(errno2) {\n this.errno = errno2;\n };\n this.setErrno(errno);\n this.message = \"FS error\";\n };\n FS.ErrnoError.prototype = new Error();\n FS.ErrnoError.prototype.constructor = FS.ErrnoError;\n [44].forEach((code) => {\n FS.genericErrors[code] = new FS.ErrnoError(code);\n FS.genericErrors[code].stack = \"\";\n });\n }, staticInit: () => {\n FS.ensureErrnoError();\n FS.nameTable = new Array(4096);\n FS.mount(MEMFS, {}, \"/\");\n FS.createDefaultDirectories();\n FS.createDefaultDevices();\n FS.createSpecialDirectories();\n FS.filesystems = { \"MEMFS\": MEMFS };\n }, init: (input, output, error) => {\n FS.init.initialized = true;\n FS.ensureErrnoError();\n Module[\"stdin\"] = input || Module[\"stdin\"];\n Module[\"stdout\"] = output || Module[\"stdout\"];\n Module[\"stderr\"] = error || Module[\"stderr\"];\n FS.createStandardStreams();\n }, quit: () => {\n FS.init.initialized = false;\n for (var i2 = 0; i2 < FS.streams.length; i2++) {\n var stream = FS.streams[i2];\n if (!stream) {\n continue;\n }\n FS.close(stream);\n }\n }, getMode: (canRead, canWrite) => {\n var mode = 0;\n if (canRead)\n mode |= 292 | 73;\n if (canWrite)\n mode |= 146;\n return mode;\n }, findObject: (path, dontResolveLastLink) => {\n var ret = FS.analyzePath(path, dontResolveLastLink);\n if (!ret.exists) {\n return null;\n }\n return ret.object;\n }, analyzePath: (path, dontResolveLastLink) => {\n try {\n var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink });\n path = lookup.path;\n } catch (e) {\n }\n var ret = { isRoot: false, exists: false, error: 0, name: null, path: null, object: null, parentExists: false, parentPath: null, parentObject: null };\n try {\n var lookup = FS.lookupPath(path, { parent: true });\n ret.parentExists = true;\n ret.parentPath = lookup.path;\n ret.parentObject = lookup.node;\n ret.name = PATH.basename(path);\n lookup = FS.lookupPath(path, { follow: !dontResolveLastLink });\n ret.exists = true;\n ret.path = lookup.path;\n ret.object = lookup.node;\n ret.name = lookup.node.name;\n ret.isRoot = lookup.path === \"/\";\n } catch (e) {\n ret.error = e.errno;\n }\n return ret;\n }, createPath: (parent, path, canRead, canWrite) => {\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n var parts = path.split(\"/\").reverse();\n while (parts.length) {\n var part = parts.pop();\n if (!part)\n continue;\n var current = PATH.join2(parent, part);\n try {\n FS.mkdir(current);\n } catch (e) {\n }\n parent = current;\n }\n return current;\n }, createFile: (parent, name, properties, canRead, canWrite) => {\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(canRead, canWrite);\n return FS.create(path, mode);\n }, createDataFile: (parent, name, data, canRead, canWrite, canOwn) => {\n var path = name;\n if (parent) {\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n path = name ? PATH.join2(parent, name) : parent;\n }\n var mode = FS.getMode(canRead, canWrite);\n var node = FS.create(path, mode);\n if (data) {\n if (typeof data == \"string\") {\n var arr = new Array(data.length);\n for (var i2 = 0, len = data.length; i2 < len; ++i2)\n arr[i2] = data.charCodeAt(i2);\n data = arr;\n }\n FS.chmod(node, mode | 146);\n var stream = FS.open(node, 577);\n FS.write(stream, data, 0, data.length, 0, canOwn);\n FS.close(stream);\n FS.chmod(node, mode);\n }\n return node;\n }, createDevice: (parent, name, input, output) => {\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(!!input, !!output);\n if (!FS.createDevice.major)\n FS.createDevice.major = 64;\n var dev = FS.makedev(FS.createDevice.major++, 0);\n FS.registerDevice(dev, { open: (stream) => {\n stream.seekable = false;\n }, close: (stream) => {\n if (output && output.buffer && output.buffer.length) {\n output(10);\n }\n }, read: (stream, buffer2, offset, length, pos) => {\n var bytesRead = 0;\n for (var i2 = 0; i2 < length; i2++) {\n var result;\n try {\n result = input();\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === void 0 && bytesRead === 0) {\n throw new FS.ErrnoError(6);\n }\n if (result === null || result === void 0)\n break;\n bytesRead++;\n buffer2[offset + i2] = result;\n }\n if (bytesRead) {\n stream.node.timestamp = Date.now();\n }\n return bytesRead;\n }, write: (stream, buffer2, offset, length, pos) => {\n for (var i2 = 0; i2 < length; i2++) {\n try {\n output(buffer2[offset + i2]);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n }\n if (length) {\n stream.node.timestamp = Date.now();\n }\n return i2;\n } });\n return FS.mkdev(path, mode, dev);\n }, forceLoadFile: (obj) => {\n if (obj.isDevice || obj.isFolder || obj.link || obj.contents)\n return true;\n if (typeof XMLHttpRequest != \"undefined\") {\n throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\");\n } else if (read_) {\n try {\n obj.contents = intArrayFromString(read_(obj.url), true);\n obj.usedBytes = obj.contents.length;\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n } else {\n throw new Error(\"Cannot load without read() or XMLHttpRequest.\");\n }\n }, createLazyFile: (parent, name, url, canRead, canWrite) => {\n function LazyUint8Array() {\n this.lengthKnown = false;\n this.chunks = [];\n }\n LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {\n if (idx > this.length - 1 || idx < 0) {\n return void 0;\n }\n var chunkOffset = idx % this.chunkSize;\n var chunkNum = idx / this.chunkSize | 0;\n return this.getter(chunkNum)[chunkOffset];\n };\n LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) {\n this.getter = getter;\n };\n LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() {\n var xhr = new XMLHttpRequest();\n xhr.open(\"HEAD\", url, false);\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304))\n throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n var datalength = Number(xhr.getResponseHeader(\"Content-length\"));\n var header;\n var hasByteServing = (header = xhr.getResponseHeader(\"Accept-Ranges\")) && header === \"bytes\";\n var usesGzip = (header = xhr.getResponseHeader(\"Content-Encoding\")) && header === \"gzip\";\n var chunkSize = 1024 * 1024;\n if (!hasByteServing)\n chunkSize = datalength;\n var doXHR = (from, to) => {\n if (from > to)\n throw new Error(\"invalid range (\" + from + \", \" + to + \") or no bytes requested!\");\n if (to > datalength - 1)\n throw new Error(\"only \" + datalength + \" bytes available! programmer error!\");\n var xhr2 = new XMLHttpRequest();\n xhr2.open(\"GET\", url, false);\n if (datalength !== chunkSize)\n xhr2.setRequestHeader(\"Range\", \"bytes=\" + from + \"-\" + to);\n xhr2.responseType = \"arraybuffer\";\n if (xhr2.overrideMimeType) {\n xhr2.overrideMimeType(\"text/plain; charset=x-user-defined\");\n }\n xhr2.send(null);\n if (!(xhr2.status >= 200 && xhr2.status < 300 || xhr2.status === 304))\n throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr2.status);\n if (xhr2.response !== void 0) {\n return new Uint8Array(xhr2.response || []);\n }\n return intArrayFromString(xhr2.responseText || \"\", true);\n };\n var lazyArray2 = this;\n lazyArray2.setDataGetter((chunkNum) => {\n var start = chunkNum * chunkSize;\n var end = (chunkNum + 1) * chunkSize - 1;\n end = Math.min(end, datalength - 1);\n if (typeof lazyArray2.chunks[chunkNum] == \"undefined\") {\n lazyArray2.chunks[chunkNum] = doXHR(start, end);\n }\n if (typeof lazyArray2.chunks[chunkNum] == \"undefined\")\n throw new Error(\"doXHR failed!\");\n return lazyArray2.chunks[chunkNum];\n });\n if (usesGzip || !datalength) {\n chunkSize = datalength = 1;\n datalength = this.getter(0).length;\n chunkSize = datalength;\n out(\"LazyFiles on gzip forces download of the whole file when length is accessed\");\n }\n this._length = datalength;\n this._chunkSize = chunkSize;\n this.lengthKnown = true;\n };\n if (typeof XMLHttpRequest != \"undefined\") {\n if (!ENVIRONMENT_IS_WORKER)\n throw \"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";\n var lazyArray = new LazyUint8Array();\n Object.defineProperties(lazyArray, { length: { get: function() {\n if (!this.lengthKnown) {\n this.cacheLength();\n }\n return this._length;\n } }, chunkSize: { get: function() {\n if (!this.lengthKnown) {\n this.cacheLength();\n }\n return this._chunkSize;\n } } });\n var properties = { isDevice: false, contents: lazyArray };\n } else {\n var properties = { isDevice: false, url };\n }\n var node = FS.createFile(parent, name, properties, canRead, canWrite);\n if (properties.contents) {\n node.contents = properties.contents;\n } else if (properties.url) {\n node.contents = null;\n node.url = properties.url;\n }\n Object.defineProperties(node, { usedBytes: { get: function() {\n return this.contents.length;\n } } });\n var stream_ops = {};\n var keys = Object.keys(node.stream_ops);\n keys.forEach((key) => {\n var fn = node.stream_ops[key];\n stream_ops[key] = function forceLoadLazyFile() {\n FS.forceLoadFile(node);\n return fn.apply(null, arguments);\n };\n });\n function writeChunks(stream, buffer2, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= contents.length)\n return 0;\n var size = Math.min(contents.length - position, length);\n if (contents.slice) {\n for (var i2 = 0; i2 < size; i2++) {\n buffer2[offset + i2] = contents[position + i2];\n }\n } else {\n for (var i2 = 0; i2 < size; i2++) {\n buffer2[offset + i2] = contents.get(position + i2);\n }\n }\n return size;\n }\n stream_ops.read = (stream, buffer2, offset, length, position) => {\n FS.forceLoadFile(node);\n return writeChunks(stream, buffer2, offset, length, position);\n };\n stream_ops.mmap = (stream, length, position, prot, flags) => {\n FS.forceLoadFile(node);\n var ptr = mmapAlloc();\n if (!ptr) {\n throw new FS.ErrnoError(48);\n }\n writeChunks(stream, HEAP8, ptr, length, position);\n return { ptr, allocated: true };\n };\n node.stream_ops = stream_ops;\n return node;\n }, createPreloadedFile: (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) => {\n var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent;\n function processData(byteArray) {\n function finish(byteArray2) {\n if (preFinish)\n preFinish();\n if (!dontCreateFile) {\n FS.createDataFile(parent, name, byteArray2, canRead, canWrite, canOwn);\n }\n if (onload)\n onload();\n removeRunDependency();\n }\n if (Browser.handledByPreloadPlugin(byteArray, fullname, finish, () => {\n if (onerror)\n onerror();\n removeRunDependency();\n })) {\n return;\n }\n finish(byteArray);\n }\n addRunDependency();\n if (typeof url == \"string\") {\n asyncLoad(url, (byteArray) => processData(byteArray), onerror);\n } else {\n processData(url);\n }\n }, indexedDB: () => {\n return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;\n }, DB_NAME: () => {\n return \"EM_FS_\" + window.location.pathname;\n }, DB_VERSION: 20, DB_STORE_NAME: \"FILE_DATA\", saveFilesToDB: (paths, onload, onerror) => {\n onload = onload || (() => {\n });\n onerror = onerror || (() => {\n });\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = () => {\n out(\"creating db\");\n var db = openRequest.result;\n db.createObjectStore(FS.DB_STORE_NAME);\n };\n openRequest.onsuccess = () => {\n var db = openRequest.result;\n var transaction = db.transaction([FS.DB_STORE_NAME], \"readwrite\");\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0, fail = 0, total = paths.length;\n function finish() {\n if (fail == 0)\n onload();\n else\n onerror();\n }\n paths.forEach((path) => {\n var putRequest = files.put(FS.analyzePath(path).object.contents, path);\n putRequest.onsuccess = () => {\n ok++;\n if (ok + fail == total)\n finish();\n };\n putRequest.onerror = () => {\n fail++;\n if (ok + fail == total)\n finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n }, loadFilesFromDB: (paths, onload, onerror) => {\n onload = onload || (() => {\n });\n onerror = onerror || (() => {\n });\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = onerror;\n openRequest.onsuccess = () => {\n var db = openRequest.result;\n try {\n var transaction = db.transaction([FS.DB_STORE_NAME], \"readonly\");\n } catch (e) {\n onerror(e);\n return;\n }\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0, fail = 0, total = paths.length;\n function finish() {\n if (fail == 0)\n onload();\n else\n onerror();\n }\n paths.forEach((path) => {\n var getRequest = files.get(path);\n getRequest.onsuccess = () => {\n if (FS.analyzePath(path).exists) {\n FS.unlink(path);\n }\n FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true);\n ok++;\n if (ok + fail == total)\n finish();\n };\n getRequest.onerror = () => {\n fail++;\n if (ok + fail == total)\n finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n } };\n var SYSCALLS = { DEFAULT_POLLMASK: 5, calculateAt: function(dirfd, path, allowEmpty) {\n if (PATH.isAbs(path)) {\n return path;\n }\n var dir;\n if (dirfd === -100) {\n dir = FS.cwd();\n } else {\n var dirstream = SYSCALLS.getStreamFromFD(dirfd);\n dir = dirstream.path;\n }\n if (path.length == 0) {\n if (!allowEmpty) {\n throw new FS.ErrnoError(44);\n }\n return dir;\n }\n return PATH.join2(dir, path);\n }, doStat: function(func, path, buf) {\n try {\n var stat = func(path);\n } catch (e) {\n if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) {\n return -54;\n }\n throw e;\n }\n HEAP32[buf >> 2] = stat.dev;\n HEAP32[buf + 8 >> 2] = stat.ino;\n HEAP32[buf + 12 >> 2] = stat.mode;\n HEAPU32[buf + 16 >> 2] = stat.nlink;\n HEAP32[buf + 20 >> 2] = stat.uid;\n HEAP32[buf + 24 >> 2] = stat.gid;\n HEAP32[buf + 28 >> 2] = stat.rdev;\n tempI64 = [stat.size >>> 0, (tempDouble = stat.size, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[buf + 40 >> 2] = tempI64[0], HEAP32[buf + 44 >> 2] = tempI64[1];\n HEAP32[buf + 48 >> 2] = 4096;\n HEAP32[buf + 52 >> 2] = stat.blocks;\n tempI64 = [Math.floor(stat.atime.getTime() / 1e3) >>> 0, (tempDouble = Math.floor(stat.atime.getTime() / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[buf + 56 >> 2] = tempI64[0], HEAP32[buf + 60 >> 2] = tempI64[1];\n HEAPU32[buf + 64 >> 2] = 0;\n tempI64 = [Math.floor(stat.mtime.getTime() / 1e3) >>> 0, (tempDouble = Math.floor(stat.mtime.getTime() / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[buf + 72 >> 2] = tempI64[0], HEAP32[buf + 76 >> 2] = tempI64[1];\n HEAPU32[buf + 80 >> 2] = 0;\n tempI64 = [Math.floor(stat.ctime.getTime() / 1e3) >>> 0, (tempDouble = Math.floor(stat.ctime.getTime() / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[buf + 88 >> 2] = tempI64[0], HEAP32[buf + 92 >> 2] = tempI64[1];\n HEAPU32[buf + 96 >> 2] = 0;\n tempI64 = [stat.ino >>> 0, (tempDouble = stat.ino, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[buf + 104 >> 2] = tempI64[0], HEAP32[buf + 108 >> 2] = tempI64[1];\n return 0;\n }, doMsync: function(addr, stream, len, flags, offset) {\n var buffer2 = HEAPU8.slice(addr, addr + len);\n FS.msync(stream, buffer2, offset, len, flags);\n }, varargs: void 0, get: function() {\n SYSCALLS.varargs += 4;\n var ret = HEAP32[SYSCALLS.varargs - 4 >> 2];\n return ret;\n }, getStr: function(ptr) {\n var ret = UTF8ToString(ptr);\n return ret;\n }, getStreamFromFD: function(fd) {\n var stream = FS.getStream(fd);\n if (!stream)\n throw new FS.ErrnoError(8);\n return stream;\n } };\n function ___syscall_fcntl64(fd, cmd, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch (cmd) {\n case 0: {\n var arg = SYSCALLS.get();\n if (arg < 0) {\n return -28;\n }\n var newStream;\n newStream = FS.createStream(stream, arg);\n return newStream.fd;\n }\n case 1:\n case 2:\n return 0;\n case 3:\n return stream.flags;\n case 4: {\n var arg = SYSCALLS.get();\n stream.flags |= arg;\n return 0;\n }\n case 5: {\n var arg = SYSCALLS.get();\n var offset = 0;\n HEAP16[arg + offset >> 1] = 2;\n return 0;\n }\n case 6:\n case 7:\n return 0;\n case 16:\n case 8:\n return -28;\n case 9:\n setErrNo(28);\n return -1;\n default: {\n return -28;\n }\n }\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e instanceof FS.ErrnoError))\n throw e;\n return -e.errno;\n }\n }\n function ___syscall_ioctl(fd, op, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch (op) {\n case 21509:\n case 21505: {\n if (!stream.tty)\n return -59;\n return 0;\n }\n case 21510:\n case 21511:\n case 21512:\n case 21506:\n case 21507:\n case 21508: {\n if (!stream.tty)\n return -59;\n return 0;\n }\n case 21519: {\n if (!stream.tty)\n return -59;\n var argp = SYSCALLS.get();\n HEAP32[argp >> 2] = 0;\n return 0;\n }\n case 21520: {\n if (!stream.tty)\n return -59;\n return -28;\n }\n case 21531: {\n var argp = SYSCALLS.get();\n return FS.ioctl(stream, op, argp);\n }\n case 21523: {\n if (!stream.tty)\n return -59;\n return 0;\n }\n case 21524: {\n if (!stream.tty)\n return -59;\n return 0;\n }\n default:\n return -28;\n }\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e instanceof FS.ErrnoError))\n throw e;\n return -e.errno;\n }\n }\n function ___syscall_openat(dirfd, path, flags, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n var mode = varargs ? SYSCALLS.get() : 0;\n return FS.open(path, flags, mode).fd;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e instanceof FS.ErrnoError))\n throw e;\n return -e.errno;\n }\n }\n var structRegistrations = {};\n function runDestructors(destructors) {\n while (destructors.length) {\n var ptr = destructors.pop();\n var del = destructors.pop();\n del(ptr);\n }\n }\n function simpleReadValueFromPointer(pointer) {\n return this[\"fromWireType\"](HEAP32[pointer >> 2]);\n }\n var awaitingDependencies = {};\n var registeredTypes = {};\n var typeDependencies = {};\n var char_0 = 48;\n var char_9 = 57;\n function makeLegalFunctionName(name) {\n if (void 0 === name) {\n return \"_unknown\";\n }\n name = name.replace(/[^a-zA-Z0-9_]/g, \"$\");\n var f = name.charCodeAt(0);\n if (f >= char_0 && f <= char_9) {\n return \"_\" + name;\n }\n return name;\n }\n function createNamedFunction(name, body) {\n name = makeLegalFunctionName(name);\n return new Function(\"body\", \"return function \" + name + '() {\\n \"use strict\"; return body.apply(this, arguments);\\n};\\n')(body);\n }\n function extendError(baseErrorType, errorName) {\n var errorClass = createNamedFunction(errorName, function(message) {\n this.name = errorName;\n this.message = message;\n var stack = new Error(message).stack;\n if (stack !== void 0) {\n this.stack = this.toString() + \"\\n\" + stack.replace(/^Error(:[^\\n]*)?\\n/, \"\");\n }\n });\n errorClass.prototype = Object.create(baseErrorType.prototype);\n errorClass.prototype.constructor = errorClass;\n errorClass.prototype.toString = function() {\n if (this.message === void 0) {\n return this.name;\n } else {\n return this.name + \": \" + this.message;\n }\n };\n return errorClass;\n }\n var InternalError = void 0;\n function throwInternalError(message) {\n throw new InternalError(message);\n }\n function whenDependentTypesAreResolved(myTypes, dependentTypes, getTypeConverters) {\n myTypes.forEach(function(type) {\n typeDependencies[type] = dependentTypes;\n });\n function onComplete(typeConverters2) {\n var myTypeConverters = getTypeConverters(typeConverters2);\n if (myTypeConverters.length !== myTypes.length) {\n throwInternalError(\"Mismatched type converter count\");\n }\n for (var i2 = 0; i2 < myTypes.length; ++i2) {\n registerType(myTypes[i2], myTypeConverters[i2]);\n }\n }\n var typeConverters = new Array(dependentTypes.length);\n var unregisteredTypes = [];\n var registered = 0;\n dependentTypes.forEach((dt, i2) => {\n if (registeredTypes.hasOwnProperty(dt)) {\n typeConverters[i2] = registeredTypes[dt];\n } else {\n unregisteredTypes.push(dt);\n if (!awaitingDependencies.hasOwnProperty(dt)) {\n awaitingDependencies[dt] = [];\n }\n awaitingDependencies[dt].push(() => {\n typeConverters[i2] = registeredTypes[dt];\n ++registered;\n if (registered === unregisteredTypes.length) {\n onComplete(typeConverters);\n }\n });\n }\n });\n if (0 === unregisteredTypes.length) {\n onComplete(typeConverters);\n }\n }\n function __embind_finalize_value_object(structType) {\n var reg = structRegistrations[structType];\n delete structRegistrations[structType];\n var rawConstructor = reg.rawConstructor;\n var rawDestructor = reg.rawDestructor;\n var fieldRecords = reg.fields;\n var fieldTypes = fieldRecords.map((field) => field.getterReturnType).concat(fieldRecords.map((field) => field.setterArgumentType));\n whenDependentTypesAreResolved([structType], fieldTypes, (fieldTypes2) => {\n var fields = {};\n fieldRecords.forEach((field, i2) => {\n var fieldName = field.fieldName;\n var getterReturnType = fieldTypes2[i2];\n var getter = field.getter;\n var getterContext = field.getterContext;\n var setterArgumentType = fieldTypes2[i2 + fieldRecords.length];\n var setter = field.setter;\n var setterContext = field.setterContext;\n fields[fieldName] = { read: (ptr) => {\n return getterReturnType[\"fromWireType\"](getter(getterContext, ptr));\n }, write: (ptr, o) => {\n var destructors = [];\n setter(setterContext, ptr, setterArgumentType[\"toWireType\"](destructors, o));\n runDestructors(destructors);\n } };\n });\n return [{ name: reg.name, \"fromWireType\": function(ptr) {\n var rv = {};\n for (var i2 in fields) {\n rv[i2] = fields[i2].read(ptr);\n }\n rawDestructor(ptr);\n return rv;\n }, \"toWireType\": function(destructors, o) {\n for (var fieldName in fields) {\n if (!(fieldName in o)) {\n throw new TypeError('Missing field: \"' + fieldName + '\"');\n }\n }\n var ptr = rawConstructor();\n for (fieldName in fields) {\n fields[fieldName].write(ptr, o[fieldName]);\n }\n if (destructors !== null) {\n destructors.push(rawDestructor, ptr);\n }\n return ptr;\n }, \"argPackAdvance\": 8, \"readValueFromPointer\": simpleReadValueFromPointer, destructorFunction: rawDestructor }];\n });\n }\n function __embind_register_bigint(primitiveType, name, size, minRange, maxRange) {\n }\n function getShiftFromSize(size) {\n switch (size) {\n case 1:\n return 0;\n case 2:\n return 1;\n case 4:\n return 2;\n case 8:\n return 3;\n default:\n throw new TypeError(\"Unknown type size: \" + size);\n }\n }\n function embind_init_charCodes() {\n var codes = new Array(256);\n for (var i2 = 0; i2 < 256; ++i2) {\n codes[i2] = String.fromCharCode(i2);\n }\n embind_charCodes = codes;\n }\n var embind_charCodes = void 0;\n function readLatin1String(ptr) {\n var ret = \"\";\n var c = ptr;\n while (HEAPU8[c]) {\n ret += embind_charCodes[HEAPU8[c++]];\n }\n return ret;\n }\n var BindingError = void 0;\n function throwBindingError(message) {\n throw new BindingError(message);\n }\n function registerType(rawType, registeredInstance, options = {}) {\n if (!(\"argPackAdvance\" in registeredInstance)) {\n throw new TypeError(\"registerType registeredInstance requires argPackAdvance\");\n }\n var name = registeredInstance.name;\n if (!rawType) {\n throwBindingError('type \"' + name + '\" must have a positive integer typeid pointer');\n }\n if (registeredTypes.hasOwnProperty(rawType)) {\n if (options.ignoreDuplicateRegistrations) {\n return;\n } else {\n throwBindingError(\"Cannot register type '\" + name + \"' twice\");\n }\n }\n registeredTypes[rawType] = registeredInstance;\n delete typeDependencies[rawType];\n if (awaitingDependencies.hasOwnProperty(rawType)) {\n var callbacks = awaitingDependencies[rawType];\n delete awaitingDependencies[rawType];\n callbacks.forEach((cb) => cb());\n }\n }\n function __embind_register_bool(rawType, name, size, trueValue, falseValue) {\n var shift = getShiftFromSize(size);\n name = readLatin1String(name);\n registerType(rawType, { name, \"fromWireType\": function(wt) {\n return !!wt;\n }, \"toWireType\": function(destructors, o) {\n return o ? trueValue : falseValue;\n }, \"argPackAdvance\": 8, \"readValueFromPointer\": function(pointer) {\n var heap;\n if (size === 1) {\n heap = HEAP8;\n } else if (size === 2) {\n heap = HEAP16;\n } else if (size === 4) {\n heap = HEAP32;\n } else {\n throw new TypeError(\"Unknown boolean type size: \" + name);\n }\n return this[\"fromWireType\"](heap[pointer >> shift]);\n }, destructorFunction: null });\n }\n function ClassHandle_isAliasOf(other) {\n if (!(this instanceof ClassHandle)) {\n return false;\n }\n if (!(other instanceof ClassHandle)) {\n return false;\n }\n var leftClass = this.$$.ptrType.registeredClass;\n var left = this.$$.ptr;\n var rightClass = other.$$.ptrType.registeredClass;\n var right = other.$$.ptr;\n while (leftClass.baseClass) {\n left = leftClass.upcast(left);\n leftClass = leftClass.baseClass;\n }\n while (rightClass.baseClass) {\n right = rightClass.upcast(right);\n rightClass = rightClass.baseClass;\n }\n return leftClass === rightClass && left === right;\n }\n function shallowCopyInternalPointer(o) {\n return { count: o.count, deleteScheduled: o.deleteScheduled, preservePointerOnDelete: o.preservePointerOnDelete, ptr: o.ptr, ptrType: o.ptrType, smartPtr: o.smartPtr, smartPtrType: o.smartPtrType };\n }\n function throwInstanceAlreadyDeleted(obj) {\n function getInstanceTypeName(handle) {\n return handle.$$.ptrType.registeredClass.name;\n }\n throwBindingError(getInstanceTypeName(obj) + \" instance already deleted\");\n }\n var finalizationRegistry = false;\n function detachFinalizer(handle) {\n }\n function runDestructor($$) {\n if ($$.smartPtr) {\n $$.smartPtrType.rawDestructor($$.smartPtr);\n } else {\n $$.ptrType.registeredClass.rawDestructor($$.ptr);\n }\n }\n function releaseClassHandle($$) {\n $$.count.value -= 1;\n var toDelete = 0 === $$.count.value;\n if (toDelete) {\n runDestructor($$);\n }\n }\n function downcastPointer(ptr, ptrClass, desiredClass) {\n if (ptrClass === desiredClass) {\n return ptr;\n }\n if (void 0 === desiredClass.baseClass) {\n return null;\n }\n var rv = downcastPointer(ptr, ptrClass, desiredClass.baseClass);\n if (rv === null) {\n return null;\n }\n return desiredClass.downcast(rv);\n }\n var registeredPointers = {};\n function getInheritedInstanceCount() {\n return Object.keys(registeredInstances).length;\n }\n function getLiveInheritedInstances() {\n var rv = [];\n for (var k in registeredInstances) {\n if (registeredInstances.hasOwnProperty(k)) {\n rv.push(registeredInstances[k]);\n }\n }\n return rv;\n }\n var deletionQueue = [];\n function flushPendingDeletes() {\n while (deletionQueue.length) {\n var obj = deletionQueue.pop();\n obj.$$.deleteScheduled = false;\n obj[\"delete\"]();\n }\n }\n var delayFunction = void 0;\n function setDelayFunction(fn) {\n delayFunction = fn;\n if (deletionQueue.length && delayFunction) {\n delayFunction(flushPendingDeletes);\n }\n }\n function init_embind() {\n Module[\"getInheritedInstanceCount\"] = getInheritedInstanceCount;\n Module[\"getLiveInheritedInstances\"] = getLiveInheritedInstances;\n Module[\"flushPendingDeletes\"] = flushPendingDeletes;\n Module[\"setDelayFunction\"] = setDelayFunction;\n }\n var registeredInstances = {};\n function getBasestPointer(class_, ptr) {\n if (ptr === void 0) {\n throwBindingError(\"ptr should not be undefined\");\n }\n while (class_.baseClass) {\n ptr = class_.upcast(ptr);\n class_ = class_.baseClass;\n }\n return ptr;\n }\n function getInheritedInstance(class_, ptr) {\n ptr = getBasestPointer(class_, ptr);\n return registeredInstances[ptr];\n }\n function makeClassHandle(prototype, record) {\n if (!record.ptrType || !record.ptr) {\n throwInternalError(\"makeClassHandle requires ptr and ptrType\");\n }\n var hasSmartPtrType = !!record.smartPtrType;\n var hasSmartPtr = !!record.smartPtr;\n if (hasSmartPtrType !== hasSmartPtr) {\n throwInternalError(\"Both smartPtrType and smartPtr must be specified\");\n }\n record.count = { value: 1 };\n return attachFinalizer(Object.create(prototype, { $$: { value: record } }));\n }\n function RegisteredPointer_fromWireType(ptr) {\n var rawPointer = this.getPointee(ptr);\n if (!rawPointer) {\n this.destructor(ptr);\n return null;\n }\n var registeredInstance = getInheritedInstance(this.registeredClass, rawPointer);\n if (void 0 !== registeredInstance) {\n if (0 === registeredInstance.$$.count.value) {\n registeredInstance.$$.ptr = rawPointer;\n registeredInstance.$$.smartPtr = ptr;\n return registeredInstance[\"clone\"]();\n } else {\n var rv = registeredInstance[\"clone\"]();\n this.destructor(ptr);\n return rv;\n }\n }\n function makeDefaultHandle() {\n if (this.isSmartPointer) {\n return makeClassHandle(this.registeredClass.instancePrototype, { ptrType: this.pointeeType, ptr: rawPointer, smartPtrType: this, smartPtr: ptr });\n } else {\n return makeClassHandle(this.registeredClass.instancePrototype, { ptrType: this, ptr });\n }\n }\n var actualType = this.registeredClass.getActualType(rawPointer);\n var registeredPointerRecord = registeredPointers[actualType];\n if (!registeredPointerRecord) {\n return makeDefaultHandle.call(this);\n }\n var toType;\n if (this.isConst) {\n toType = registeredPointerRecord.constPointerType;\n } else {\n toType = registeredPointerRecord.pointerType;\n }\n var dp = downcastPointer(rawPointer, this.registeredClass, toType.registeredClass);\n if (dp === null) {\n return makeDefaultHandle.call(this);\n }\n if (this.isSmartPointer) {\n return makeClassHandle(toType.registeredClass.instancePrototype, { ptrType: toType, ptr: dp, smartPtrType: this, smartPtr: ptr });\n } else {\n return makeClassHandle(toType.registeredClass.instancePrototype, { ptrType: toType, ptr: dp });\n }\n }\n function attachFinalizer(handle) {\n if (\"undefined\" === typeof FinalizationRegistry) {\n attachFinalizer = (handle2) => handle2;\n return handle;\n }\n finalizationRegistry = new FinalizationRegistry((info) => {\n releaseClassHandle(info.$$);\n });\n attachFinalizer = (handle2) => {\n var $$ = handle2.$$;\n var hasSmartPtr = !!$$.smartPtr;\n if (hasSmartPtr) {\n var info = { $$ };\n finalizationRegistry.register(handle2, info, handle2);\n }\n return handle2;\n };\n detachFinalizer = (handle2) => finalizationRegistry.unregister(handle2);\n return attachFinalizer(handle);\n }\n function ClassHandle_clone() {\n if (!this.$$.ptr) {\n throwInstanceAlreadyDeleted(this);\n }\n if (this.$$.preservePointerOnDelete) {\n this.$$.count.value += 1;\n return this;\n } else {\n var clone = attachFinalizer(Object.create(Object.getPrototypeOf(this), { $$: { value: shallowCopyInternalPointer(this.$$) } }));\n clone.$$.count.value += 1;\n clone.$$.deleteScheduled = false;\n return clone;\n }\n }\n function ClassHandle_delete() {\n if (!this.$$.ptr) {\n throwInstanceAlreadyDeleted(this);\n }\n if (this.$$.deleteScheduled && !this.$$.preservePointerOnDelete) {\n throwBindingError(\"Object already scheduled for deletion\");\n }\n detachFinalizer(this);\n releaseClassHandle(this.$$);\n if (!this.$$.preservePointerOnDelete) {\n this.$$.smartPtr = void 0;\n this.$$.ptr = void 0;\n }\n }\n function ClassHandle_isDeleted() {\n return !this.$$.ptr;\n }\n function ClassHandle_deleteLater() {\n if (!this.$$.ptr) {\n throwInstanceAlreadyDeleted(this);\n }\n if (this.$$.deleteScheduled && !this.$$.preservePointerOnDelete) {\n throwBindingError(\"Object already scheduled for deletion\");\n }\n deletionQueue.push(this);\n if (deletionQueue.length === 1 && delayFunction) {\n delayFunction(flushPendingDeletes);\n }\n this.$$.deleteScheduled = true;\n return this;\n }\n function init_ClassHandle() {\n ClassHandle.prototype[\"isAliasOf\"] = ClassHandle_isAliasOf;\n ClassHandle.prototype[\"clone\"] = ClassHandle_clone;\n ClassHandle.prototype[\"delete\"] = ClassHandle_delete;\n ClassHandle.prototype[\"isDeleted\"] = ClassHandle_isDeleted;\n ClassHandle.prototype[\"deleteLater\"] = ClassHandle_deleteLater;\n }\n function ClassHandle() {\n }\n function ensureOverloadTable(proto, methodName, humanName) {\n if (void 0 === proto[methodName].overloadTable) {\n var prevFunc = proto[methodName];\n proto[methodName] = function() {\n if (!proto[methodName].overloadTable.hasOwnProperty(arguments.length)) {\n throwBindingError(\"Function '\" + humanName + \"' called with an invalid number of arguments (\" + arguments.length + \") - expects one of (\" + proto[methodName].overloadTable + \")!\");\n }\n return proto[methodName].overloadTable[arguments.length].apply(this, arguments);\n };\n proto[methodName].overloadTable = [];\n proto[methodName].overloadTable[prevFunc.argCount] = prevFunc;\n }\n }\n function exposePublicSymbol(name, value, numArguments) {\n if (Module.hasOwnProperty(name)) {\n if (void 0 === numArguments || void 0 !== Module[name].overloadTable && void 0 !== Module[name].overloadTable[numArguments]) {\n throwBindingError(\"Cannot register public name '\" + name + \"' twice\");\n }\n ensureOverloadTable(Module, name, name);\n if (Module.hasOwnProperty(numArguments)) {\n throwBindingError(\"Cannot register multiple overloads of a function with the same number of arguments (\" + numArguments + \")!\");\n }\n Module[name].overloadTable[numArguments] = value;\n } else {\n Module[name] = value;\n if (void 0 !== numArguments) {\n Module[name].numArguments = numArguments;\n }\n }\n }\n function RegisteredClass(name, constructor, instancePrototype, rawDestructor, baseClass, getActualType, upcast, downcast) {\n this.name = name;\n this.constructor = constructor;\n this.instancePrototype = instancePrototype;\n this.rawDestructor = rawDestructor;\n this.baseClass = baseClass;\n this.getActualType = getActualType;\n this.upcast = upcast;\n this.downcast = downcast;\n this.pureVirtualFunctions = [];\n }\n function upcastPointer(ptr, ptrClass, desiredClass) {\n while (ptrClass !== desiredClass) {\n if (!ptrClass.upcast) {\n throwBindingError(\"Expected null or instance of \" + desiredClass.name + \", got an instance of \" + ptrClass.name);\n }\n ptr = ptrClass.upcast(ptr);\n ptrClass = ptrClass.baseClass;\n }\n return ptr;\n }\n function constNoSmartPtrRawPointerToWireType(destructors, handle) {\n if (handle === null) {\n if (this.isReference) {\n throwBindingError(\"null is not a valid \" + this.name);\n }\n return 0;\n }\n if (!handle.$$) {\n throwBindingError('Cannot pass \"' + embindRepr(handle) + '\" as a ' + this.name);\n }\n if (!handle.$$.ptr) {\n throwBindingError(\"Cannot pass deleted object as a pointer of type \" + this.name);\n }\n var handleClass = handle.$$.ptrType.registeredClass;\n var ptr = upcastPointer(handle.$$.ptr, handleClass, this.registeredClass);\n return ptr;\n }\n function genericPointerToWireType(destructors, handle) {\n var ptr;\n if (handle === null) {\n if (this.isReference) {\n throwBindingError(\"null is not a valid \" + this.name);\n }\n if (this.isSmartPointer) {\n ptr = this.rawConstructor();\n if (destructors !== null) {\n destructors.push(this.rawDestructor, ptr);\n }\n return ptr;\n } else {\n return 0;\n }\n }\n if (!handle.$$) {\n throwBindingError('Cannot pass \"' + embindRepr(handle) + '\" as a ' + this.name);\n }\n if (!handle.$$.ptr) {\n throwBindingError(\"Cannot pass deleted object as a pointer of type \" + this.name);\n }\n if (!this.isConst && handle.$$.ptrType.isConst) {\n throwBindingError(\"Cannot convert argument of type \" + (handle.$$.smartPtrType ? handle.$$.smartPtrType.name : handle.$$.ptrType.name) + \" to parameter type \" + this.name);\n }\n var handleClass = handle.$$.ptrType.registeredClass;\n ptr = upcastPointer(handle.$$.ptr, handleClass, this.registeredClass);\n if (this.isSmartPointer) {\n if (void 0 === handle.$$.smartPtr) {\n throwBindingError(\"Passing raw pointer to smart pointer is illegal\");\n }\n switch (this.sharingPolicy) {\n case 0:\n if (handle.$$.smartPtrType === this) {\n ptr = handle.$$.smartPtr;\n } else {\n throwBindingError(\"Cannot convert argument of type \" + (handle.$$.smartPtrType ? handle.$$.smartPtrType.name : handle.$$.ptrType.name) + \" to parameter type \" + this.name);\n }\n break;\n case 1:\n ptr = handle.$$.smartPtr;\n break;\n case 2:\n if (handle.$$.smartPtrType === this) {\n ptr = handle.$$.smartPtr;\n } else {\n var clonedHandle = handle[\"clone\"]();\n ptr = this.rawShare(ptr, Emval.toHandle(function() {\n clonedHandle[\"delete\"]();\n }));\n if (destructors !== null) {\n destructors.push(this.rawDestructor, ptr);\n }\n }\n break;\n default:\n throwBindingError(\"Unsupporting sharing policy\");\n }\n }\n return ptr;\n }\n function nonConstNoSmartPtrRawPointerToWireType(destructors, handle) {\n if (handle === null) {\n if (this.isReference) {\n throwBindingError(\"null is not a valid \" + this.name);\n }\n return 0;\n }\n if (!handle.$$) {\n throwBindingError('Cannot pass \"' + embindRepr(handle) + '\" as a ' + this.name);\n }\n if (!handle.$$.ptr) {\n throwBindingError(\"Cannot pass deleted object as a pointer of type \" + this.name);\n }\n if (handle.$$.ptrType.isConst) {\n throwBindingError(\"Cannot convert argument of type \" + handle.$$.ptrType.name + \" to parameter type \" + this.name);\n }\n var handleClass = handle.$$.ptrType.registeredClass;\n var ptr = upcastPointer(handle.$$.ptr, handleClass, this.registeredClass);\n return ptr;\n }\n function RegisteredPointer_getPointee(ptr) {\n if (this.rawGetPointee) {\n ptr = this.rawGetPointee(ptr);\n }\n return ptr;\n }\n function RegisteredPointer_destructor(ptr) {\n if (this.rawDestructor) {\n this.rawDestructor(ptr);\n }\n }\n function RegisteredPointer_deleteObject(handle) {\n if (handle !== null) {\n handle[\"delete\"]();\n }\n }\n function init_RegisteredPointer() {\n RegisteredPointer.prototype.getPointee = RegisteredPointer_getPointee;\n RegisteredPointer.prototype.destructor = RegisteredPointer_destructor;\n RegisteredPointer.prototype[\"argPackAdvance\"] = 8;\n RegisteredPointer.prototype[\"readValueFromPointer\"] = simpleReadValueFromPointer;\n RegisteredPointer.prototype[\"deleteObject\"] = RegisteredPointer_deleteObject;\n RegisteredPointer.prototype[\"fromWireType\"] = RegisteredPointer_fromWireType;\n }\n function RegisteredPointer(name, registeredClass, isReference, isConst, isSmartPointer, pointeeType, sharingPolicy, rawGetPointee, rawConstructor, rawShare, rawDestructor) {\n this.name = name;\n this.registeredClass = registeredClass;\n this.isReference = isReference;\n this.isConst = isConst;\n this.isSmartPointer = isSmartPointer;\n this.pointeeType = pointeeType;\n this.sharingPolicy = sharingPolicy;\n this.rawGetPointee = rawGetPointee;\n this.rawConstructor = rawConstructor;\n this.rawShare = rawShare;\n this.rawDestructor = rawDestructor;\n if (!isSmartPointer && registeredClass.baseClass === void 0) {\n if (isConst) {\n this[\"toWireType\"] = constNoSmartPtrRawPointerToWireType;\n this.destructorFunction = null;\n } else {\n this[\"toWireType\"] = nonConstNoSmartPtrRawPointerToWireType;\n this.destructorFunction = null;\n }\n } else {\n this[\"toWireType\"] = genericPointerToWireType;\n }\n }\n function replacePublicSymbol(name, value, numArguments) {\n if (!Module.hasOwnProperty(name)) {\n throwInternalError(\"Replacing nonexistant public symbol\");\n }\n if (void 0 !== Module[name].overloadTable && void 0 !== numArguments) {\n Module[name].overloadTable[numArguments] = value;\n } else {\n Module[name] = value;\n Module[name].argCount = numArguments;\n }\n }\n function dynCallLegacy(sig, ptr, args) {\n var f = Module[\"dynCall_\" + sig];\n return args && args.length ? f.apply(null, [ptr].concat(args)) : f.call(null, ptr);\n }\n function dynCall(sig, ptr, args) {\n return dynCallLegacy(sig, ptr, args);\n }\n function getDynCaller(sig, ptr) {\n var argCache = [];\n return function() {\n argCache.length = 0;\n Object.assign(argCache, arguments);\n return dynCall(sig, ptr, argCache);\n };\n }\n function embind__requireFunction(signature, rawFunction) {\n signature = readLatin1String(signature);\n function makeDynCaller() {\n return getDynCaller(signature, rawFunction);\n }\n var fp = makeDynCaller();\n if (typeof fp != \"function\") {\n throwBindingError(\"unknown function pointer with signature \" + signature + \": \" + rawFunction);\n }\n return fp;\n }\n var UnboundTypeError = void 0;\n function getTypeName(type) {\n var ptr = ___getTypeName(type);\n var rv = readLatin1String(ptr);\n _free(ptr);\n return rv;\n }\n function throwUnboundTypeError(message, types) {\n var unboundTypes = [];\n var seen = {};\n function visit(type) {\n if (seen[type]) {\n return;\n }\n if (registeredTypes[type]) {\n return;\n }\n if (typeDependencies[type]) {\n typeDependencies[type].forEach(visit);\n return;\n }\n unboundTypes.push(type);\n seen[type] = true;\n }\n types.forEach(visit);\n throw new UnboundTypeError(message + \": \" + unboundTypes.map(getTypeName).join([\", \"]));\n }\n function __embind_register_class(rawType, rawPointerType, rawConstPointerType, baseClassRawType, getActualTypeSignature, getActualType, upcastSignature, upcast, downcastSignature, downcast, name, destructorSignature, rawDestructor) {\n name = readLatin1String(name);\n getActualType = embind__requireFunction(getActualTypeSignature, getActualType);\n if (upcast) {\n upcast = embind__requireFunction(upcastSignature, upcast);\n }\n if (downcast) {\n downcast = embind__requireFunction(downcastSignature, downcast);\n }\n rawDestructor = embind__requireFunction(destructorSignature, rawDestructor);\n var legalFunctionName = makeLegalFunctionName(name);\n exposePublicSymbol(legalFunctionName, function() {\n throwUnboundTypeError(\"Cannot construct \" + name + \" due to unbound types\", [baseClassRawType]);\n });\n whenDependentTypesAreResolved([rawType, rawPointerType, rawConstPointerType], baseClassRawType ? [baseClassRawType] : [], function(base) {\n base = base[0];\n var baseClass;\n var basePrototype;\n if (baseClassRawType) {\n baseClass = base.registeredClass;\n basePrototype = baseClass.instancePrototype;\n } else {\n basePrototype = ClassHandle.prototype;\n }\n var constructor = createNamedFunction(legalFunctionName, function() {\n if (Object.getPrototypeOf(this) !== instancePrototype) {\n throw new BindingError(\"Use 'new' to construct \" + name);\n }\n if (void 0 === registeredClass.constructor_body) {\n throw new BindingError(name + \" has no accessible constructor\");\n }\n var body = registeredClass.constructor_body[arguments.length];\n if (void 0 === body) {\n throw new BindingError(\"Tried to invoke ctor of \" + name + \" with invalid number of parameters (\" + arguments.length + \") - expected (\" + Object.keys(registeredClass.constructor_body).toString() + \") parameters instead!\");\n }\n return body.apply(this, arguments);\n });\n var instancePrototype = Object.create(basePrototype, { constructor: { value: constructor } });\n constructor.prototype = instancePrototype;\n var registeredClass = new RegisteredClass(name, constructor, instancePrototype, rawDestructor, baseClass, getActualType, upcast, downcast);\n var referenceConverter = new RegisteredPointer(name, registeredClass, true, false, false);\n var pointerConverter = new RegisteredPointer(name + \"*\", registeredClass, false, false, false);\n var constPointerConverter = new RegisteredPointer(name + \" const*\", registeredClass, false, true, false);\n registeredPointers[rawType] = { pointerType: pointerConverter, constPointerType: constPointerConverter };\n replacePublicSymbol(legalFunctionName, constructor);\n return [referenceConverter, pointerConverter, constPointerConverter];\n });\n }\n function new_(constructor, argumentList) {\n if (!(constructor instanceof Function)) {\n throw new TypeError(\"new_ called with constructor type \" + typeof constructor + \" which is not a function\");\n }\n var dummy = createNamedFunction(constructor.name || \"unknownFunctionName\", function() {\n });\n dummy.prototype = constructor.prototype;\n var obj = new dummy();\n var r = constructor.apply(obj, argumentList);\n return r instanceof Object ? r : obj;\n }\n function runAndAbortIfError(func) {\n try {\n return func();\n } catch (e) {\n abort(e);\n }\n }\n function callUserCallback(func) {\n if (ABORT) {\n return;\n }\n try {\n func();\n } catch (e) {\n handleException(e);\n }\n }\n var Asyncify = { State: { Normal: 0, Unwinding: 1, Rewinding: 2, Disabled: 3 }, state: 0, StackSize: 4096, currData: null, handleSleepReturnValue: 0, exportCallStack: [], callStackNameToId: {}, callStackIdToName: {}, callStackId: 0, asyncPromiseHandlers: null, sleepCallbacks: [], getCallStackId: function(funcName) {\n var id = Asyncify.callStackNameToId[funcName];\n if (id === void 0) {\n id = Asyncify.callStackId++;\n Asyncify.callStackNameToId[funcName] = id;\n Asyncify.callStackIdToName[id] = funcName;\n }\n return id;\n }, instrumentWasmImports: function(imports) {\n var ASYNCIFY_IMPORTS = [\"env.invoke_*\", \"env.emscripten_sleep\", \"env.emscripten_wget\", \"env.emscripten_wget_data\", \"env.emscripten_idb_load\", \"env.emscripten_idb_store\", \"env.emscripten_idb_delete\", \"env.emscripten_idb_exists\", \"env.emscripten_idb_load_blob\", \"env.emscripten_idb_store_blob\", \"env.SDL_Delay\", \"env.emscripten_scan_registers\", \"env.emscripten_lazy_load_code\", \"env.emscripten_fiber_swap\", \"wasi_snapshot_preview1.fd_sync\", \"env.__wasi_fd_sync\", \"env._emval_await\", \"env._dlopen_js\", \"env.__asyncjs__*\"].map((x2) => x2.split(\".\")[1]);\n for (var x in imports) {\n (function(x2) {\n var original = imports[x2];\n original.sig;\n if (typeof original == \"function\") {\n ASYNCIFY_IMPORTS.indexOf(x2) >= 0 || x2.startsWith(\"__asyncjs__\");\n }\n })(x);\n }\n }, instrumentWasmExports: function(exports) {\n var ret = {};\n for (var x in exports) {\n (function(x2) {\n var original = exports[x2];\n if (typeof original == \"function\") {\n ret[x2] = function() {\n Asyncify.exportCallStack.push(x2);\n try {\n return original.apply(null, arguments);\n } finally {\n if (!ABORT) {\n var y = Asyncify.exportCallStack.pop();\n assert(y === x2);\n Asyncify.maybeStopUnwind();\n }\n }\n };\n } else {\n ret[x2] = original;\n }\n })(x);\n }\n return ret;\n }, maybeStopUnwind: function() {\n if (Asyncify.currData && Asyncify.state === Asyncify.State.Unwinding && Asyncify.exportCallStack.length === 0) {\n Asyncify.state = Asyncify.State.Normal;\n runAndAbortIfError(_asyncify_stop_unwind);\n if (typeof Fibers != \"undefined\") {\n Fibers.trampoline();\n }\n }\n }, whenDone: function() {\n return new Promise((resolve, reject) => {\n Asyncify.asyncPromiseHandlers = { resolve, reject };\n });\n }, allocateData: function() {\n var ptr = _malloc(12 + Asyncify.StackSize);\n Asyncify.setDataHeader(ptr, ptr + 12, Asyncify.StackSize);\n Asyncify.setDataRewindFunc(ptr);\n return ptr;\n }, setDataHeader: function(ptr, stack, stackSize) {\n HEAP32[ptr >> 2] = stack;\n HEAP32[ptr + 4 >> 2] = stack + stackSize;\n }, setDataRewindFunc: function(ptr) {\n var bottomOfCallStack = Asyncify.exportCallStack[0];\n var rewindId = Asyncify.getCallStackId(bottomOfCallStack);\n HEAP32[ptr + 8 >> 2] = rewindId;\n }, getDataRewindFunc: function(ptr) {\n var id = HEAP32[ptr + 8 >> 2];\n var name = Asyncify.callStackIdToName[id];\n var func = Module[\"asm\"][name];\n return func;\n }, doRewind: function(ptr) {\n var start = Asyncify.getDataRewindFunc(ptr);\n return start();\n }, handleSleep: function(startAsync) {\n if (ABORT)\n return;\n if (Asyncify.state === Asyncify.State.Normal) {\n var reachedCallback = false;\n var reachedAfterCallback = false;\n startAsync((handleSleepReturnValue) => {\n if (ABORT)\n return;\n Asyncify.handleSleepReturnValue = handleSleepReturnValue || 0;\n reachedCallback = true;\n if (!reachedAfterCallback) {\n return;\n }\n Asyncify.state = Asyncify.State.Rewinding;\n runAndAbortIfError(() => _asyncify_start_rewind(Asyncify.currData));\n if (typeof Browser != \"undefined\" && Browser.mainLoop.func) {\n Browser.mainLoop.resume();\n }\n var asyncWasmReturnValue, isError = false;\n try {\n asyncWasmReturnValue = Asyncify.doRewind(Asyncify.currData);\n } catch (err2) {\n asyncWasmReturnValue = err2;\n isError = true;\n }\n var handled = false;\n if (!Asyncify.currData) {\n var asyncPromiseHandlers = Asyncify.asyncPromiseHandlers;\n if (asyncPromiseHandlers) {\n Asyncify.asyncPromiseHandlers = null;\n (isError ? asyncPromiseHandlers.reject : asyncPromiseHandlers.resolve)(asyncWasmReturnValue);\n handled = true;\n }\n }\n if (isError && !handled) {\n throw asyncWasmReturnValue;\n }\n });\n reachedAfterCallback = true;\n if (!reachedCallback) {\n Asyncify.state = Asyncify.State.Unwinding;\n Asyncify.currData = Asyncify.allocateData();\n if (typeof Browser != \"undefined\" && Browser.mainLoop.func) {\n Browser.mainLoop.pause();\n }\n runAndAbortIfError(() => _asyncify_start_unwind(Asyncify.currData));\n }\n } else if (Asyncify.state === Asyncify.State.Rewinding) {\n Asyncify.state = Asyncify.State.Normal;\n runAndAbortIfError(_asyncify_stop_rewind);\n _free(Asyncify.currData);\n Asyncify.currData = null;\n Asyncify.sleepCallbacks.forEach((func) => callUserCallback(func));\n } else {\n abort(\"invalid state: \" + Asyncify.state);\n }\n return Asyncify.handleSleepReturnValue;\n }, handleAsync: function(startAsync) {\n return Asyncify.handleSleep((wakeUp) => {\n startAsync().then(wakeUp);\n });\n } };\n function craftInvokerFunction(humanName, argTypes, classType, cppInvokerFunc, cppTargetFunc) {\n var argCount = argTypes.length;\n if (argCount < 2) {\n throwBindingError(\"argTypes array size mismatch! Must at least get return value and 'this' types!\");\n }\n var isClassMethodFunc = argTypes[1] !== null && classType !== null;\n var needsDestructorStack = false;\n for (var i2 = 1; i2 < argTypes.length; ++i2) {\n if (argTypes[i2] !== null && argTypes[i2].destructorFunction === void 0) {\n needsDestructorStack = true;\n break;\n }\n }\n var returns = argTypes[0].name !== \"void\";\n var argsList = \"\";\n var argsListWired = \"\";\n for (var i2 = 0; i2 < argCount - 2; ++i2) {\n argsList += (i2 !== 0 ? \", \" : \"\") + \"arg\" + i2;\n argsListWired += (i2 !== 0 ? \", \" : \"\") + \"arg\" + i2 + \"Wired\";\n }\n var invokerFnBody = \"return function \" + makeLegalFunctionName(humanName) + \"(\" + argsList + \") {\\nif (arguments.length !== \" + (argCount - 2) + \") {\\nthrowBindingError('function \" + humanName + \" called with ' + arguments.length + ' arguments, expected \" + (argCount - 2) + \" args!');\\n}\\n\";\n if (needsDestructorStack) {\n invokerFnBody += \"var destructors = [];\\n\";\n }\n var dtorStack = needsDestructorStack ? \"destructors\" : \"null\";\n var args1 = [\"throwBindingError\", \"invoker\", \"fn\", \"runDestructors\", \"retType\", \"classParam\"];\n var args2 = [throwBindingError, cppInvokerFunc, cppTargetFunc, runDestructors, argTypes[0], argTypes[1]];\n if (isClassMethodFunc) {\n invokerFnBody += \"var thisWired = classParam.toWireType(\" + dtorStack + \", this);\\n\";\n }\n for (var i2 = 0; i2 < argCount - 2; ++i2) {\n invokerFnBody += \"var arg\" + i2 + \"Wired = argType\" + i2 + \".toWireType(\" + dtorStack + \", arg\" + i2 + \"); // \" + argTypes[i2 + 2].name + \"\\n\";\n args1.push(\"argType\" + i2);\n args2.push(argTypes[i2 + 2]);\n }\n if (isClassMethodFunc) {\n argsListWired = \"thisWired\" + (argsListWired.length > 0 ? \", \" : \"\") + argsListWired;\n }\n invokerFnBody += (returns ? \"var rv = \" : \"\") + \"invoker(fn\" + (argsListWired.length > 0 ? \", \" : \"\") + argsListWired + \");\\n\";\n args1.push(\"Asyncify\");\n args2.push(Asyncify);\n invokerFnBody += \"function onDone(\" + (returns ? \"rv\" : \"\") + \") {\\n\";\n if (needsDestructorStack) {\n invokerFnBody += \"runDestructors(destructors);\\n\";\n } else {\n for (var i2 = isClassMethodFunc ? 1 : 2; i2 < argTypes.length; ++i2) {\n var paramName = i2 === 1 ? \"thisWired\" : \"arg\" + (i2 - 2) + \"Wired\";\n if (argTypes[i2].destructorFunction !== null) {\n invokerFnBody += paramName + \"_dtor(\" + paramName + \"); // \" + argTypes[i2].name + \"\\n\";\n args1.push(paramName + \"_dtor\");\n args2.push(argTypes[i2].destructorFunction);\n }\n }\n }\n if (returns) {\n invokerFnBody += \"var ret = retType.fromWireType(rv);\\nreturn ret;\\n\";\n }\n invokerFnBody += \"}\\n\";\n invokerFnBody += \"return Asyncify.currData ? Asyncify.whenDone().then(onDone) : onDone(\" + (returns ? \"rv\" : \"\") + \");\\n\";\n invokerFnBody += \"}\\n\";\n args1.push(invokerFnBody);\n var invokerFunction = new_(Function, args1).apply(null, args2);\n return invokerFunction;\n }\n function heap32VectorToArray(count, firstElement) {\n var array = [];\n for (var i2 = 0; i2 < count; i2++) {\n array.push(HEAPU32[firstElement + i2 * 4 >> 2]);\n }\n return array;\n }\n function __embind_register_class_class_function(rawClassType, methodName, argCount, rawArgTypesAddr, invokerSignature, rawInvoker, fn) {\n var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr);\n methodName = readLatin1String(methodName);\n rawInvoker = embind__requireFunction(invokerSignature, rawInvoker);\n whenDependentTypesAreResolved([], [rawClassType], function(classType) {\n classType = classType[0];\n var humanName = classType.name + \".\" + methodName;\n function unboundTypesHandler() {\n throwUnboundTypeError(\"Cannot call \" + humanName + \" due to unbound types\", rawArgTypes);\n }\n if (methodName.startsWith(\"@@\")) {\n methodName = Symbol[methodName.substring(2)];\n }\n var proto = classType.registeredClass.constructor;\n if (void 0 === proto[methodName]) {\n unboundTypesHandler.argCount = argCount - 1;\n proto[methodName] = unboundTypesHandler;\n } else {\n ensureOverloadTable(proto, methodName, humanName);\n proto[methodName].overloadTable[argCount - 1] = unboundTypesHandler;\n }\n whenDependentTypesAreResolved([], rawArgTypes, function(argTypes) {\n var invokerArgsArray = [argTypes[0], null].concat(argTypes.slice(1));\n var func = craftInvokerFunction(humanName, invokerArgsArray, null, rawInvoker, fn);\n if (void 0 === proto[methodName].overloadTable) {\n func.argCount = argCount - 1;\n proto[methodName] = func;\n } else {\n proto[methodName].overloadTable[argCount - 1] = func;\n }\n return [];\n });\n return [];\n });\n }\n function __embind_register_class_constructor(rawClassType, argCount, rawArgTypesAddr, invokerSignature, invoker, rawConstructor) {\n assert(argCount > 0);\n var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr);\n invoker = embind__requireFunction(invokerSignature, invoker);\n whenDependentTypesAreResolved([], [rawClassType], function(classType) {\n classType = classType[0];\n var humanName = \"constructor \" + classType.name;\n if (void 0 === classType.registeredClass.constructor_body) {\n classType.registeredClass.constructor_body = [];\n }\n if (void 0 !== classType.registeredClass.constructor_body[argCount - 1]) {\n throw new BindingError(\"Cannot register multiple constructors with identical number of parameters (\" + (argCount - 1) + \") for class '\" + classType.name + \"'! Overload resolution is currently only performed using the parameter count, not actual type info!\");\n }\n classType.registeredClass.constructor_body[argCount - 1] = () => {\n throwUnboundTypeError(\"Cannot construct \" + classType.name + \" due to unbound types\", rawArgTypes);\n };\n whenDependentTypesAreResolved([], rawArgTypes, function(argTypes) {\n argTypes.splice(1, 0, null);\n classType.registeredClass.constructor_body[argCount - 1] = craftInvokerFunction(humanName, argTypes, null, invoker, rawConstructor);\n return [];\n });\n return [];\n });\n }\n function __embind_register_class_function(rawClassType, methodName, argCount, rawArgTypesAddr, invokerSignature, rawInvoker, context, isPureVirtual) {\n var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr);\n methodName = readLatin1String(methodName);\n rawInvoker = embind__requireFunction(invokerSignature, rawInvoker);\n whenDependentTypesAreResolved([], [rawClassType], function(classType) {\n classType = classType[0];\n var humanName = classType.name + \".\" + methodName;\n if (methodName.startsWith(\"@@\")) {\n methodName = Symbol[methodName.substring(2)];\n }\n if (isPureVirtual) {\n classType.registeredClass.pureVirtualFunctions.push(methodName);\n }\n function unboundTypesHandler() {\n throwUnboundTypeError(\"Cannot call \" + humanName + \" due to unbound types\", rawArgTypes);\n }\n var proto = classType.registeredClass.instancePrototype;\n var method = proto[methodName];\n if (void 0 === method || void 0 === method.overloadTable && method.className !== classType.name && method.argCount === argCount - 2) {\n unboundTypesHandler.argCount = argCount - 2;\n unboundTypesHandler.className = classType.name;\n proto[methodName] = unboundTypesHandler;\n } else {\n ensureOverloadTable(proto, methodName, humanName);\n proto[methodName].overloadTable[argCount - 2] = unboundTypesHandler;\n }\n whenDependentTypesAreResolved([], rawArgTypes, function(argTypes) {\n var memberFunction = craftInvokerFunction(humanName, argTypes, classType, rawInvoker, context);\n if (void 0 === proto[methodName].overloadTable) {\n memberFunction.argCount = argCount - 2;\n proto[methodName] = memberFunction;\n } else {\n proto[methodName].overloadTable[argCount - 2] = memberFunction;\n }\n return [];\n });\n return [];\n });\n }\n function validateThis(this_, classType, humanName) {\n if (!(this_ instanceof Object)) {\n throwBindingError(humanName + ' with invalid \"this\": ' + this_);\n }\n if (!(this_ instanceof classType.registeredClass.constructor)) {\n throwBindingError(humanName + ' incompatible with \"this\" of type ' + this_.constructor.name);\n }\n if (!this_.$$.ptr) {\n throwBindingError(\"cannot call emscripten binding method \" + humanName + \" on deleted object\");\n }\n return upcastPointer(this_.$$.ptr, this_.$$.ptrType.registeredClass, classType.registeredClass);\n }\n function __embind_register_class_property(classType, fieldName, getterReturnType, getterSignature, getter, getterContext, setterArgumentType, setterSignature, setter, setterContext) {\n fieldName = readLatin1String(fieldName);\n getter = embind__requireFunction(getterSignature, getter);\n whenDependentTypesAreResolved([], [classType], function(classType2) {\n classType2 = classType2[0];\n var humanName = classType2.name + \".\" + fieldName;\n var desc = { get: function() {\n throwUnboundTypeError(\"Cannot access \" + humanName + \" due to unbound types\", [getterReturnType, setterArgumentType]);\n }, enumerable: true, configurable: true };\n if (setter) {\n desc.set = () => {\n throwUnboundTypeError(\"Cannot access \" + humanName + \" due to unbound types\", [getterReturnType, setterArgumentType]);\n };\n } else {\n desc.set = (v) => {\n throwBindingError(humanName + \" is a read-only property\");\n };\n }\n Object.defineProperty(classType2.registeredClass.instancePrototype, fieldName, desc);\n whenDependentTypesAreResolved([], setter ? [getterReturnType, setterArgumentType] : [getterReturnType], function(types) {\n var getterReturnType2 = types[0];\n var desc2 = { get: function() {\n var ptr = validateThis(this, classType2, humanName + \" getter\");\n return getterReturnType2[\"fromWireType\"](getter(getterContext, ptr));\n }, enumerable: true };\n if (setter) {\n setter = embind__requireFunction(setterSignature, setter);\n var setterArgumentType2 = types[1];\n desc2.set = function(v) {\n var ptr = validateThis(this, classType2, humanName + \" setter\");\n var destructors = [];\n setter(setterContext, ptr, setterArgumentType2[\"toWireType\"](destructors, v));\n runDestructors(destructors);\n };\n }\n Object.defineProperty(classType2.registeredClass.instancePrototype, fieldName, desc2);\n return [];\n });\n return [];\n });\n }\n var emval_free_list = [];\n var emval_handle_array = [{}, { value: void 0 }, { value: null }, { value: true }, { value: false }];\n function __emval_decref(handle) {\n if (handle > 4 && 0 === --emval_handle_array[handle].refcount) {\n emval_handle_array[handle] = void 0;\n emval_free_list.push(handle);\n }\n }\n function count_emval_handles() {\n var count = 0;\n for (var i2 = 5; i2 < emval_handle_array.length; ++i2) {\n if (emval_handle_array[i2] !== void 0) {\n ++count;\n }\n }\n return count;\n }\n function get_first_emval() {\n for (var i2 = 5; i2 < emval_handle_array.length; ++i2) {\n if (emval_handle_array[i2] !== void 0) {\n return emval_handle_array[i2];\n }\n }\n return null;\n }\n function init_emval() {\n Module[\"count_emval_handles\"] = count_emval_handles;\n Module[\"get_first_emval\"] = get_first_emval;\n }\n var Emval = { toValue: (handle) => {\n if (!handle) {\n throwBindingError(\"Cannot use deleted val. handle = \" + handle);\n }\n return emval_handle_array[handle].value;\n }, toHandle: (value) => {\n switch (value) {\n case void 0:\n return 1;\n case null:\n return 2;\n case true:\n return 3;\n case false:\n return 4;\n default: {\n var handle = emval_free_list.length ? emval_free_list.pop() : emval_handle_array.length;\n emval_handle_array[handle] = { refcount: 1, value };\n return handle;\n }\n }\n } };\n function __embind_register_emval(rawType, name) {\n name = readLatin1String(name);\n registerType(rawType, { name, \"fromWireType\": function(handle) {\n var rv = Emval.toValue(handle);\n __emval_decref(handle);\n return rv;\n }, \"toWireType\": function(destructors, value) {\n return Emval.toHandle(value);\n }, \"argPackAdvance\": 8, \"readValueFromPointer\": simpleReadValueFromPointer, destructorFunction: null });\n }\n function enumReadValueFromPointer(name, shift, signed) {\n switch (shift) {\n case 0:\n return function(pointer) {\n var heap = signed ? HEAP8 : HEAPU8;\n return this[\"fromWireType\"](heap[pointer]);\n };\n case 1:\n return function(pointer) {\n var heap = signed ? HEAP16 : HEAPU16;\n return this[\"fromWireType\"](heap[pointer >> 1]);\n };\n case 2:\n return function(pointer) {\n var heap = signed ? HEAP32 : HEAPU32;\n return this[\"fromWireType\"](heap[pointer >> 2]);\n };\n default:\n throw new TypeError(\"Unknown integer type: \" + name);\n }\n }\n function __embind_register_enum(rawType, name, size, isSigned) {\n var shift = getShiftFromSize(size);\n name = readLatin1String(name);\n function ctor() {\n }\n ctor.values = {};\n registerType(rawType, { name, constructor: ctor, \"fromWireType\": function(c) {\n return this.constructor.values[c];\n }, \"toWireType\": function(destructors, c) {\n return c.value;\n }, \"argPackAdvance\": 8, \"readValueFromPointer\": enumReadValueFromPointer(name, shift, isSigned), destructorFunction: null });\n exposePublicSymbol(name, ctor);\n }\n function requireRegisteredType(rawType, humanName) {\n var impl = registeredTypes[rawType];\n if (void 0 === impl) {\n throwBindingError(humanName + \" has unknown type \" + getTypeName(rawType));\n }\n return impl;\n }\n function __embind_register_enum_value(rawEnumType, name, enumValue) {\n var enumType = requireRegisteredType(rawEnumType, \"enum\");\n name = readLatin1String(name);\n var Enum = enumType.constructor;\n var Value = Object.create(enumType.constructor.prototype, { value: { value: enumValue }, constructor: { value: createNamedFunction(enumType.name + \"_\" + name, function() {\n }) } });\n Enum.values[enumValue] = Value;\n Enum[name] = Value;\n }\n function embindRepr(v) {\n if (v === null) {\n return \"null\";\n }\n var t = typeof v;\n if (t === \"object\" || t === \"array\" || t === \"function\") {\n return v.toString();\n } else {\n return \"\" + v;\n }\n }\n function floatReadValueFromPointer(name, shift) {\n switch (shift) {\n case 2:\n return function(pointer) {\n return this[\"fromWireType\"](HEAPF32[pointer >> 2]);\n };\n case 3:\n return function(pointer) {\n return this[\"fromWireType\"](HEAPF64[pointer >> 3]);\n };\n default:\n throw new TypeError(\"Unknown float type: \" + name);\n }\n }\n function __embind_register_float(rawType, name, size) {\n var shift = getShiftFromSize(size);\n name = readLatin1String(name);\n registerType(rawType, { name, \"fromWireType\": function(value) {\n return value;\n }, \"toWireType\": function(destructors, value) {\n return value;\n }, \"argPackAdvance\": 8, \"readValueFromPointer\": floatReadValueFromPointer(name, shift), destructorFunction: null });\n }\n function __embind_register_function(name, argCount, rawArgTypesAddr, signature, rawInvoker, fn) {\n var argTypes = heap32VectorToArray(argCount, rawArgTypesAddr);\n name = readLatin1String(name);\n rawInvoker = embind__requireFunction(signature, rawInvoker);\n exposePublicSymbol(name, function() {\n throwUnboundTypeError(\"Cannot call \" + name + \" due to unbound types\", argTypes);\n }, argCount - 1);\n whenDependentTypesAreResolved([], argTypes, function(argTypes2) {\n var invokerArgsArray = [argTypes2[0], null].concat(argTypes2.slice(1));\n replacePublicSymbol(name, craftInvokerFunction(name, invokerArgsArray, null, rawInvoker, fn), argCount - 1);\n return [];\n });\n }\n function integerReadValueFromPointer(name, shift, signed) {\n switch (shift) {\n case 0:\n return signed ? function readS8FromPointer(pointer) {\n return HEAP8[pointer];\n } : function readU8FromPointer(pointer) {\n return HEAPU8[pointer];\n };\n case 1:\n return signed ? function readS16FromPointer(pointer) {\n return HEAP16[pointer >> 1];\n } : function readU16FromPointer(pointer) {\n return HEAPU16[pointer >> 1];\n };\n case 2:\n return signed ? function readS32FromPointer(pointer) {\n return HEAP32[pointer >> 2];\n } : function readU32FromPointer(pointer) {\n return HEAPU32[pointer >> 2];\n };\n default:\n throw new TypeError(\"Unknown integer type: \" + name);\n }\n }\n function __embind_register_integer(primitiveType, name, size, minRange, maxRange) {\n name = readLatin1String(name);\n var shift = getShiftFromSize(size);\n var fromWireType = (value) => value;\n if (minRange === 0) {\n var bitshift = 32 - 8 * size;\n fromWireType = (value) => value << bitshift >>> bitshift;\n }\n var isUnsignedType = name.includes(\"unsigned\");\n var checkAssertions = (value, toTypeName) => {\n };\n var toWireType;\n if (isUnsignedType) {\n toWireType = function(destructors, value) {\n checkAssertions(value, this.name);\n return value >>> 0;\n };\n } else {\n toWireType = function(destructors, value) {\n checkAssertions(value, this.name);\n return value;\n };\n }\n registerType(primitiveType, { name, \"fromWireType\": fromWireType, \"toWireType\": toWireType, \"argPackAdvance\": 8, \"readValueFromPointer\": integerReadValueFromPointer(name, shift, minRange !== 0), destructorFunction: null });\n }\n function __embind_register_memory_view(rawType, dataTypeIndex, name) {\n var typeMapping = [Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array];\n var TA = typeMapping[dataTypeIndex];\n function decodeMemoryView(handle) {\n handle = handle >> 2;\n var heap = HEAPU32;\n var size = heap[handle];\n var data = heap[handle + 1];\n return new TA(buffer, data, size);\n }\n name = readLatin1String(name);\n registerType(rawType, { name, \"fromWireType\": decodeMemoryView, \"argPackAdvance\": 8, \"readValueFromPointer\": decodeMemoryView }, { ignoreDuplicateRegistrations: true });\n }\n function __embind_register_smart_ptr(rawType, rawPointeeType, name, sharingPolicy, getPointeeSignature, rawGetPointee, constructorSignature, rawConstructor, shareSignature, rawShare, destructorSignature, rawDestructor) {\n name = readLatin1String(name);\n rawGetPointee = embind__requireFunction(getPointeeSignature, rawGetPointee);\n rawConstructor = embind__requireFunction(constructorSignature, rawConstructor);\n rawShare = embind__requireFunction(shareSignature, rawShare);\n rawDestructor = embind__requireFunction(destructorSignature, rawDestructor);\n whenDependentTypesAreResolved([rawType], [rawPointeeType], function(pointeeType) {\n pointeeType = pointeeType[0];\n var registeredPointer = new RegisteredPointer(name, pointeeType.registeredClass, false, false, true, pointeeType, sharingPolicy, rawGetPointee, rawConstructor, rawShare, rawDestructor);\n return [registeredPointer];\n });\n }\n function __embind_register_std_string(rawType, name) {\n name = readLatin1String(name);\n var stdStringIsUTF8 = name === \"std::string\";\n registerType(rawType, { name, \"fromWireType\": function(value) {\n var length = HEAPU32[value >> 2];\n var payload = value + 4;\n var str;\n if (stdStringIsUTF8) {\n var decodeStartPtr = payload;\n for (var i2 = 0; i2 <= length; ++i2) {\n var currentBytePtr = payload + i2;\n if (i2 == length || HEAPU8[currentBytePtr] == 0) {\n var maxRead = currentBytePtr - decodeStartPtr;\n var stringSegment = UTF8ToString(decodeStartPtr, maxRead);\n if (str === void 0) {\n str = stringSegment;\n } else {\n str += String.fromCharCode(0);\n str += stringSegment;\n }\n decodeStartPtr = currentBytePtr + 1;\n }\n }\n } else {\n var a = new Array(length);\n for (var i2 = 0; i2 < length; ++i2) {\n a[i2] = String.fromCharCode(HEAPU8[payload + i2]);\n }\n str = a.join(\"\");\n }\n _free(value);\n return str;\n }, \"toWireType\": function(destructors, value) {\n if (value instanceof ArrayBuffer) {\n value = new Uint8Array(value);\n }\n var length;\n var valueIsOfTypeString = typeof value == \"string\";\n if (!(valueIsOfTypeString || value instanceof Uint8Array || value instanceof Uint8ClampedArray || value instanceof Int8Array)) {\n throwBindingError(\"Cannot pass non-string to std::string\");\n }\n if (stdStringIsUTF8 && valueIsOfTypeString) {\n length = lengthBytesUTF8(value);\n } else {\n length = value.length;\n }\n var base = _malloc(4 + length + 1);\n var ptr = base + 4;\n HEAPU32[base >> 2] = length;\n if (stdStringIsUTF8 && valueIsOfTypeString) {\n stringToUTF8(value, ptr, length + 1);\n } else {\n if (valueIsOfTypeString) {\n for (var i2 = 0; i2 < length; ++i2) {\n var charCode = value.charCodeAt(i2);\n if (charCode > 255) {\n _free(ptr);\n throwBindingError(\"String has UTF-16 code units that do not fit in 8 bits\");\n }\n HEAPU8[ptr + i2] = charCode;\n }\n } else {\n for (var i2 = 0; i2 < length; ++i2) {\n HEAPU8[ptr + i2] = value[i2];\n }\n }\n }\n if (destructors !== null) {\n destructors.push(_free, base);\n }\n return base;\n }, \"argPackAdvance\": 8, \"readValueFromPointer\": simpleReadValueFromPointer, destructorFunction: function(ptr) {\n _free(ptr);\n } });\n }\n var UTF16Decoder = typeof TextDecoder != \"undefined\" ? new TextDecoder(\"utf-16le\") : void 0;\n function UTF16ToString(ptr, maxBytesToRead) {\n var endPtr = ptr;\n var idx = endPtr >> 1;\n var maxIdx = idx + maxBytesToRead / 2;\n while (!(idx >= maxIdx) && HEAPU16[idx])\n ++idx;\n endPtr = idx << 1;\n if (endPtr - ptr > 32 && UTF16Decoder) {\n return UTF16Decoder.decode(HEAPU8.subarray(ptr, endPtr));\n } else {\n var str = \"\";\n for (var i2 = 0; !(i2 >= maxBytesToRead / 2); ++i2) {\n var codeUnit = HEAP16[ptr + i2 * 2 >> 1];\n if (codeUnit == 0)\n break;\n str += String.fromCharCode(codeUnit);\n }\n return str;\n }\n }\n function stringToUTF16(str, outPtr, maxBytesToWrite) {\n if (maxBytesToWrite === void 0) {\n maxBytesToWrite = 2147483647;\n }\n if (maxBytesToWrite < 2)\n return 0;\n maxBytesToWrite -= 2;\n var startPtr = outPtr;\n var numCharsToWrite = maxBytesToWrite < str.length * 2 ? maxBytesToWrite / 2 : str.length;\n for (var i2 = 0; i2 < numCharsToWrite; ++i2) {\n var codeUnit = str.charCodeAt(i2);\n HEAP16[outPtr >> 1] = codeUnit;\n outPtr += 2;\n }\n HEAP16[outPtr >> 1] = 0;\n return outPtr - startPtr;\n }\n function lengthBytesUTF16(str) {\n return str.length * 2;\n }\n function UTF32ToString(ptr, maxBytesToRead) {\n var i2 = 0;\n var str = \"\";\n while (!(i2 >= maxBytesToRead / 4)) {\n var utf32 = HEAP32[ptr + i2 * 4 >> 2];\n if (utf32 == 0)\n break;\n ++i2;\n if (utf32 >= 65536) {\n var ch = utf32 - 65536;\n str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);\n } else {\n str += String.fromCharCode(utf32);\n }\n }\n return str;\n }\n function stringToUTF32(str, outPtr, maxBytesToWrite) {\n if (maxBytesToWrite === void 0) {\n maxBytesToWrite = 2147483647;\n }\n if (maxBytesToWrite < 4)\n return 0;\n var startPtr = outPtr;\n var endPtr = startPtr + maxBytesToWrite - 4;\n for (var i2 = 0; i2 < str.length; ++i2) {\n var codeUnit = str.charCodeAt(i2);\n if (codeUnit >= 55296 && codeUnit <= 57343) {\n var trailSurrogate = str.charCodeAt(++i2);\n codeUnit = 65536 + ((codeUnit & 1023) << 10) | trailSurrogate & 1023;\n }\n HEAP32[outPtr >> 2] = codeUnit;\n outPtr += 4;\n if (outPtr + 4 > endPtr)\n break;\n }\n HEAP32[outPtr >> 2] = 0;\n return outPtr - startPtr;\n }\n function lengthBytesUTF32(str) {\n var len = 0;\n for (var i2 = 0; i2 < str.length; ++i2) {\n var codeUnit = str.charCodeAt(i2);\n if (codeUnit >= 55296 && codeUnit <= 57343)\n ++i2;\n len += 4;\n }\n return len;\n }\n function __embind_register_std_wstring(rawType, charSize, name) {\n name = readLatin1String(name);\n var decodeString, encodeString, getHeap, lengthBytesUTF, shift;\n if (charSize === 2) {\n decodeString = UTF16ToString;\n encodeString = stringToUTF16;\n lengthBytesUTF = lengthBytesUTF16;\n getHeap = () => HEAPU16;\n shift = 1;\n } else if (charSize === 4) {\n decodeString = UTF32ToString;\n encodeString = stringToUTF32;\n lengthBytesUTF = lengthBytesUTF32;\n getHeap = () => HEAPU32;\n shift = 2;\n }\n registerType(rawType, { name, \"fromWireType\": function(value) {\n var length = HEAPU32[value >> 2];\n var HEAP = getHeap();\n var str;\n var decodeStartPtr = value + 4;\n for (var i2 = 0; i2 <= length; ++i2) {\n var currentBytePtr = value + 4 + i2 * charSize;\n if (i2 == length || HEAP[currentBytePtr >> shift] == 0) {\n var maxReadBytes = currentBytePtr - decodeStartPtr;\n var stringSegment = decodeString(decodeStartPtr, maxReadBytes);\n if (str === void 0) {\n str = stringSegment;\n } else {\n str += String.fromCharCode(0);\n str += stringSegment;\n }\n decodeStartPtr = currentBytePtr + charSize;\n }\n }\n _free(value);\n return str;\n }, \"toWireType\": function(destructors, value) {\n if (!(typeof value == \"string\")) {\n throwBindingError(\"Cannot pass non-string to C++ string type \" + name);\n }\n var length = lengthBytesUTF(value);\n var ptr = _malloc(4 + length + charSize);\n HEAPU32[ptr >> 2] = length >> shift;\n encodeString(value, ptr + 4, length + charSize);\n if (destructors !== null) {\n destructors.push(_free, ptr);\n }\n return ptr;\n }, \"argPackAdvance\": 8, \"readValueFromPointer\": simpleReadValueFromPointer, destructorFunction: function(ptr) {\n _free(ptr);\n } });\n }\n function __embind_register_value_object(rawType, name, constructorSignature, rawConstructor, destructorSignature, rawDestructor) {\n structRegistrations[rawType] = { name: readLatin1String(name), rawConstructor: embind__requireFunction(constructorSignature, rawConstructor), rawDestructor: embind__requireFunction(destructorSignature, rawDestructor), fields: [] };\n }\n function __embind_register_value_object_field(structType, fieldName, getterReturnType, getterSignature, getter, getterContext, setterArgumentType, setterSignature, setter, setterContext) {\n structRegistrations[structType].fields.push({ fieldName: readLatin1String(fieldName), getterReturnType, getter: embind__requireFunction(getterSignature, getter), getterContext, setterArgumentType, setter: embind__requireFunction(setterSignature, setter), setterContext });\n }\n function __embind_register_void(rawType, name) {\n name = readLatin1String(name);\n registerType(rawType, { isVoid: true, name, \"argPackAdvance\": 0, \"fromWireType\": function() {\n return void 0;\n }, \"toWireType\": function(destructors, o) {\n return void 0;\n } });\n }\n var nowIsMonotonic = true;\n function __emscripten_get_now_is_monotonic() {\n return nowIsMonotonic;\n }\n function __emval_as(handle, returnType, destructorsRef) {\n handle = Emval.toValue(handle);\n returnType = requireRegisteredType(returnType, \"emval::as\");\n var destructors = [];\n var rd = Emval.toHandle(destructors);\n HEAPU32[destructorsRef >> 2] = rd;\n return returnType[\"toWireType\"](destructors, handle);\n }\n function __emval_await(promise) {\n return Asyncify.handleAsync(() => {\n promise = Emval.toValue(promise);\n return promise.then(Emval.toHandle);\n });\n }\n function emval_lookupTypes(argCount, argTypes) {\n var a = new Array(argCount);\n for (var i2 = 0; i2 < argCount; ++i2) {\n a[i2] = requireRegisteredType(HEAPU32[argTypes + i2 * POINTER_SIZE >> 2], \"parameter \" + i2);\n }\n return a;\n }\n function __emval_call(handle, argCount, argTypes, argv) {\n handle = Emval.toValue(handle);\n var types = emval_lookupTypes(argCount, argTypes);\n var args = new Array(argCount);\n for (var i2 = 0; i2 < argCount; ++i2) {\n var type = types[i2];\n args[i2] = type[\"readValueFromPointer\"](argv);\n argv += type[\"argPackAdvance\"];\n }\n var rv = handle.apply(void 0, args);\n return Emval.toHandle(rv);\n }\n function emval_allocateDestructors(destructorsRef) {\n var destructors = [];\n HEAPU32[destructorsRef >> 2] = Emval.toHandle(destructors);\n return destructors;\n }\n var emval_symbols = {};\n function getStringOrSymbol(address) {\n var symbol = emval_symbols[address];\n if (symbol === void 0) {\n return readLatin1String(address);\n }\n return symbol;\n }\n var emval_methodCallers = [];\n function __emval_call_method(caller, handle, methodName, destructorsRef, args) {\n caller = emval_methodCallers[caller];\n handle = Emval.toValue(handle);\n methodName = getStringOrSymbol(methodName);\n return caller(handle, methodName, emval_allocateDestructors(destructorsRef), args);\n }\n function __emval_call_void_method(caller, handle, methodName, args) {\n caller = emval_methodCallers[caller];\n handle = Emval.toValue(handle);\n methodName = getStringOrSymbol(methodName);\n caller(handle, methodName, null, args);\n }\n function __emval_equals(first, second) {\n first = Emval.toValue(first);\n second = Emval.toValue(second);\n return first == second;\n }\n function emval_get_global() {\n if (typeof globalThis == \"object\") {\n return globalThis;\n }\n return function() {\n return Function;\n }()(\"return this\")();\n }\n function __emval_get_global(name) {\n if (name === 0) {\n return Emval.toHandle(emval_get_global());\n } else {\n name = getStringOrSymbol(name);\n return Emval.toHandle(emval_get_global()[name]);\n }\n }\n function emval_addMethodCaller(caller) {\n var id = emval_methodCallers.length;\n emval_methodCallers.push(caller);\n return id;\n }\n var emval_registeredMethods = [];\n function __emval_get_method_caller(argCount, argTypes) {\n var types = emval_lookupTypes(argCount, argTypes);\n var retType = types[0];\n var signatureName = retType.name + \"_$\" + types.slice(1).map(function(t) {\n return t.name;\n }).join(\"_\") + \"$\";\n var returnId = emval_registeredMethods[signatureName];\n if (returnId !== void 0) {\n return returnId;\n }\n var params = [\"retType\"];\n var args = [retType];\n var argsList = \"\";\n for (var i2 = 0; i2 < argCount - 1; ++i2) {\n argsList += (i2 !== 0 ? \", \" : \"\") + \"arg\" + i2;\n params.push(\"argType\" + i2);\n args.push(types[1 + i2]);\n }\n var functionName = makeLegalFunctionName(\"methodCaller_\" + signatureName);\n var functionBody = \"return function \" + functionName + \"(handle, name, destructors, args) {\\n\";\n var offset = 0;\n for (var i2 = 0; i2 < argCount - 1; ++i2) {\n functionBody += \" var arg\" + i2 + \" = argType\" + i2 + \".readValueFromPointer(args\" + (offset ? \"+\" + offset : \"\") + \");\\n\";\n offset += types[i2 + 1][\"argPackAdvance\"];\n }\n functionBody += \" var rv = handle[name](\" + argsList + \");\\n\";\n for (var i2 = 0; i2 < argCount - 1; ++i2) {\n if (types[i2 + 1][\"deleteObject\"]) {\n functionBody += \" argType\" + i2 + \".deleteObject(arg\" + i2 + \");\\n\";\n }\n }\n if (!retType.isVoid) {\n functionBody += \" return retType.toWireType(destructors, rv);\\n\";\n }\n functionBody += \"};\\n\";\n params.push(functionBody);\n var invokerFunction = new_(Function, params).apply(null, args);\n returnId = emval_addMethodCaller(invokerFunction);\n emval_registeredMethods[signatureName] = returnId;\n return returnId;\n }\n function __emval_get_module_property(name) {\n name = getStringOrSymbol(name);\n return Emval.toHandle(Module[name]);\n }\n function __emval_get_property(handle, key) {\n handle = Emval.toValue(handle);\n key = Emval.toValue(key);\n return Emval.toHandle(handle[key]);\n }\n function __emval_incref(handle) {\n if (handle > 4) {\n emval_handle_array[handle].refcount += 1;\n }\n }\n function __emval_instanceof(object, constructor) {\n object = Emval.toValue(object);\n constructor = Emval.toValue(constructor);\n return object instanceof constructor;\n }\n function craftEmvalAllocator(argCount) {\n var argsList = \"\";\n for (var i2 = 0; i2 < argCount; ++i2) {\n argsList += (i2 !== 0 ? \", \" : \"\") + \"arg\" + i2;\n }\n var getMemory = () => HEAPU32;\n var functionBody = \"return function emval_allocator_\" + argCount + \"(constructor, argTypes, args) {\\n var HEAPU32 = getMemory();\\n\";\n for (var i2 = 0; i2 < argCount; ++i2) {\n functionBody += \"var argType\" + i2 + \" = requireRegisteredType(HEAPU32[((argTypes)>>2)], 'parameter \" + i2 + \"');\\nvar arg\" + i2 + \" = argType\" + i2 + \".readValueFromPointer(args);\\nargs += argType\" + i2 + \"['argPackAdvance'];\\nargTypes += 4;\\n\";\n }\n functionBody += \"var obj = new constructor(\" + argsList + \");\\nreturn valueToHandle(obj);\\n}\\n\";\n return new Function(\"requireRegisteredType\", \"Module\", \"valueToHandle\", \"getMemory\", functionBody)(requireRegisteredType, Module, Emval.toHandle, getMemory);\n }\n var emval_newers = {};\n function __emval_new(handle, argCount, argTypes, args) {\n handle = Emval.toValue(handle);\n var newer = emval_newers[argCount];\n if (!newer) {\n newer = craftEmvalAllocator(argCount);\n emval_newers[argCount] = newer;\n }\n return newer(handle, argTypes, args);\n }\n function __emval_new_array() {\n return Emval.toHandle([]);\n }\n function __emval_new_cstring(v) {\n return Emval.toHandle(getStringOrSymbol(v));\n }\n function __emval_new_object() {\n return Emval.toHandle({});\n }\n function __emval_run_destructors(handle) {\n var destructors = Emval.toValue(handle);\n runDestructors(destructors);\n __emval_decref(handle);\n }\n function __emval_set_property(handle, key, value) {\n handle = Emval.toValue(handle);\n key = Emval.toValue(key);\n value = Emval.toValue(value);\n handle[key] = value;\n }\n function __emval_take_value(type, arg) {\n type = requireRegisteredType(type, \"_emval_take_value\");\n var v = type[\"readValueFromPointer\"](arg);\n return Emval.toHandle(v);\n }\n function _abort() {\n abort(\"\");\n }\n var JSEvents = { inEventHandler: 0, removeAllEventListeners: function() {\n for (var i2 = JSEvents.eventHandlers.length - 1; i2 >= 0; --i2) {\n JSEvents._removeHandler(i2);\n }\n JSEvents.eventHandlers = [];\n JSEvents.deferredCalls = [];\n }, registerRemoveEventListeners: function() {\n if (!JSEvents.removeEventListenersRegistered) {\n JSEvents.removeEventListenersRegistered = true;\n }\n }, deferredCalls: [], deferCall: function(targetFunction, precedence, argsList) {\n function arraysHaveEqualContent(arrA, arrB) {\n if (arrA.length != arrB.length)\n return false;\n for (var i3 in arrA) {\n if (arrA[i3] != arrB[i3])\n return false;\n }\n return true;\n }\n for (var i2 in JSEvents.deferredCalls) {\n var call = JSEvents.deferredCalls[i2];\n if (call.targetFunction == targetFunction && arraysHaveEqualContent(call.argsList, argsList)) {\n return;\n }\n }\n JSEvents.deferredCalls.push({ targetFunction, precedence, argsList });\n JSEvents.deferredCalls.sort(function(x, y) {\n return x.precedence < y.precedence;\n });\n }, removeDeferredCalls: function(targetFunction) {\n for (var i2 = 0; i2 < JSEvents.deferredCalls.length; ++i2) {\n if (JSEvents.deferredCalls[i2].targetFunction == targetFunction) {\n JSEvents.deferredCalls.splice(i2, 1);\n --i2;\n }\n }\n }, canPerformEventHandlerRequests: function() {\n return JSEvents.inEventHandler && JSEvents.currentEventHandler.allowsDeferredCalls;\n }, runDeferredCalls: function() {\n if (!JSEvents.canPerformEventHandlerRequests()) {\n return;\n }\n for (var i2 = 0; i2 < JSEvents.deferredCalls.length; ++i2) {\n var call = JSEvents.deferredCalls[i2];\n JSEvents.deferredCalls.splice(i2, 1);\n --i2;\n call.targetFunction.apply(null, call.argsList);\n }\n }, eventHandlers: [], removeAllHandlersOnTarget: function(target, eventTypeString) {\n for (var i2 = 0; i2 < JSEvents.eventHandlers.length; ++i2) {\n if (JSEvents.eventHandlers[i2].target == target && (!eventTypeString || eventTypeString == JSEvents.eventHandlers[i2].eventTypeString)) {\n JSEvents._removeHandler(i2--);\n }\n }\n }, _removeHandler: function(i2) {\n var h = JSEvents.eventHandlers[i2];\n h.target.removeEventListener(h.eventTypeString, h.eventListenerFunc, h.useCapture);\n JSEvents.eventHandlers.splice(i2, 1);\n }, registerOrRemoveHandler: function(eventHandler) {\n var jsEventHandler = function jsEventHandler2(event) {\n ++JSEvents.inEventHandler;\n JSEvents.currentEventHandler = eventHandler;\n JSEvents.runDeferredCalls();\n eventHandler.handlerFunc(event);\n JSEvents.runDeferredCalls();\n --JSEvents.inEventHandler;\n };\n if (eventHandler.callbackfunc) {\n eventHandler.eventListenerFunc = jsEventHandler;\n eventHandler.target.addEventListener(eventHandler.eventTypeString, jsEventHandler, eventHandler.useCapture);\n JSEvents.eventHandlers.push(eventHandler);\n JSEvents.registerRemoveEventListeners();\n } else {\n for (var i2 = 0; i2 < JSEvents.eventHandlers.length; ++i2) {\n if (JSEvents.eventHandlers[i2].target == eventHandler.target && JSEvents.eventHandlers[i2].eventTypeString == eventHandler.eventTypeString) {\n JSEvents._removeHandler(i2--);\n }\n }\n }\n }, getNodeNameForTarget: function(target) {\n if (!target)\n return \"\";\n if (target == window)\n return \"#window\";\n if (target == screen)\n return \"#screen\";\n return target && target.nodeName ? target.nodeName : \"\";\n }, fullscreenEnabled: function() {\n return document.fullscreenEnabled || document.webkitFullscreenEnabled;\n } };\n function maybeCStringToJsString(cString) {\n return cString > 2 ? UTF8ToString(cString) : cString;\n }\n var specialHTMLTargets = [0, typeof document != \"undefined\" ? document : 0, typeof window != \"undefined\" ? window : 0];\n function findEventTarget(target) {\n target = maybeCStringToJsString(target);\n var domElement = specialHTMLTargets[target] || (typeof document != \"undefined\" ? document.querySelector(target) : void 0);\n return domElement;\n }\n function findCanvasEventTarget(target) {\n return findEventTarget(target);\n }\n function _emscripten_get_canvas_element_size(target, width, height) {\n var canvas = findCanvasEventTarget(target);\n if (!canvas)\n return -4;\n HEAP32[width >> 2] = canvas.width;\n HEAP32[height >> 2] = canvas.height;\n }\n var _emscripten_get_now;\n _emscripten_get_now = () => performance.now();\n function __webgl_enable_ANGLE_instanced_arrays(ctx) {\n var ext = ctx.getExtension(\"ANGLE_instanced_arrays\");\n if (ext) {\n ctx[\"vertexAttribDivisor\"] = function(index, divisor) {\n ext[\"vertexAttribDivisorANGLE\"](index, divisor);\n };\n ctx[\"drawArraysInstanced\"] = function(mode, first, count, primcount) {\n ext[\"drawArraysInstancedANGLE\"](mode, first, count, primcount);\n };\n ctx[\"drawElementsInstanced\"] = function(mode, count, type, indices, primcount) {\n ext[\"drawElementsInstancedANGLE\"](mode, count, type, indices, primcount);\n };\n return 1;\n }\n }\n function __webgl_enable_OES_vertex_array_object(ctx) {\n var ext = ctx.getExtension(\"OES_vertex_array_object\");\n if (ext) {\n ctx[\"createVertexArray\"] = function() {\n return ext[\"createVertexArrayOES\"]();\n };\n ctx[\"deleteVertexArray\"] = function(vao) {\n ext[\"deleteVertexArrayOES\"](vao);\n };\n ctx[\"bindVertexArray\"] = function(vao) {\n ext[\"bindVertexArrayOES\"](vao);\n };\n ctx[\"isVertexArray\"] = function(vao) {\n return ext[\"isVertexArrayOES\"](vao);\n };\n return 1;\n }\n }\n function __webgl_enable_WEBGL_draw_buffers(ctx) {\n var ext = ctx.getExtension(\"WEBGL_draw_buffers\");\n if (ext) {\n ctx[\"drawBuffers\"] = function(n, bufs) {\n ext[\"drawBuffersWEBGL\"](n, bufs);\n };\n return 1;\n }\n }\n function __webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx) {\n return !!(ctx.dibvbi = ctx.getExtension(\"WEBGL_draw_instanced_base_vertex_base_instance\"));\n }\n function __webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx) {\n return !!(ctx.mdibvbi = ctx.getExtension(\"WEBGL_multi_draw_instanced_base_vertex_base_instance\"));\n }\n function __webgl_enable_WEBGL_multi_draw(ctx) {\n return !!(ctx.multiDrawWebgl = ctx.getExtension(\"WEBGL_multi_draw\"));\n }\n var GL = { counter: 1, buffers: [], programs: [], framebuffers: [], renderbuffers: [], textures: [], shaders: [], vaos: [], contexts: [], offscreenCanvases: {}, queries: [], samplers: [], transformFeedbacks: [], syncs: [], stringCache: {}, stringiCache: {}, unpackAlignment: 4, recordError: function recordError(errorCode) {\n if (!GL.lastError) {\n GL.lastError = errorCode;\n }\n }, getNewId: function(table) {\n var ret = GL.counter++;\n for (var i2 = table.length; i2 < ret; i2++) {\n table[i2] = null;\n }\n return ret;\n }, getSource: function(shader, count, string, length) {\n var source = \"\";\n for (var i2 = 0; i2 < count; ++i2) {\n var len = length ? HEAP32[length + i2 * 4 >> 2] : -1;\n source += UTF8ToString(HEAP32[string + i2 * 4 >> 2], len < 0 ? void 0 : len);\n }\n return source;\n }, createContext: function(canvas, webGLContextAttributes) {\n if (!canvas.getContextSafariWebGL2Fixed) {\n let fixedGetContext = function(ver, attrs) {\n var gl = canvas.getContextSafariWebGL2Fixed(ver, attrs);\n return ver == \"webgl\" == gl instanceof WebGLRenderingContext ? gl : null;\n };\n canvas.getContextSafariWebGL2Fixed = canvas.getContext;\n canvas.getContext = fixedGetContext;\n }\n var ctx = webGLContextAttributes.majorVersion > 1 ? canvas.getContext(\"webgl2\", webGLContextAttributes) : canvas.getContext(\"webgl\", webGLContextAttributes);\n if (!ctx)\n return 0;\n var handle = GL.registerContext(ctx, webGLContextAttributes);\n return handle;\n }, registerContext: function(ctx, webGLContextAttributes) {\n var handle = GL.getNewId(GL.contexts);\n var context = { handle, attributes: webGLContextAttributes, version: webGLContextAttributes.majorVersion, GLctx: ctx };\n if (ctx.canvas)\n ctx.canvas.GLctxObject = context;\n GL.contexts[handle] = context;\n if (typeof webGLContextAttributes.enableExtensionsByDefault == \"undefined\" || webGLContextAttributes.enableExtensionsByDefault) {\n GL.initExtensions(context);\n }\n return handle;\n }, makeContextCurrent: function(contextHandle) {\n GL.currentContext = GL.contexts[contextHandle];\n Module.ctx = GLctx = GL.currentContext && GL.currentContext.GLctx;\n return !(contextHandle && !GLctx);\n }, getContext: function(contextHandle) {\n return GL.contexts[contextHandle];\n }, deleteContext: function(contextHandle) {\n if (GL.currentContext === GL.contexts[contextHandle])\n GL.currentContext = null;\n if (typeof JSEvents == \"object\")\n JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);\n if (GL.contexts[contextHandle] && GL.contexts[contextHandle].GLctx.canvas)\n GL.contexts[contextHandle].GLctx.canvas.GLctxObject = void 0;\n GL.contexts[contextHandle] = null;\n }, initExtensions: function(context) {\n if (!context)\n context = GL.currentContext;\n if (context.initExtensionsDone)\n return;\n context.initExtensionsDone = true;\n var GLctx2 = context.GLctx;\n __webgl_enable_ANGLE_instanced_arrays(GLctx2);\n __webgl_enable_OES_vertex_array_object(GLctx2);\n __webgl_enable_WEBGL_draw_buffers(GLctx2);\n __webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(GLctx2);\n __webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(GLctx2);\n if (context.version >= 2) {\n GLctx2.disjointTimerQueryExt = GLctx2.getExtension(\"EXT_disjoint_timer_query_webgl2\");\n }\n if (context.version < 2 || !GLctx2.disjointTimerQueryExt) {\n GLctx2.disjointTimerQueryExt = GLctx2.getExtension(\"EXT_disjoint_timer_query\");\n }\n __webgl_enable_WEBGL_multi_draw(GLctx2);\n var exts = GLctx2.getSupportedExtensions() || [];\n exts.forEach(function(ext) {\n if (!ext.includes(\"lose_context\") && !ext.includes(\"debug\")) {\n GLctx2.getExtension(ext);\n }\n });\n } };\n function _emscripten_glActiveTexture(x0) {\n GLctx[\"activeTexture\"](x0);\n }\n function _emscripten_glAttachShader(program, shader) {\n GLctx.attachShader(GL.programs[program], GL.shaders[shader]);\n }\n function _emscripten_glBindAttribLocation(program, index, name) {\n GLctx.bindAttribLocation(GL.programs[program], index, UTF8ToString(name));\n }\n function _emscripten_glBindBuffer(target, buffer2) {\n if (target == 35051) {\n GLctx.currentPixelPackBufferBinding = buffer2;\n } else if (target == 35052) {\n GLctx.currentPixelUnpackBufferBinding = buffer2;\n }\n GLctx.bindBuffer(target, GL.buffers[buffer2]);\n }\n function _emscripten_glBindFramebuffer(target, framebuffer) {\n GLctx.bindFramebuffer(target, GL.framebuffers[framebuffer]);\n }\n function _emscripten_glBindRenderbuffer(target, renderbuffer) {\n GLctx.bindRenderbuffer(target, GL.renderbuffers[renderbuffer]);\n }\n function _emscripten_glBindTexture(target, texture) {\n GLctx.bindTexture(target, GL.textures[texture]);\n }\n function _emscripten_glBindVertexArray(vao) {\n GLctx[\"bindVertexArray\"](GL.vaos[vao]);\n }\n function _emscripten_glBindVertexArrayOES(vao) {\n GLctx[\"bindVertexArray\"](GL.vaos[vao]);\n }\n function _emscripten_glBlendColor(x0, x1, x2, x3) {\n GLctx[\"blendColor\"](x0, x1, x2, x3);\n }\n function _emscripten_glBlendEquation(x0) {\n GLctx[\"blendEquation\"](x0);\n }\n function _emscripten_glBlendEquationSeparate(x0, x1) {\n GLctx[\"blendEquationSeparate\"](x0, x1);\n }\n function _emscripten_glBlendFunc(x0, x1) {\n GLctx[\"blendFunc\"](x0, x1);\n }\n function _emscripten_glBlitFramebuffer(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9) {\n GLctx[\"blitFramebuffer\"](x0, x1, x2, x3, x4, x5, x6, x7, x8, x9);\n }\n function _emscripten_glBufferData(target, size, data, usage) {\n if (GL.currentContext.version >= 2) {\n if (data && size) {\n GLctx.bufferData(target, HEAPU8, usage, data, size);\n } else {\n GLctx.bufferData(target, size, usage);\n }\n } else {\n GLctx.bufferData(target, data ? HEAPU8.subarray(data, data + size) : size, usage);\n }\n }\n function _emscripten_glCheckFramebufferStatus(x0) {\n return GLctx[\"checkFramebufferStatus\"](x0);\n }\n function _emscripten_glClear(x0) {\n GLctx[\"clear\"](x0);\n }\n function _emscripten_glClearColor(x0, x1, x2, x3) {\n GLctx[\"clearColor\"](x0, x1, x2, x3);\n }\n function _emscripten_glClearStencil(x0) {\n GLctx[\"clearStencil\"](x0);\n }\n function _emscripten_glColorMask(red, green, blue, alpha) {\n GLctx.colorMask(!!red, !!green, !!blue, !!alpha);\n }\n function _emscripten_glCompileShader(shader) {\n GLctx.compileShader(GL.shaders[shader]);\n }\n function _emscripten_glCopyTexSubImage2D(x0, x1, x2, x3, x4, x5, x6, x7) {\n GLctx[\"copyTexSubImage2D\"](x0, x1, x2, x3, x4, x5, x6, x7);\n }\n function _emscripten_glCreateProgram() {\n var id = GL.getNewId(GL.programs);\n var program = GLctx.createProgram();\n program.name = id;\n program.maxUniformLength = program.maxAttributeLength = program.maxUniformBlockNameLength = 0;\n program.uniformIdCounter = 1;\n GL.programs[id] = program;\n return id;\n }\n function _emscripten_glCreateShader(shaderType) {\n var id = GL.getNewId(GL.shaders);\n GL.shaders[id] = GLctx.createShader(shaderType);\n return id;\n }\n function _emscripten_glDeleteBuffers(n, buffers) {\n for (var i2 = 0; i2 < n; i2++) {\n var id = HEAP32[buffers + i2 * 4 >> 2];\n var buffer2 = GL.buffers[id];\n if (!buffer2)\n continue;\n GLctx.deleteBuffer(buffer2);\n buffer2.name = 0;\n GL.buffers[id] = null;\n if (id == GLctx.currentPixelPackBufferBinding)\n GLctx.currentPixelPackBufferBinding = 0;\n if (id == GLctx.currentPixelUnpackBufferBinding)\n GLctx.currentPixelUnpackBufferBinding = 0;\n }\n }\n function _emscripten_glDeleteFramebuffers(n, framebuffers) {\n for (var i2 = 0; i2 < n; ++i2) {\n var id = HEAP32[framebuffers + i2 * 4 >> 2];\n var framebuffer = GL.framebuffers[id];\n if (!framebuffer)\n continue;\n GLctx.deleteFramebuffer(framebuffer);\n framebuffer.name = 0;\n GL.framebuffers[id] = null;\n }\n }\n function _emscripten_glDeleteProgram(id) {\n if (!id)\n return;\n var program = GL.programs[id];\n if (!program) {\n GL.recordError(1281);\n return;\n }\n GLctx.deleteProgram(program);\n program.name = 0;\n GL.programs[id] = null;\n }\n function _emscripten_glDeleteRenderbuffers(n, renderbuffers) {\n for (var i2 = 0; i2 < n; i2++) {\n var id = HEAP32[renderbuffers + i2 * 4 >> 2];\n var renderbuffer = GL.renderbuffers[id];\n if (!renderbuffer)\n continue;\n GLctx.deleteRenderbuffer(renderbuffer);\n renderbuffer.name = 0;\n GL.renderbuffers[id] = null;\n }\n }\n function _emscripten_glDeleteShader(id) {\n if (!id)\n return;\n var shader = GL.shaders[id];\n if (!shader) {\n GL.recordError(1281);\n return;\n }\n GLctx.deleteShader(shader);\n GL.shaders[id] = null;\n }\n function _emscripten_glDeleteSync(id) {\n if (!id)\n return;\n var sync = GL.syncs[id];\n if (!sync) {\n GL.recordError(1281);\n return;\n }\n GLctx.deleteSync(sync);\n sync.name = 0;\n GL.syncs[id] = null;\n }\n function _emscripten_glDeleteTextures(n, textures) {\n for (var i2 = 0; i2 < n; i2++) {\n var id = HEAP32[textures + i2 * 4 >> 2];\n var texture = GL.textures[id];\n if (!texture)\n continue;\n GLctx.deleteTexture(texture);\n texture.name = 0;\n GL.textures[id] = null;\n }\n }\n function _emscripten_glDeleteVertexArrays(n, vaos) {\n for (var i2 = 0; i2 < n; i2++) {\n var id = HEAP32[vaos + i2 * 4 >> 2];\n GLctx[\"deleteVertexArray\"](GL.vaos[id]);\n GL.vaos[id] = null;\n }\n }\n function _emscripten_glDeleteVertexArraysOES(n, vaos) {\n for (var i2 = 0; i2 < n; i2++) {\n var id = HEAP32[vaos + i2 * 4 >> 2];\n GLctx[\"deleteVertexArray\"](GL.vaos[id]);\n GL.vaos[id] = null;\n }\n }\n function _emscripten_glDepthMask(flag) {\n GLctx.depthMask(!!flag);\n }\n function _emscripten_glDisable(x0) {\n GLctx[\"disable\"](x0);\n }\n function _emscripten_glDisableVertexAttribArray(index) {\n GLctx.disableVertexAttribArray(index);\n }\n function _emscripten_glDrawArrays(mode, first, count) {\n GLctx.drawArrays(mode, first, count);\n }\n function _emscripten_glDrawElements(mode, count, type, indices) {\n GLctx.drawElements(mode, count, type, indices);\n }\n function _emscripten_glEnable(x0) {\n GLctx[\"enable\"](x0);\n }\n function _emscripten_glEnableVertexAttribArray(index) {\n GLctx.enableVertexAttribArray(index);\n }\n function _emscripten_glFenceSync(condition, flags) {\n var sync = GLctx.fenceSync(condition, flags);\n if (sync) {\n var id = GL.getNewId(GL.syncs);\n sync.name = id;\n GL.syncs[id] = sync;\n return id;\n }\n return 0;\n }\n function _emscripten_glFinish() {\n GLctx[\"finish\"]();\n }\n function _emscripten_glFlush() {\n GLctx[\"flush\"]();\n }\n function _emscripten_glFramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer) {\n GLctx.framebufferRenderbuffer(target, attachment, renderbuffertarget, GL.renderbuffers[renderbuffer]);\n }\n function _emscripten_glFramebufferTexture2D(target, attachment, textarget, texture, level) {\n GLctx.framebufferTexture2D(target, attachment, textarget, GL.textures[texture], level);\n }\n function __glGenObject(n, buffers, createFunction, objectTable) {\n for (var i2 = 0; i2 < n; i2++) {\n var buffer2 = GLctx[createFunction]();\n var id = buffer2 && GL.getNewId(objectTable);\n if (buffer2) {\n buffer2.name = id;\n objectTable[id] = buffer2;\n } else {\n GL.recordError(1282);\n }\n HEAP32[buffers + i2 * 4 >> 2] = id;\n }\n }\n function _emscripten_glGenBuffers(n, buffers) {\n __glGenObject(n, buffers, \"createBuffer\", GL.buffers);\n }\n function _emscripten_glGenFramebuffers(n, ids) {\n __glGenObject(n, ids, \"createFramebuffer\", GL.framebuffers);\n }\n function _emscripten_glGenRenderbuffers(n, renderbuffers) {\n __glGenObject(n, renderbuffers, \"createRenderbuffer\", GL.renderbuffers);\n }\n function _emscripten_glGenTextures(n, textures) {\n __glGenObject(n, textures, \"createTexture\", GL.textures);\n }\n function _emscripten_glGenVertexArrays(n, arrays) {\n __glGenObject(n, arrays, \"createVertexArray\", GL.vaos);\n }\n function _emscripten_glGenVertexArraysOES(n, arrays) {\n __glGenObject(n, arrays, \"createVertexArray\", GL.vaos);\n }\n function _emscripten_glGetAttribLocation(program, name) {\n return GLctx.getAttribLocation(GL.programs[program], UTF8ToString(name));\n }\n function _emscripten_glGetBufferParameteriv(target, value, data) {\n if (!data) {\n GL.recordError(1281);\n return;\n }\n HEAP32[data >> 2] = GLctx.getBufferParameter(target, value);\n }\n function _emscripten_glGetError() {\n var error = GLctx.getError() || GL.lastError;\n GL.lastError = 0;\n return error;\n }\n function _emscripten_glGetFramebufferAttachmentParameteriv(target, attachment, pname, params) {\n var result = GLctx.getFramebufferAttachmentParameter(target, attachment, pname);\n if (result instanceof WebGLRenderbuffer || result instanceof WebGLTexture) {\n result = result.name | 0;\n }\n HEAP32[params >> 2] = result;\n }\n function writeI53ToI64(ptr, num) {\n HEAPU32[ptr >> 2] = num;\n HEAPU32[ptr + 4 >> 2] = (num - HEAPU32[ptr >> 2]) / 4294967296;\n }\n function emscriptenWebGLGet(name_, p, type) {\n if (!p) {\n GL.recordError(1281);\n return;\n }\n var ret = void 0;\n switch (name_) {\n case 36346:\n ret = 1;\n break;\n case 36344:\n if (type != 0 && type != 1) {\n GL.recordError(1280);\n }\n return;\n case 34814:\n case 36345:\n ret = 0;\n break;\n case 34466:\n var formats = GLctx.getParameter(34467);\n ret = formats ? formats.length : 0;\n break;\n case 33309:\n if (GL.currentContext.version < 2) {\n GL.recordError(1282);\n return;\n }\n var exts = GLctx.getSupportedExtensions() || [];\n ret = 2 * exts.length;\n break;\n case 33307:\n case 33308:\n if (GL.currentContext.version < 2) {\n GL.recordError(1280);\n return;\n }\n ret = name_ == 33307 ? 3 : 0;\n break;\n }\n if (ret === void 0) {\n var result = GLctx.getParameter(name_);\n switch (typeof result) {\n case \"number\":\n ret = result;\n break;\n case \"boolean\":\n ret = result ? 1 : 0;\n break;\n case \"string\":\n GL.recordError(1280);\n return;\n case \"object\":\n if (result === null) {\n switch (name_) {\n case 34964:\n case 35725:\n case 34965:\n case 36006:\n case 36007:\n case 32873:\n case 34229:\n case 36662:\n case 36663:\n case 35053:\n case 35055:\n case 36010:\n case 35097:\n case 35869:\n case 32874:\n case 36389:\n case 35983:\n case 35368:\n case 34068: {\n ret = 0;\n break;\n }\n default: {\n GL.recordError(1280);\n return;\n }\n }\n } else if (result instanceof Float32Array || result instanceof Uint32Array || result instanceof Int32Array || result instanceof Array) {\n for (var i2 = 0; i2 < result.length; ++i2) {\n switch (type) {\n case 0:\n HEAP32[p + i2 * 4 >> 2] = result[i2];\n break;\n case 2:\n HEAPF32[p + i2 * 4 >> 2] = result[i2];\n break;\n case 4:\n HEAP8[p + i2 >> 0] = result[i2] ? 1 : 0;\n break;\n }\n }\n return;\n } else {\n try {\n ret = result.name | 0;\n } catch (e) {\n GL.recordError(1280);\n err(\"GL_INVALID_ENUM in glGet\" + type + \"v: Unknown object returned from WebGL getParameter(\" + name_ + \")! (error: \" + e + \")\");\n return;\n }\n }\n break;\n default:\n GL.recordError(1280);\n err(\"GL_INVALID_ENUM in glGet\" + type + \"v: Native code calling glGet\" + type + \"v(\" + name_ + \") and it returns \" + result + \" of type \" + typeof result + \"!\");\n return;\n }\n }\n switch (type) {\n case 1:\n writeI53ToI64(p, ret);\n break;\n case 0:\n HEAP32[p >> 2] = ret;\n break;\n case 2:\n HEAPF32[p >> 2] = ret;\n break;\n case 4:\n HEAP8[p >> 0] = ret ? 1 : 0;\n break;\n }\n }\n function _emscripten_glGetIntegerv(name_, p) {\n emscriptenWebGLGet(name_, p, 0);\n }\n function _emscripten_glGetProgramInfoLog(program, maxLength, length, infoLog) {\n var log = GLctx.getProgramInfoLog(GL.programs[program]);\n if (log === null)\n log = \"(unknown error)\";\n var numBytesWrittenExclNull = maxLength > 0 && infoLog ? stringToUTF8(log, infoLog, maxLength) : 0;\n if (length)\n HEAP32[length >> 2] = numBytesWrittenExclNull;\n }\n function _emscripten_glGetProgramiv(program, pname, p) {\n if (!p) {\n GL.recordError(1281);\n return;\n }\n if (program >= GL.counter) {\n GL.recordError(1281);\n return;\n }\n program = GL.programs[program];\n if (pname == 35716) {\n var log = GLctx.getProgramInfoLog(program);\n if (log === null)\n log = \"(unknown error)\";\n HEAP32[p >> 2] = log.length + 1;\n } else if (pname == 35719) {\n if (!program.maxUniformLength) {\n for (var i2 = 0; i2 < GLctx.getProgramParameter(program, 35718); ++i2) {\n program.maxUniformLength = Math.max(program.maxUniformLength, GLctx.getActiveUniform(program, i2).name.length + 1);\n }\n }\n HEAP32[p >> 2] = program.maxUniformLength;\n } else if (pname == 35722) {\n if (!program.maxAttributeLength) {\n for (var i2 = 0; i2 < GLctx.getProgramParameter(program, 35721); ++i2) {\n program.maxAttributeLength = Math.max(program.maxAttributeLength, GLctx.getActiveAttrib(program, i2).name.length + 1);\n }\n }\n HEAP32[p >> 2] = program.maxAttributeLength;\n } else if (pname == 35381) {\n if (!program.maxUniformBlockNameLength) {\n for (var i2 = 0; i2 < GLctx.getProgramParameter(program, 35382); ++i2) {\n program.maxUniformBlockNameLength = Math.max(program.maxUniformBlockNameLength, GLctx.getActiveUniformBlockName(program, i2).length + 1);\n }\n }\n HEAP32[p >> 2] = program.maxUniformBlockNameLength;\n } else {\n HEAP32[p >> 2] = GLctx.getProgramParameter(program, pname);\n }\n }\n function _emscripten_glGetRenderbufferParameteriv(target, pname, params) {\n if (!params) {\n GL.recordError(1281);\n return;\n }\n HEAP32[params >> 2] = GLctx.getRenderbufferParameter(target, pname);\n }\n function _emscripten_glGetShaderInfoLog(shader, maxLength, length, infoLog) {\n var log = GLctx.getShaderInfoLog(GL.shaders[shader]);\n if (log === null)\n log = \"(unknown error)\";\n var numBytesWrittenExclNull = maxLength > 0 && infoLog ? stringToUTF8(log, infoLog, maxLength) : 0;\n if (length)\n HEAP32[length >> 2] = numBytesWrittenExclNull;\n }\n function _emscripten_glGetShaderPrecisionFormat(shaderType, precisionType, range, precision) {\n var result = GLctx.getShaderPrecisionFormat(shaderType, precisionType);\n HEAP32[range >> 2] = result.rangeMin;\n HEAP32[range + 4 >> 2] = result.rangeMax;\n HEAP32[precision >> 2] = result.precision;\n }\n function _emscripten_glGetShaderiv(shader, pname, p) {\n if (!p) {\n GL.recordError(1281);\n return;\n }\n if (pname == 35716) {\n var log = GLctx.getShaderInfoLog(GL.shaders[shader]);\n if (log === null)\n log = \"(unknown error)\";\n var logLength = log ? log.length + 1 : 0;\n HEAP32[p >> 2] = logLength;\n } else if (pname == 35720) {\n var source = GLctx.getShaderSource(GL.shaders[shader]);\n var sourceLength = source ? source.length + 1 : 0;\n HEAP32[p >> 2] = sourceLength;\n } else {\n HEAP32[p >> 2] = GLctx.getShaderParameter(GL.shaders[shader], pname);\n }\n }\n function stringToNewUTF8(jsString) {\n var length = lengthBytesUTF8(jsString) + 1;\n var cString = _malloc(length);\n stringToUTF8(jsString, cString, length);\n return cString;\n }\n function _emscripten_glGetString(name_) {\n var ret = GL.stringCache[name_];\n if (!ret) {\n switch (name_) {\n case 7939:\n var exts = GLctx.getSupportedExtensions() || [];\n exts = exts.concat(exts.map(function(e) {\n return \"GL_\" + e;\n }));\n ret = stringToNewUTF8(exts.join(\" \"));\n break;\n case 7936:\n case 7937:\n case 37445:\n case 37446:\n var s = GLctx.getParameter(name_);\n if (!s) {\n GL.recordError(1280);\n }\n ret = s && stringToNewUTF8(s);\n break;\n case 7938:\n var glVersion = GLctx.getParameter(7938);\n if (GL.currentContext.version >= 2)\n glVersion = \"OpenGL ES 3.0 (\" + glVersion + \")\";\n else {\n glVersion = \"OpenGL ES 2.0 (\" + glVersion + \")\";\n }\n ret = stringToNewUTF8(glVersion);\n break;\n case 35724:\n var glslVersion = GLctx.getParameter(35724);\n var ver_re = /^WebGL GLSL ES ([0-9]\\.[0-9][0-9]?)(?:$| .*)/;\n var ver_num = glslVersion.match(ver_re);\n if (ver_num !== null) {\n if (ver_num[1].length == 3)\n ver_num[1] = ver_num[1] + \"0\";\n glslVersion = \"OpenGL ES GLSL ES \" + ver_num[1] + \" (\" + glslVersion + \")\";\n }\n ret = stringToNewUTF8(glslVersion);\n break;\n default:\n GL.recordError(1280);\n }\n GL.stringCache[name_] = ret;\n }\n return ret;\n }\n function _emscripten_glGetStringi(name, index) {\n if (GL.currentContext.version < 2) {\n GL.recordError(1282);\n return 0;\n }\n var stringiCache = GL.stringiCache[name];\n if (stringiCache) {\n if (index < 0 || index >= stringiCache.length) {\n GL.recordError(1281);\n return 0;\n }\n return stringiCache[index];\n }\n switch (name) {\n case 7939:\n var exts = GLctx.getSupportedExtensions() || [];\n exts = exts.concat(exts.map(function(e) {\n return \"GL_\" + e;\n }));\n exts = exts.map(function(e) {\n return stringToNewUTF8(e);\n });\n stringiCache = GL.stringiCache[name] = exts;\n if (index < 0 || index >= stringiCache.length) {\n GL.recordError(1281);\n return 0;\n }\n return stringiCache[index];\n default:\n GL.recordError(1280);\n return 0;\n }\n }\n function jstoi_q(str) {\n return parseInt(str);\n }\n function webglGetLeftBracePos(name) {\n return name.slice(-1) == \"]\" && name.lastIndexOf(\"[\");\n }\n function webglPrepareUniformLocationsBeforeFirstUse(program) {\n var uniformLocsById = program.uniformLocsById, uniformSizeAndIdsByName = program.uniformSizeAndIdsByName, i2, j;\n if (!uniformLocsById) {\n program.uniformLocsById = uniformLocsById = {};\n program.uniformArrayNamesById = {};\n for (i2 = 0; i2 < GLctx.getProgramParameter(program, 35718); ++i2) {\n var u = GLctx.getActiveUniform(program, i2);\n var nm = u.name;\n var sz = u.size;\n var lb = webglGetLeftBracePos(nm);\n var arrayName = lb > 0 ? nm.slice(0, lb) : nm;\n var id = program.uniformIdCounter;\n program.uniformIdCounter += sz;\n uniformSizeAndIdsByName[arrayName] = [sz, id];\n for (j = 0; j < sz; ++j) {\n uniformLocsById[id] = j;\n program.uniformArrayNamesById[id++] = arrayName;\n }\n }\n }\n }\n function _emscripten_glGetUniformLocation(program, name) {\n name = UTF8ToString(name);\n if (program = GL.programs[program]) {\n webglPrepareUniformLocationsBeforeFirstUse(program);\n var uniformLocsById = program.uniformLocsById;\n var arrayIndex = 0;\n var uniformBaseName = name;\n var leftBrace = webglGetLeftBracePos(name);\n if (leftBrace > 0) {\n arrayIndex = jstoi_q(name.slice(leftBrace + 1)) >>> 0;\n uniformBaseName = name.slice(0, leftBrace);\n }\n var sizeAndId = program.uniformSizeAndIdsByName[uniformBaseName];\n if (sizeAndId && arrayIndex < sizeAndId[0]) {\n arrayIndex += sizeAndId[1];\n if (uniformLocsById[arrayIndex] = uniformLocsById[arrayIndex] || GLctx.getUniformLocation(program, name)) {\n return arrayIndex;\n }\n }\n } else {\n GL.recordError(1281);\n }\n return -1;\n }\n function _emscripten_glIsEnabled(x0) {\n return GLctx[\"isEnabled\"](x0);\n }\n function _emscripten_glIsTexture(id) {\n var texture = GL.textures[id];\n if (!texture)\n return 0;\n return GLctx.isTexture(texture);\n }\n function _emscripten_glLineWidth(x0) {\n GLctx[\"lineWidth\"](x0);\n }\n function _emscripten_glLinkProgram(program) {\n program = GL.programs[program];\n GLctx.linkProgram(program);\n program.uniformLocsById = 0;\n program.uniformSizeAndIdsByName = {};\n }\n function _emscripten_glPixelStorei(pname, param) {\n if (pname == 3317) {\n GL.unpackAlignment = param;\n }\n GLctx.pixelStorei(pname, param);\n }\n function computeUnpackAlignedImageSize(width, height, sizePerPixel, alignment) {\n function roundedToNextMultipleOf(x, y) {\n return x + y - 1 & -y;\n }\n var plainRowSize = width * sizePerPixel;\n var alignedRowSize = roundedToNextMultipleOf(plainRowSize, alignment);\n return height * alignedRowSize;\n }\n function __colorChannelsInGlTextureFormat(format) {\n var colorChannels = { 5: 3, 6: 4, 8: 2, 29502: 3, 29504: 4, 26917: 2, 26918: 2, 29846: 3, 29847: 4 };\n return colorChannels[format - 6402] || 1;\n }\n function heapObjectForWebGLType(type) {\n type -= 5120;\n if (type == 0)\n return HEAP8;\n if (type == 1)\n return HEAPU8;\n if (type == 2)\n return HEAP16;\n if (type == 4)\n return HEAP32;\n if (type == 6)\n return HEAPF32;\n if (type == 5 || type == 28922 || type == 28520 || type == 30779 || type == 30782)\n return HEAPU32;\n return HEAPU16;\n }\n function heapAccessShiftForWebGLHeap(heap) {\n return 31 - Math.clz32(heap.BYTES_PER_ELEMENT);\n }\n function emscriptenWebGLGetTexPixelData(type, format, width, height, pixels, internalFormat) {\n var heap = heapObjectForWebGLType(type);\n var shift = heapAccessShiftForWebGLHeap(heap);\n var byteSize = 1 << shift;\n var sizePerPixel = __colorChannelsInGlTextureFormat(format) * byteSize;\n var bytes = computeUnpackAlignedImageSize(width, height, sizePerPixel, GL.unpackAlignment);\n return heap.subarray(pixels >> shift, pixels + bytes >> shift);\n }\n function _emscripten_glReadPixels(x, y, width, height, format, type, pixels) {\n if (GL.currentContext.version >= 2) {\n if (GLctx.currentPixelPackBufferBinding) {\n GLctx.readPixels(x, y, width, height, format, type, pixels);\n } else {\n var heap = heapObjectForWebGLType(type);\n GLctx.readPixels(x, y, width, height, format, type, heap, pixels >> heapAccessShiftForWebGLHeap(heap));\n }\n return;\n }\n var pixelData = emscriptenWebGLGetTexPixelData(type, format, width, height, pixels);\n if (!pixelData) {\n GL.recordError(1280);\n return;\n }\n GLctx.readPixels(x, y, width, height, format, type, pixelData);\n }\n function _emscripten_glRenderbufferStorage(x0, x1, x2, x3) {\n GLctx[\"renderbufferStorage\"](x0, x1, x2, x3);\n }\n function _emscripten_glRenderbufferStorageMultisample(x0, x1, x2, x3, x4) {\n GLctx[\"renderbufferStorageMultisample\"](x0, x1, x2, x3, x4);\n }\n function _emscripten_glScissor(x0, x1, x2, x3) {\n GLctx[\"scissor\"](x0, x1, x2, x3);\n }\n function _emscripten_glShaderSource(shader, count, string, length) {\n var source = GL.getSource(shader, count, string, length);\n GLctx.shaderSource(GL.shaders[shader], source);\n }\n function _emscripten_glTexImage2D(target, level, internalFormat, width, height, border, format, type, pixels) {\n if (GL.currentContext.version >= 2) {\n if (GLctx.currentPixelUnpackBufferBinding) {\n GLctx.texImage2D(target, level, internalFormat, width, height, border, format, type, pixels);\n } else if (pixels) {\n var heap = heapObjectForWebGLType(type);\n GLctx.texImage2D(target, level, internalFormat, width, height, border, format, type, heap, pixels >> heapAccessShiftForWebGLHeap(heap));\n } else {\n GLctx.texImage2D(target, level, internalFormat, width, height, border, format, type, null);\n }\n return;\n }\n GLctx.texImage2D(target, level, internalFormat, width, height, border, format, type, pixels ? emscriptenWebGLGetTexPixelData(type, format, width, height, pixels) : null);\n }\n function _emscripten_glTexParameterf(x0, x1, x2) {\n GLctx[\"texParameterf\"](x0, x1, x2);\n }\n function _emscripten_glTexParameterfv(target, pname, params) {\n var param = HEAPF32[params >> 2];\n GLctx.texParameterf(target, pname, param);\n }\n function _emscripten_glTexParameteri(x0, x1, x2) {\n GLctx[\"texParameteri\"](x0, x1, x2);\n }\n function _emscripten_glTexParameteriv(target, pname, params) {\n var param = HEAP32[params >> 2];\n GLctx.texParameteri(target, pname, param);\n }\n function _emscripten_glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels) {\n if (GL.currentContext.version >= 2) {\n if (GLctx.currentPixelUnpackBufferBinding) {\n GLctx.texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels);\n } else if (pixels) {\n var heap = heapObjectForWebGLType(type);\n GLctx.texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, heap, pixels >> heapAccessShiftForWebGLHeap(heap));\n } else {\n GLctx.texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, null);\n }\n return;\n }\n var pixelData = null;\n if (pixels)\n pixelData = emscriptenWebGLGetTexPixelData(type, format, width, height, pixels);\n GLctx.texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixelData);\n }\n function webglGetUniformLocation(location) {\n var p = GLctx.currentProgram;\n if (p) {\n var webglLoc = p.uniformLocsById[location];\n if (typeof webglLoc == \"number\") {\n p.uniformLocsById[location] = webglLoc = GLctx.getUniformLocation(p, p.uniformArrayNamesById[location] + (webglLoc > 0 ? \"[\" + webglLoc + \"]\" : \"\"));\n }\n return webglLoc;\n } else {\n GL.recordError(1282);\n }\n }\n function _emscripten_glUniform1f(location, v0) {\n GLctx.uniform1f(webglGetUniformLocation(location), v0);\n }\n var miniTempWebGLFloatBuffers = [];\n function _emscripten_glUniform1fv(location, count, value) {\n if (GL.currentContext.version >= 2) {\n count && GLctx.uniform1fv(webglGetUniformLocation(location), HEAPF32, value >> 2, count);\n return;\n }\n if (count <= 288) {\n var view = miniTempWebGLFloatBuffers[count - 1];\n for (var i2 = 0; i2 < count; ++i2) {\n view[i2] = HEAPF32[value + 4 * i2 >> 2];\n }\n } else {\n var view = HEAPF32.subarray(value >> 2, value + count * 4 >> 2);\n }\n GLctx.uniform1fv(webglGetUniformLocation(location), view);\n }\n function _emscripten_glUniform1i(location, v0) {\n GLctx.uniform1i(webglGetUniformLocation(location), v0);\n }\n var __miniTempWebGLIntBuffers = [];\n function _emscripten_glUniform1iv(location, count, value) {\n if (GL.currentContext.version >= 2) {\n count && GLctx.uniform1iv(webglGetUniformLocation(location), HEAP32, value >> 2, count);\n return;\n }\n if (count <= 288) {\n var view = __miniTempWebGLIntBuffers[count - 1];\n for (var i2 = 0; i2 < count; ++i2) {\n view[i2] = HEAP32[value + 4 * i2 >> 2];\n }\n } else {\n var view = HEAP32.subarray(value >> 2, value + count * 4 >> 2);\n }\n GLctx.uniform1iv(webglGetUniformLocation(location), view);\n }\n function _emscripten_glUniform2f(location, v0, v1) {\n GLctx.uniform2f(webglGetUniformLocation(location), v0, v1);\n }\n function _emscripten_glUniform2fv(location, count, value) {\n if (GL.currentContext.version >= 2) {\n count && GLctx.uniform2fv(webglGetUniformLocation(location), HEAPF32, value >> 2, count * 2);\n return;\n }\n if (count <= 144) {\n var view = miniTempWebGLFloatBuffers[2 * count - 1];\n for (var i2 = 0; i2 < 2 * count; i2 += 2) {\n view[i2] = HEAPF32[value + 4 * i2 >> 2];\n view[i2 + 1] = HEAPF32[value + (4 * i2 + 4) >> 2];\n }\n } else {\n var view = HEAPF32.subarray(value >> 2, value + count * 8 >> 2);\n }\n GLctx.uniform2fv(webglGetUniformLocation(location), view);\n }\n function _emscripten_glUniform2i(location, v0, v1) {\n GLctx.uniform2i(webglGetUniformLocation(location), v0, v1);\n }\n function _emscripten_glUniform2iv(location, count, value) {\n if (GL.currentContext.version >= 2) {\n count && GLctx.uniform2iv(webglGetUniformLocation(location), HEAP32, value >> 2, count * 2);\n return;\n }\n if (count <= 144) {\n var view = __miniTempWebGLIntBuffers[2 * count - 1];\n for (var i2 = 0; i2 < 2 * count; i2 += 2) {\n view[i2] = HEAP32[value + 4 * i2 >> 2];\n view[i2 + 1] = HEAP32[value + (4 * i2 + 4) >> 2];\n }\n } else {\n var view = HEAP32.subarray(value >> 2, value + count * 8 >> 2);\n }\n GLctx.uniform2iv(webglGetUniformLocation(location), view);\n }\n function _emscripten_glUniform3f(location, v0, v1, v2) {\n GLctx.uniform3f(webglGetUniformLocation(location), v0, v1, v2);\n }\n function _emscripten_glUniform3fv(location, count, value) {\n if (GL.currentContext.version >= 2) {\n count && GLctx.uniform3fv(webglGetUniformLocation(location), HEAPF32, value >> 2, count * 3);\n return;\n }\n if (count <= 96) {\n var view = miniTempWebGLFloatBuffers[3 * count - 1];\n for (var i2 = 0; i2 < 3 * count; i2 += 3) {\n view[i2] = HEAPF32[value + 4 * i2 >> 2];\n view[i2 + 1] = HEAPF32[value + (4 * i2 + 4) >> 2];\n view[i2 + 2] = HEAPF32[value + (4 * i2 + 8) >> 2];\n }\n } else {\n var view = HEAPF32.subarray(value >> 2, value + count * 12 >> 2);\n }\n GLctx.uniform3fv(webglGetUniformLocation(location), view);\n }\n function _emscripten_glUniform3i(location, v0, v1, v2) {\n GLctx.uniform3i(webglGetUniformLocation(location), v0, v1, v2);\n }\n function _emscripten_glUniform3iv(location, count, value) {\n if (GL.currentContext.version >= 2) {\n count && GLctx.uniform3iv(webglGetUniformLocation(location), HEAP32, value >> 2, count * 3);\n return;\n }\n if (count <= 96) {\n var view = __miniTempWebGLIntBuffers[3 * count - 1];\n for (var i2 = 0; i2 < 3 * count; i2 += 3) {\n view[i2] = HEAP32[value + 4 * i2 >> 2];\n view[i2 + 1] = HEAP32[value + (4 * i2 + 4) >> 2];\n view[i2 + 2] = HEAP32[value + (4 * i2 + 8) >> 2];\n }\n } else {\n var view = HEAP32.subarray(value >> 2, value + count * 12 >> 2);\n }\n GLctx.uniform3iv(webglGetUniformLocation(location), view);\n }\n function _emscripten_glUniform4f(location, v0, v1, v2, v3) {\n GLctx.uniform4f(webglGetUniformLocation(location), v0, v1, v2, v3);\n }\n function _emscripten_glUniform4fv(location, count, value) {\n if (GL.currentContext.version >= 2) {\n count && GLctx.uniform4fv(webglGetUniformLocation(location), HEAPF32, value >> 2, count * 4);\n return;\n }\n if (count <= 72) {\n var view = miniTempWebGLFloatBuffers[4 * count - 1];\n var heap = HEAPF32;\n value >>= 2;\n for (var i2 = 0; i2 < 4 * count; i2 += 4) {\n var dst = value + i2;\n view[i2] = heap[dst];\n view[i2 + 1] = heap[dst + 1];\n view[i2 + 2] = heap[dst + 2];\n view[i2 + 3] = heap[dst + 3];\n }\n } else {\n var view = HEAPF32.subarray(value >> 2, value + count * 16 >> 2);\n }\n GLctx.uniform4fv(webglGetUniformLocation(location), view);\n }\n function _emscripten_glUniform4i(location, v0, v1, v2, v3) {\n GLctx.uniform4i(webglGetUniformLocation(location), v0, v1, v2, v3);\n }\n function _emscripten_glUniform4iv(location, count, value) {\n if (GL.currentContext.version >= 2) {\n count && GLctx.uniform4iv(webglGetUniformLocation(location), HEAP32, value >> 2, count * 4);\n return;\n }\n if (count <= 72) {\n var view = __miniTempWebGLIntBuffers[4 * count - 1];\n for (var i2 = 0; i2 < 4 * count; i2 += 4) {\n view[i2] = HEAP32[value + 4 * i2 >> 2];\n view[i2 + 1] = HEAP32[value + (4 * i2 + 4) >> 2];\n view[i2 + 2] = HEAP32[value + (4 * i2 + 8) >> 2];\n view[i2 + 3] = HEAP32[value + (4 * i2 + 12) >> 2];\n }\n } else {\n var view = HEAP32.subarray(value >> 2, value + count * 16 >> 2);\n }\n GLctx.uniform4iv(webglGetUniformLocation(location), view);\n }\n function _emscripten_glUniformMatrix2fv(location, count, transpose, value) {\n if (GL.currentContext.version >= 2) {\n count && GLctx.uniformMatrix2fv(webglGetUniformLocation(location), !!transpose, HEAPF32, value >> 2, count * 4);\n return;\n }\n if (count <= 72) {\n var view = miniTempWebGLFloatBuffers[4 * count - 1];\n for (var i2 = 0; i2 < 4 * count; i2 += 4) {\n view[i2] = HEAPF32[value + 4 * i2 >> 2];\n view[i2 + 1] = HEAPF32[value + (4 * i2 + 4) >> 2];\n view[i2 + 2] = HEAPF32[value + (4 * i2 + 8) >> 2];\n view[i2 + 3] = HEAPF32[value + (4 * i2 + 12) >> 2];\n }\n } else {\n var view = HEAPF32.subarray(value >> 2, value + count * 16 >> 2);\n }\n GLctx.uniformMatrix2fv(webglGetUniformLocation(location), !!transpose, view);\n }\n function _emscripten_glUniformMatrix3fv(location, count, transpose, value) {\n if (GL.currentContext.version >= 2) {\n count && GLctx.uniformMatrix3fv(webglGetUniformLocation(location), !!transpose, HEAPF32, value >> 2, count * 9);\n return;\n }\n if (count <= 32) {\n var view = miniTempWebGLFloatBuffers[9 * count - 1];\n for (var i2 = 0; i2 < 9 * count; i2 += 9) {\n view[i2] = HEAPF32[value + 4 * i2 >> 2];\n view[i2 + 1] = HEAPF32[value + (4 * i2 + 4) >> 2];\n view[i2 + 2] = HEAPF32[value + (4 * i2 + 8) >> 2];\n view[i2 + 3] = HEAPF32[value + (4 * i2 + 12) >> 2];\n view[i2 + 4] = HEAPF32[value + (4 * i2 + 16) >> 2];\n view[i2 + 5] = HEAPF32[value + (4 * i2 + 20) >> 2];\n view[i2 + 6] = HEAPF32[value + (4 * i2 + 24) >> 2];\n view[i2 + 7] = HEAPF32[value + (4 * i2 + 28) >> 2];\n view[i2 + 8] = HEAPF32[value + (4 * i2 + 32) >> 2];\n }\n } else {\n var view = HEAPF32.subarray(value >> 2, value + count * 36 >> 2);\n }\n GLctx.uniformMatrix3fv(webglGetUniformLocation(location), !!transpose, view);\n }\n function _emscripten_glUniformMatrix4fv(location, count, transpose, value) {\n if (GL.currentContext.version >= 2) {\n count && GLctx.uniformMatrix4fv(webglGetUniformLocation(location), !!transpose, HEAPF32, value >> 2, count * 16);\n return;\n }\n if (count <= 18) {\n var view = miniTempWebGLFloatBuffers[16 * count - 1];\n var heap = HEAPF32;\n value >>= 2;\n for (var i2 = 0; i2 < 16 * count; i2 += 16) {\n var dst = value + i2;\n view[i2] = heap[dst];\n view[i2 + 1] = heap[dst + 1];\n view[i2 + 2] = heap[dst + 2];\n view[i2 + 3] = heap[dst + 3];\n view[i2 + 4] = heap[dst + 4];\n view[i2 + 5] = heap[dst + 5];\n view[i2 + 6] = heap[dst + 6];\n view[i2 + 7] = heap[dst + 7];\n view[i2 + 8] = heap[dst + 8];\n view[i2 + 9] = heap[dst + 9];\n view[i2 + 10] = heap[dst + 10];\n view[i2 + 11] = heap[dst + 11];\n view[i2 + 12] = heap[dst + 12];\n view[i2 + 13] = heap[dst + 13];\n view[i2 + 14] = heap[dst + 14];\n view[i2 + 15] = heap[dst + 15];\n }\n } else {\n var view = HEAPF32.subarray(value >> 2, value + count * 64 >> 2);\n }\n GLctx.uniformMatrix4fv(webglGetUniformLocation(location), !!transpose, view);\n }\n function _emscripten_glUseProgram(program) {\n program = GL.programs[program];\n GLctx.useProgram(program);\n GLctx.currentProgram = program;\n }\n function _emscripten_glVertexAttrib1f(x0, x1) {\n GLctx[\"vertexAttrib1f\"](x0, x1);\n }\n function _emscripten_glVertexAttrib2fv(index, v) {\n GLctx.vertexAttrib2f(index, HEAPF32[v >> 2], HEAPF32[v + 4 >> 2]);\n }\n function _emscripten_glVertexAttrib3fv(index, v) {\n GLctx.vertexAttrib3f(index, HEAPF32[v >> 2], HEAPF32[v + 4 >> 2], HEAPF32[v + 8 >> 2]);\n }\n function _emscripten_glVertexAttrib4fv(index, v) {\n GLctx.vertexAttrib4f(index, HEAPF32[v >> 2], HEAPF32[v + 4 >> 2], HEAPF32[v + 8 >> 2], HEAPF32[v + 12 >> 2]);\n }\n function _emscripten_glVertexAttribPointer(index, size, type, normalized, stride, ptr) {\n GLctx.vertexAttribPointer(index, size, type, !!normalized, stride, ptr);\n }\n function _emscripten_glViewport(x0, x1, x2, x3) {\n GLctx[\"viewport\"](x0, x1, x2, x3);\n }\n function convertI32PairToI53(lo, hi) {\n return (lo >>> 0) + hi * 4294967296;\n }\n function _emscripten_glWaitSync(sync, flags, timeoutLo, timeoutHi) {\n GLctx.waitSync(GL.syncs[sync], flags, convertI32PairToI53(timeoutLo, timeoutHi));\n }\n function getHeapMax() {\n return 2147483648;\n }\n function emscripten_realloc_buffer(size) {\n try {\n wasmMemory.grow(size - buffer.byteLength + 65535 >>> 16);\n updateGlobalBufferAndViews(wasmMemory.buffer);\n return 1;\n } catch (e) {\n }\n }\n function _emscripten_resize_heap(requestedSize) {\n var oldSize = HEAPU8.length;\n requestedSize = requestedSize >>> 0;\n var maxHeapSize = getHeapMax();\n if (requestedSize > maxHeapSize) {\n return false;\n }\n let alignUp = (x, multiple) => x + (multiple - x % multiple) % multiple;\n for (var cutDown = 1; cutDown <= 4; cutDown *= 2) {\n var overGrownHeapSize = oldSize * (1 + 0.2 / cutDown);\n overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);\n var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536));\n var replacement = emscripten_realloc_buffer(newSize);\n if (replacement) {\n return true;\n }\n }\n return false;\n }\n var __emscripten_webgl_power_preferences = [\"default\", \"low-power\", \"high-performance\"];\n function _emscripten_webgl_do_create_context(target, attributes) {\n var a = attributes >> 2;\n var powerPreference = HEAP32[a + (24 >> 2)];\n var contextAttributes = { \"alpha\": !!HEAP32[a + (0 >> 2)], \"depth\": !!HEAP32[a + (4 >> 2)], \"stencil\": !!HEAP32[a + (8 >> 2)], \"antialias\": !!HEAP32[a + (12 >> 2)], \"premultipliedAlpha\": !!HEAP32[a + (16 >> 2)], \"preserveDrawingBuffer\": !!HEAP32[a + (20 >> 2)], \"powerPreference\": __emscripten_webgl_power_preferences[powerPreference], \"failIfMajorPerformanceCaveat\": !!HEAP32[a + (28 >> 2)], majorVersion: HEAP32[a + (32 >> 2)], minorVersion: HEAP32[a + (36 >> 2)], enableExtensionsByDefault: HEAP32[a + (40 >> 2)], explicitSwapControl: HEAP32[a + (44 >> 2)], proxyContextToMainThread: HEAP32[a + (48 >> 2)], renderViaOffscreenBackBuffer: HEAP32[a + (52 >> 2)] };\n var canvas = findCanvasEventTarget(target);\n if (!canvas) {\n return 0;\n }\n if (contextAttributes.explicitSwapControl) {\n return 0;\n }\n var contextHandle = GL.createContext(canvas, contextAttributes);\n return contextHandle;\n }\n var _emscripten_webgl_create_context = _emscripten_webgl_do_create_context;\n function _emscripten_webgl_destroy_context(contextHandle) {\n if (GL.currentContext == contextHandle)\n GL.currentContext = 0;\n GL.deleteContext(contextHandle);\n }\n function _emscripten_webgl_do_get_current_context() {\n return GL.currentContext ? GL.currentContext.handle : 0;\n }\n var _emscripten_webgl_get_current_context = _emscripten_webgl_do_get_current_context;\n function _emscripten_webgl_init_context_attributes(attributes) {\n var a = attributes >> 2;\n for (var i2 = 0; i2 < 56 >> 2; ++i2) {\n HEAP32[a + i2] = 0;\n }\n HEAP32[a + (0 >> 2)] = HEAP32[a + (4 >> 2)] = HEAP32[a + (12 >> 2)] = HEAP32[a + (16 >> 2)] = HEAP32[a + (32 >> 2)] = HEAP32[a + (40 >> 2)] = 1;\n }\n function _emscripten_webgl_make_context_current(contextHandle) {\n var success = GL.makeContextCurrent(contextHandle);\n return success ? 0 : -5;\n }\n function _fd_close(fd) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.close(stream);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e instanceof FS.ErrnoError))\n throw e;\n return e.errno;\n }\n }\n function doReadv(stream, iov, iovcnt, offset) {\n var ret = 0;\n for (var i2 = 0; i2 < iovcnt; i2++) {\n var ptr = HEAPU32[iov >> 2];\n var len = HEAPU32[iov + 4 >> 2];\n iov += 8;\n var curr = FS.read(stream, HEAP8, ptr, len, offset);\n if (curr < 0)\n return -1;\n ret += curr;\n if (curr < len)\n break;\n }\n return ret;\n }\n function _fd_read(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doReadv(stream, iov, iovcnt);\n HEAPU32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e instanceof FS.ErrnoError))\n throw e;\n return e.errno;\n }\n }\n function convertI32PairToI53Checked(lo, hi) {\n return hi + 2097152 >>> 0 < 4194305 - !!lo ? (lo >>> 0) + hi * 4294967296 : NaN;\n }\n function _fd_seek(fd, offset_low, offset_high, whence, newOffset) {\n try {\n var offset = convertI32PairToI53Checked(offset_low, offset_high);\n if (isNaN(offset))\n return 61;\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.llseek(stream, offset, whence);\n tempI64 = [stream.position >>> 0, (tempDouble = stream.position, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[newOffset >> 2] = tempI64[0], HEAP32[newOffset + 4 >> 2] = tempI64[1];\n if (stream.getdents && offset === 0 && whence === 0)\n stream.getdents = null;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e instanceof FS.ErrnoError))\n throw e;\n return e.errno;\n }\n }\n function doWritev(stream, iov, iovcnt, offset) {\n var ret = 0;\n for (var i2 = 0; i2 < iovcnt; i2++) {\n var ptr = HEAPU32[iov >> 2];\n var len = HEAPU32[iov + 4 >> 2];\n iov += 8;\n var curr = FS.write(stream, HEAP8, ptr, len, offset);\n if (curr < 0)\n return -1;\n ret += curr;\n }\n return ret;\n }\n function _fd_write(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doWritev(stream, iov, iovcnt);\n HEAPU32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e instanceof FS.ErrnoError))\n throw e;\n return e.errno;\n }\n }\n var FSNode = function(parent, name, mode, rdev) {\n if (!parent) {\n parent = this;\n }\n this.parent = parent;\n this.mount = parent.mount;\n this.mounted = null;\n this.id = FS.nextInode++;\n this.name = name;\n this.mode = mode;\n this.node_ops = {};\n this.stream_ops = {};\n this.rdev = rdev;\n };\n var readMode = 292 | 73;\n var writeMode = 146;\n Object.defineProperties(FSNode.prototype, { read: { get: function() {\n return (this.mode & readMode) === readMode;\n }, set: function(val) {\n val ? this.mode |= readMode : this.mode &= ~readMode;\n } }, write: { get: function() {\n return (this.mode & writeMode) === writeMode;\n }, set: function(val) {\n val ? this.mode |= writeMode : this.mode &= ~writeMode;\n } }, isFolder: { get: function() {\n return FS.isDir(this.mode);\n } }, isDevice: { get: function() {\n return FS.isChrdev(this.mode);\n } } });\n FS.FSNode = FSNode;\n FS.staticInit();\n InternalError = Module[\"InternalError\"] = extendError(Error, \"InternalError\");\n embind_init_charCodes();\n BindingError = Module[\"BindingError\"] = extendError(Error, \"BindingError\");\n init_ClassHandle();\n init_embind();\n init_RegisteredPointer();\n UnboundTypeError = Module[\"UnboundTypeError\"] = extendError(Error, \"UnboundTypeError\");\n init_emval();\n var GLctx;\n var miniTempWebGLFloatBuffersStorage = new Float32Array(288);\n for (var i = 0; i < 288; ++i) {\n miniTempWebGLFloatBuffers[i] = miniTempWebGLFloatBuffersStorage.subarray(0, i + 1);\n }\n var __miniTempWebGLIntBuffersStorage = new Int32Array(288);\n for (var i = 0; i < 288; ++i) {\n __miniTempWebGLIntBuffers[i] = __miniTempWebGLIntBuffersStorage.subarray(0, i + 1);\n }\n var asmLibraryArg = { \"d\": ___assert_fail, \"A\": ___cxa_allocate_exception, \"z\": ___cxa_throw, \"G\": ___syscall_fcntl64, \"fb\": ___syscall_ioctl, \"hb\": ___syscall_openat, \"o\": __embind_finalize_value_object, \"ab\": __embind_register_bigint, \"jb\": __embind_register_bool, \"f\": __embind_register_class, \"e\": __embind_register_class_class_function, \"r\": __embind_register_class_constructor, \"a\": __embind_register_class_function, \"b\": __embind_register_class_property, \"ib\": __embind_register_emval, \"u\": __embind_register_enum, \"Za\": __embind_register_enum_value, \"I\": __embind_register_float, \"D\": __embind_register_function, \"m\": __embind_register_integer, \"h\": __embind_register_memory_view, \"j\": __embind_register_smart_ptr, \"H\": __embind_register_std_string, \"w\": __embind_register_std_wstring, \"p\": __embind_register_value_object, \"v\": __embind_register_value_object_field, \"kb\": __embind_register_void, \"bb\": __emscripten_get_now_is_monotonic, \"x\": __emval_as, \"U\": __emval_await, \"gb\": __emval_call, \"g\": __emval_call_method, \"k\": __emval_call_void_method, \"t\": __emval_decref, \"Wa\": __emval_equals, \"ob\": __emval_get_global, \"c\": __emval_get_method_caller, \"_a\": __emval_get_module_property, \"J\": __emval_get_property, \"y\": __emval_incref, \"mb\": __emval_instanceof, \"nb\": __emval_new, \"Ya\": __emval_new_array, \"lb\": __emval_new_cstring, \"Xa\": __emval_new_object, \"xa\": __emval_run_destructors, \"s\": __emval_set_property, \"l\": __emval_take_value, \"q\": _abort, \"B\": _emscripten_get_canvas_element_size, \"db\": _emscripten_get_now, \"Ta\": _emscripten_glActiveTexture, \"Sa\": _emscripten_glAttachShader, \"Qa\": _emscripten_glBindAttribLocation, \"Pa\": _emscripten_glBindBuffer, \"Oa\": _emscripten_glBindFramebuffer, \"Na\": _emscripten_glBindRenderbuffer, \"Ma\": _emscripten_glBindTexture, \"zb\": _emscripten_glBindVertexArray, \"wb\": _emscripten_glBindVertexArrayOES, \"La\": _emscripten_glBlendColor, \"Ka\": _emscripten_glBlendEquation, \"Ab\": _emscripten_glBlendEquationSeparate, \"Ja\": _emscripten_glBlendFunc, \"rb\": _emscripten_glBlitFramebuffer, \"Ia\": _emscripten_glBufferData, \"Ha\": _emscripten_glCheckFramebufferStatus, \"Ga\": _emscripten_glClear, \"Fa\": _emscripten_glClearColor, \"Ea\": _emscripten_glClearStencil, \"Da\": _emscripten_glColorMask, \"Ca\": _emscripten_glCompileShader, \"Ba\": _emscripten_glCopyTexSubImage2D, \"Aa\": _emscripten_glCreateProgram, \"za\": _emscripten_glCreateShader, \"ya\": _emscripten_glDeleteBuffers, \"wa\": _emscripten_glDeleteFramebuffers, \"va\": _emscripten_glDeleteProgram, \"ua\": _emscripten_glDeleteRenderbuffers, \"ta\": _emscripten_glDeleteShader, \"sb\": _emscripten_glDeleteSync, \"sa\": _emscripten_glDeleteTextures, \"yb\": _emscripten_glDeleteVertexArrays, \"vb\": _emscripten_glDeleteVertexArraysOES, \"ra\": _emscripten_glDepthMask, \"qa\": _emscripten_glDisable, \"pa\": _emscripten_glDisableVertexAttribArray, \"oa\": _emscripten_glDrawArrays, \"na\": _emscripten_glDrawElements, \"ma\": _emscripten_glEnable, \"la\": _emscripten_glEnableVertexAttribArray, \"tb\": _emscripten_glFenceSync, \"ka\": _emscripten_glFinish, \"ja\": _emscripten_glFlush, \"ia\": _emscripten_glFramebufferRenderbuffer, \"ha\": _emscripten_glFramebufferTexture2D, \"ga\": _emscripten_glGenBuffers, \"fa\": _emscripten_glGenFramebuffers, \"ea\": _emscripten_glGenRenderbuffers, \"da\": _emscripten_glGenTextures, \"xb\": _emscripten_glGenVertexArrays, \"ub\": _emscripten_glGenVertexArraysOES, \"Bb\": _emscripten_glGetAttribLocation, \"ca\": _emscripten_glGetBufferParameteriv, \"ba\": _emscripten_glGetError, \"aa\": _emscripten_glGetFramebufferAttachmentParameteriv, \"$\": _emscripten_glGetIntegerv, \"_\": _emscripten_glGetProgramInfoLog, \"Z\": _emscripten_glGetProgramiv, \"Y\": _emscripten_glGetRenderbufferParameteriv, \"X\": _emscripten_glGetShaderInfoLog, \"W\": _emscripten_glGetShaderPrecisionFormat, \"V\": _emscripten_glGetShaderiv, \"T\": _emscripten_glGetString, \"S\": _emscripten_glGetStringi, \"R\": _emscripten_glGetUniformLocation, \"Ra\": _emscripten_glIsEnabled, \"Q\": _emscripten_glIsTexture, \"P\": _emscripten_glLineWidth, \"O\": _emscripten_glLinkProgram, \"N\": _emscripten_glPixelStorei, \"M\": _emscripten_glReadPixels, \"L\": _emscripten_glRenderbufferStorage, \"qb\": _emscripten_glRenderbufferStorageMultisample, \"K\": _emscripten_glScissor, \"gc\": _emscripten_glShaderSource, \"fc\": _emscripten_glTexImage2D, \"ec\": _emscripten_glTexParameterf, \"dc\": _emscripten_glTexParameterfv, \"cc\": _emscripten_glTexParameteri, \"bc\": _emscripten_glTexParameteriv, \"ac\": _emscripten_glTexSubImage2D, \"$b\": _emscripten_glUniform1f, \"_b\": _emscripten_glUniform1fv, \"Zb\": _emscripten_glUniform1i, \"Yb\": _emscripten_glUniform1iv, \"Xb\": _emscripten_glUniform2f, \"Wb\": _emscripten_glUniform2fv, \"Vb\": _emscripten_glUniform2i, \"Ub\": _emscripten_glUniform2iv, \"Tb\": _emscripten_glUniform3f, \"Sb\": _emscripten_glUniform3fv, \"Rb\": _emscripten_glUniform3i, \"Qb\": _emscripten_glUniform3iv, \"Pb\": _emscripten_glUniform4f, \"Ob\": _emscripten_glUniform4fv, \"Nb\": _emscripten_glUniform4i, \"Mb\": _emscripten_glUniform4iv, \"Lb\": _emscripten_glUniformMatrix2fv, \"Kb\": _emscripten_glUniformMatrix3fv, \"Jb\": _emscripten_glUniformMatrix4fv, \"Ib\": _emscripten_glUseProgram, \"Hb\": _emscripten_glVertexAttrib1f, \"Gb\": _emscripten_glVertexAttrib2fv, \"Fb\": _emscripten_glVertexAttrib3fv, \"Eb\": _emscripten_glVertexAttrib4fv, \"Db\": _emscripten_glVertexAttribPointer, \"Cb\": _emscripten_glViewport, \"pb\": _emscripten_glWaitSync, \"cb\": _emscripten_resize_heap, \"Ua\": _emscripten_webgl_create_context, \"C\": _emscripten_webgl_destroy_context, \"n\": _emscripten_webgl_get_current_context, \"Va\": _emscripten_webgl_init_context_attributes, \"i\": _emscripten_webgl_make_context_current, \"E\": _fd_close, \"eb\": _fd_read, \"$a\": _fd_seek, \"F\": _fd_write };\n createWasm();\n Module[\"___wasm_call_ctors\"] = function() {\n return (Module[\"___wasm_call_ctors\"] = Module[\"asm\"][\"ic\"]).apply(null, arguments);\n };\n var _free = Module[\"_free\"] = function() {\n return (_free = Module[\"_free\"] = Module[\"asm\"][\"kc\"]).apply(null, arguments);\n };\n var _malloc = Module[\"_malloc\"] = function() {\n return (_malloc = Module[\"_malloc\"] = Module[\"asm\"][\"lc\"]).apply(null, arguments);\n };\n var ___getTypeName = Module[\"___getTypeName\"] = function() {\n return (___getTypeName = Module[\"___getTypeName\"] = Module[\"asm\"][\"mc\"]).apply(null, arguments);\n };\n Module[\"__embind_initialize_bindings\"] = function() {\n return (Module[\"__embind_initialize_bindings\"] = Module[\"asm\"][\"nc\"]).apply(null, arguments);\n };\n var ___errno_location = Module[\"___errno_location\"] = function() {\n return (___errno_location = Module[\"___errno_location\"] = Module[\"asm\"][\"oc\"]).apply(null, arguments);\n };\n var ___cxa_is_pointer_type = Module[\"___cxa_is_pointer_type\"] = function() {\n return (___cxa_is_pointer_type = Module[\"___cxa_is_pointer_type\"] = Module[\"asm\"][\"pc\"]).apply(null, arguments);\n };\n Module[\"dynCall_ii\"] = function() {\n return (Module[\"dynCall_ii\"] = Module[\"asm\"][\"qc\"]).apply(null, arguments);\n };\n Module[\"dynCall_vi\"] = function() {\n return (Module[\"dynCall_vi\"] = Module[\"asm\"][\"rc\"]).apply(null, arguments);\n };\n Module[\"dynCall_ji\"] = function() {\n return (Module[\"dynCall_ji\"] = Module[\"asm\"][\"sc\"]).apply(null, arguments);\n };\n Module[\"dynCall_iii\"] = function() {\n return (Module[\"dynCall_iii\"] = Module[\"asm\"][\"tc\"]).apply(null, arguments);\n };\n Module[\"dynCall_iij\"] = function() {\n return (Module[\"dynCall_iij\"] = Module[\"asm\"][\"uc\"]).apply(null, arguments);\n };\n Module[\"dynCall_viiij\"] = function() {\n return (Module[\"dynCall_viiij\"] = Module[\"asm\"][\"vc\"]).apply(null, arguments);\n };\n Module[\"dynCall_viii\"] = function() {\n return (Module[\"dynCall_viii\"] = Module[\"asm\"][\"wc\"]).apply(null, arguments);\n };\n Module[\"dynCall_vii\"] = function() {\n return (Module[\"dynCall_vii\"] = Module[\"asm\"][\"xc\"]).apply(null, arguments);\n };\n Module[\"dynCall_v\"] = function() {\n return (Module[\"dynCall_v\"] = Module[\"asm\"][\"yc\"]).apply(null, arguments);\n };\n Module[\"dynCall_viij\"] = function() {\n return (Module[\"dynCall_viij\"] = Module[\"asm\"][\"zc\"]).apply(null, arguments);\n };\n Module[\"dynCall_fij\"] = function() {\n return (Module[\"dynCall_fij\"] = Module[\"asm\"][\"Ac\"]).apply(null, arguments);\n };\n Module[\"dynCall_viiii\"] = function() {\n return (Module[\"dynCall_viiii\"] = Module[\"asm\"][\"Bc\"]).apply(null, arguments);\n };\n Module[\"dynCall_fii\"] = function() {\n return (Module[\"dynCall_fii\"] = Module[\"asm\"][\"Cc\"]).apply(null, arguments);\n };\n Module[\"dynCall_fif\"] = function() {\n return (Module[\"dynCall_fif\"] = Module[\"asm\"][\"Dc\"]).apply(null, arguments);\n };\n Module[\"dynCall_iiiff\"] = function() {\n return (Module[\"dynCall_iiiff\"] = Module[\"asm\"][\"Ec\"]).apply(null, arguments);\n };\n Module[\"dynCall_vijiii\"] = function() {\n return (Module[\"dynCall_vijiii\"] = Module[\"asm\"][\"Fc\"]).apply(null, arguments);\n };\n Module[\"dynCall_viiiii\"] = function() {\n return (Module[\"dynCall_viiiii\"] = Module[\"asm\"][\"Gc\"]).apply(null, arguments);\n };\n Module[\"dynCall_iiiiii\"] = function() {\n return (Module[\"dynCall_iiiiii\"] = Module[\"asm\"][\"Hc\"]).apply(null, arguments);\n };\n Module[\"dynCall_iiii\"] = function() {\n return (Module[\"dynCall_iiii\"] = Module[\"asm\"][\"Ic\"]).apply(null, arguments);\n };\n Module[\"dynCall_vij\"] = function() {\n return (Module[\"dynCall_vij\"] = Module[\"asm\"][\"Jc\"]).apply(null, arguments);\n };\n Module[\"dynCall_iiiiiii\"] = function() {\n return (Module[\"dynCall_iiiiiii\"] = Module[\"asm\"][\"Kc\"]).apply(null, arguments);\n };\n Module[\"dynCall_viiff\"] = function() {\n return (Module[\"dynCall_viiff\"] = Module[\"asm\"][\"Lc\"]).apply(null, arguments);\n };\n Module[\"dynCall_iiij\"] = function() {\n return (Module[\"dynCall_iiij\"] = Module[\"asm\"][\"Mc\"]).apply(null, arguments);\n };\n Module[\"dynCall_iiiii\"] = function() {\n return (Module[\"dynCall_iiiii\"] = Module[\"asm\"][\"Nc\"]).apply(null, arguments);\n };\n Module[\"dynCall_viif\"] = function() {\n return (Module[\"dynCall_viif\"] = Module[\"asm\"][\"Oc\"]).apply(null, arguments);\n };\n Module[\"dynCall_viiffff\"] = function() {\n return (Module[\"dynCall_viiffff\"] = Module[\"asm\"][\"Pc\"]).apply(null, arguments);\n };\n Module[\"dynCall_iiifii\"] = function() {\n return (Module[\"dynCall_iiifii\"] = Module[\"asm\"][\"Qc\"]).apply(null, arguments);\n };\n Module[\"dynCall_iiiffii\"] = function() {\n return (Module[\"dynCall_iiiffii\"] = Module[\"asm\"][\"Rc\"]).apply(null, arguments);\n };\n Module[\"dynCall_iiiij\"] = function() {\n return (Module[\"dynCall_iiiij\"] = Module[\"asm\"][\"Sc\"]).apply(null, arguments);\n };\n Module[\"dynCall_viiiiii\"] = function() {\n return (Module[\"dynCall_viiiiii\"] = Module[\"asm\"][\"Tc\"]).apply(null, arguments);\n };\n Module[\"dynCall_iiiiiiii\"] = function() {\n return (Module[\"dynCall_iiiiiiii\"] = Module[\"asm\"][\"Uc\"]).apply(null, arguments);\n };\n Module[\"dynCall_jii\"] = function() {\n return (Module[\"dynCall_jii\"] = Module[\"asm\"][\"Vc\"]).apply(null, arguments);\n };\n Module[\"dynCall_jij\"] = function() {\n return (Module[\"dynCall_jij\"] = Module[\"asm\"][\"Wc\"]).apply(null, arguments);\n };\n Module[\"dynCall_fi\"] = function() {\n return (Module[\"dynCall_fi\"] = Module[\"asm\"][\"Xc\"]).apply(null, arguments);\n };\n Module[\"dynCall_jijf\"] = function() {\n return (Module[\"dynCall_jijf\"] = Module[\"asm\"][\"Yc\"]).apply(null, arguments);\n };\n Module[\"dynCall_i\"] = function() {\n return (Module[\"dynCall_i\"] = Module[\"asm\"][\"Zc\"]).apply(null, arguments);\n };\n Module[\"dynCall_vif\"] = function() {\n return (Module[\"dynCall_vif\"] = Module[\"asm\"][\"_c\"]).apply(null, arguments);\n };\n Module[\"dynCall_di\"] = function() {\n return (Module[\"dynCall_di\"] = Module[\"asm\"][\"$c\"]).apply(null, arguments);\n };\n Module[\"dynCall_vid\"] = function() {\n return (Module[\"dynCall_vid\"] = Module[\"asm\"][\"ad\"]).apply(null, arguments);\n };\n Module[\"dynCall_iiiifii\"] = function() {\n return (Module[\"dynCall_iiiifii\"] = Module[\"asm\"][\"bd\"]).apply(null, arguments);\n };\n Module[\"dynCall_iiiffi\"] = function() {\n return (Module[\"dynCall_iiiffi\"] = Module[\"asm\"][\"cd\"]).apply(null, arguments);\n };\n Module[\"dynCall_vifffffffff\"] = function() {\n return (Module[\"dynCall_vifffffffff\"] = Module[\"asm\"][\"dd\"]).apply(null, arguments);\n };\n Module[\"dynCall_iifffffffff\"] = function() {\n return (Module[\"dynCall_iifffffffff\"] = Module[\"asm\"][\"ed\"]).apply(null, arguments);\n };\n Module[\"dynCall_iiff\"] = function() {\n return (Module[\"dynCall_iiff\"] = Module[\"asm\"][\"fd\"]).apply(null, arguments);\n };\n Module[\"dynCall_iif\"] = function() {\n return (Module[\"dynCall_iif\"] = Module[\"asm\"][\"gd\"]).apply(null, arguments);\n };\n Module[\"dynCall_viff\"] = function() {\n return (Module[\"dynCall_viff\"] = Module[\"asm\"][\"hd\"]).apply(null, arguments);\n };\n Module[\"dynCall_viffffff\"] = function() {\n return (Module[\"dynCall_viffffff\"] = Module[\"asm\"][\"id\"]).apply(null, arguments);\n };\n Module[\"dynCall_dii\"] = function() {\n return (Module[\"dynCall_dii\"] = Module[\"asm\"][\"jd\"]).apply(null, arguments);\n };\n Module[\"dynCall_viid\"] = function() {\n return (Module[\"dynCall_viid\"] = Module[\"asm\"][\"kd\"]).apply(null, arguments);\n };\n Module[\"dynCall_iiiiffi\"] = function() {\n return (Module[\"dynCall_iiiiffi\"] = Module[\"asm\"][\"ld\"]).apply(null, arguments);\n };\n Module[\"dynCall_fiii\"] = function() {\n return (Module[\"dynCall_fiii\"] = Module[\"asm\"][\"md\"]).apply(null, arguments);\n };\n Module[\"dynCall_viiif\"] = function() {\n return (Module[\"dynCall_viiif\"] = Module[\"asm\"][\"nd\"]).apply(null, arguments);\n };\n Module[\"dynCall_viifffffffff\"] = function() {\n return (Module[\"dynCall_viifffffffff\"] = Module[\"asm\"][\"od\"]).apply(null, arguments);\n };\n Module[\"dynCall_viiffffff\"] = function() {\n return (Module[\"dynCall_viiffffff\"] = Module[\"asm\"][\"pd\"]).apply(null, arguments);\n };\n Module[\"dynCall_viifff\"] = function() {\n return (Module[\"dynCall_viifff\"] = Module[\"asm\"][\"qd\"]).apply(null, arguments);\n };\n Module[\"dynCall_viiifii\"] = function() {\n return (Module[\"dynCall_viiifii\"] = Module[\"asm\"][\"rd\"]).apply(null, arguments);\n };\n Module[\"dynCall_viiiiiii\"] = function() {\n return (Module[\"dynCall_viiiiiii\"] = Module[\"asm\"][\"sd\"]).apply(null, arguments);\n };\n Module[\"dynCall_viffff\"] = function() {\n return (Module[\"dynCall_viffff\"] = Module[\"asm\"][\"td\"]).apply(null, arguments);\n };\n Module[\"dynCall_vifff\"] = function() {\n return (Module[\"dynCall_vifff\"] = Module[\"asm\"][\"ud\"]).apply(null, arguments);\n };\n Module[\"dynCall_iiffi\"] = function() {\n return (Module[\"dynCall_iiffi\"] = Module[\"asm\"][\"vd\"]).apply(null, arguments);\n };\n Module[\"dynCall_iifii\"] = function() {\n return (Module[\"dynCall_iifii\"] = Module[\"asm\"][\"wd\"]).apply(null, arguments);\n };\n Module[\"dynCall_iiifi\"] = function() {\n return (Module[\"dynCall_iiifi\"] = Module[\"asm\"][\"xd\"]).apply(null, arguments);\n };\n Module[\"dynCall_iiiiij\"] = function() {\n return (Module[\"dynCall_iiiiij\"] = Module[\"asm\"][\"yd\"]).apply(null, arguments);\n };\n Module[\"dynCall_iijj\"] = function() {\n return (Module[\"dynCall_iijj\"] = Module[\"asm\"][\"zd\"]).apply(null, arguments);\n };\n Module[\"dynCall_vffff\"] = function() {\n return (Module[\"dynCall_vffff\"] = Module[\"asm\"][\"Ad\"]).apply(null, arguments);\n };\n Module[\"dynCall_viiiiiiii\"] = function() {\n return (Module[\"dynCall_viiiiiiii\"] = Module[\"asm\"][\"Bd\"]).apply(null, arguments);\n };\n Module[\"dynCall_vf\"] = function() {\n return (Module[\"dynCall_vf\"] = Module[\"asm\"][\"Cd\"]).apply(null, arguments);\n };\n Module[\"dynCall_viiiiiiiii\"] = function() {\n return (Module[\"dynCall_viiiiiiiii\"] = Module[\"asm\"][\"Dd\"]).apply(null, arguments);\n };\n Module[\"dynCall_viiiiiiiiii\"] = function() {\n return (Module[\"dynCall_viiiiiiiiii\"] = Module[\"asm\"][\"Ed\"]).apply(null, arguments);\n };\n Module[\"dynCall_fiifiii\"] = function() {\n return (Module[\"dynCall_fiifiii\"] = Module[\"asm\"][\"Fd\"]).apply(null, arguments);\n };\n Module[\"dynCall_iiifiii\"] = function() {\n return (Module[\"dynCall_iiifiii\"] = Module[\"asm\"][\"Gd\"]).apply(null, arguments);\n };\n Module[\"dynCall_viiifiii\"] = function() {\n return (Module[\"dynCall_viiifiii\"] = Module[\"asm\"][\"Hd\"]).apply(null, arguments);\n };\n Module[\"dynCall_vifii\"] = function() {\n return (Module[\"dynCall_vifii\"] = Module[\"asm\"][\"Id\"]).apply(null, arguments);\n };\n Module[\"dynCall_viifd\"] = function() {\n return (Module[\"dynCall_viifd\"] = Module[\"asm\"][\"Jd\"]).apply(null, arguments);\n };\n Module[\"dynCall_viddi\"] = function() {\n return (Module[\"dynCall_viddi\"] = Module[\"asm\"][\"Kd\"]).apply(null, arguments);\n };\n Module[\"dynCall_viiiiiffii\"] = function() {\n return (Module[\"dynCall_viiiiiffii\"] = Module[\"asm\"][\"Ld\"]).apply(null, arguments);\n };\n Module[\"dynCall_jiiii\"] = function() {\n return (Module[\"dynCall_jiiii\"] = Module[\"asm\"][\"Md\"]).apply(null, arguments);\n };\n Module[\"dynCall_jiji\"] = function() {\n return (Module[\"dynCall_jiji\"] = Module[\"asm\"][\"Nd\"]).apply(null, arguments);\n };\n Module[\"dynCall_iidiiii\"] = function() {\n return (Module[\"dynCall_iidiiii\"] = Module[\"asm\"][\"Od\"]).apply(null, arguments);\n };\n var _asyncify_start_unwind = Module[\"_asyncify_start_unwind\"] = function() {\n return (_asyncify_start_unwind = Module[\"_asyncify_start_unwind\"] = Module[\"asm\"][\"Pd\"]).apply(null, arguments);\n };\n var _asyncify_stop_unwind = Module[\"_asyncify_stop_unwind\"] = function() {\n return (_asyncify_stop_unwind = Module[\"_asyncify_stop_unwind\"] = Module[\"asm\"][\"Qd\"]).apply(null, arguments);\n };\n var _asyncify_start_rewind = Module[\"_asyncify_start_rewind\"] = function() {\n return (_asyncify_start_rewind = Module[\"_asyncify_start_rewind\"] = Module[\"asm\"][\"Rd\"]).apply(null, arguments);\n };\n var _asyncify_stop_rewind = Module[\"_asyncify_stop_rewind\"] = function() {\n return (_asyncify_stop_rewind = Module[\"_asyncify_stop_rewind\"] = Module[\"asm\"][\"Sd\"]).apply(null, arguments);\n };\n Module[\"GL\"] = GL;\n Module[\"Asyncify\"] = Asyncify;\n var calledRun;\n dependenciesFulfilled = function runCaller() {\n if (!calledRun)\n run();\n if (!calledRun)\n dependenciesFulfilled = runCaller;\n };\n function run(args) {\n if (runDependencies > 0) {\n return;\n }\n preRun();\n if (runDependencies > 0) {\n return;\n }\n function doRun() {\n if (calledRun)\n return;\n calledRun = true;\n Module[\"calledRun\"] = true;\n if (ABORT)\n return;\n initRuntime();\n readyPromiseResolve(Module);\n if (Module[\"onRuntimeInitialized\"])\n Module[\"onRuntimeInitialized\"]();\n postRun();\n }\n if (Module[\"setStatus\"]) {\n Module[\"setStatus\"](\"Running...\");\n setTimeout(function() {\n setTimeout(function() {\n Module[\"setStatus\"](\"\");\n }, 1);\n doRun();\n }, 1);\n } else {\n doRun();\n }\n }\n if (Module[\"preInit\"]) {\n if (typeof Module[\"preInit\"] == \"function\")\n Module[\"preInit\"] = [Module[\"preInit\"]];\n while (Module[\"preInit\"].length > 0) {\n Module[\"preInit\"].pop()();\n }\n }\n run();\n return PAGInit2.ready;\n };\n })();\n\n class WebAssemblyQueue {\n constructor() {\n this.executing = false;\n this.queue = [];\n }\n exec(fn, scope, ...args) {\n return new Promise((resolve, reject) => {\n const copyFn = async () => {\n if (!fn) {\n reject(new Error(\"Function is null!\"));\n return;\n }\n try {\n const res = await fn.call(scope, ...args);\n resolve(res);\n } catch (e) {\n reject(e);\n }\n };\n this.queue.push({\n fn: copyFn\n });\n if (this.executing)\n return;\n this.execNextTask();\n });\n }\n execNextTask() {\n if (this.queue.length < 1) {\n this.executing = false;\n return;\n }\n this.executing = true;\n const task = this.queue.shift();\n task.fn().then(() => {\n this.execNextTask();\n });\n }\n }\n\n const pagFiles = [];\n const registerPAGFile = (pagFile) => {\n pagFiles.push(pagFile);\n return pagFiles.length - 1;\n };\n const deletePAGFile = (key) => {\n pagFiles[key] = null;\n };\n const pagViews = [];\n const registerPAGView = (pagView) => {\n pagViews.push(pagView);\n return pagViews.length - 1;\n };\n const deletePAGView = (key) => {\n pagViews[key] = null;\n };\n const pagImages = [];\n const registerPAGImage = (pagImage) => {\n pagImages.push(pagImage);\n return pagImages.length - 1;\n };\n const deletePAGImage = (key) => {\n pagImages[key] = null;\n };\n const textDataMap = [];\n const registerTextData = (textData) => {\n textDataMap.push(textData);\n return textDataMap.length - 1;\n };\n const deleteTextData = (key) => {\n textDataMap[key] = null;\n };\n const workerInit = (init) => {\n onmessage = async (event) => {\n const messageHandles = {\n [WorkerMessageType.PAGInit]: (event2) => {\n const option = {};\n if (event2.data.args[0]) {\n option.locateFile = () => event2.data.args[0].fileUrl;\n }\n init(option).then((module) => {\n self.PAG = module;\n self.postMessage({ name: event2.data.name, args: [] });\n });\n },\n [WorkerMessageType.PAGFile_load]: async (event2) => {\n const key2 = registerPAGFile(await self.PAG.PAGFile.load(event2.data.args[0]));\n self.postMessage({ name: event2.data.name, args: [key2] });\n },\n [WorkerMessageType.PAGView_init]: async (event2) => {\n const [pagFileKey, canvas, option] = event2.data.args;\n const key2 = registerPAGView(await self.PAG.PAGView.init(pagFiles[pagFileKey], canvas, option));\n self.postMessage({ name: event2.data.name, args: [key2] });\n },\n [WorkerMessageType.PAGView_destroy]: async (event2) => {\n const [pagViewKey] = event2.data.args;\n pagViews[pagViewKey].destroy();\n deletePAGView(pagViewKey);\n self.postMessage({ name: event2.data.name, args: [] });\n },\n [WorkerMessageType.PAGFile_getTextData]: async (event2) => {\n const [pagFileKey, editableTextIndex] = event2.data.args;\n const textData = pagFiles[pagFileKey].getTextData(editableTextIndex);\n let virtualTextData = {};\n for (const key2 in textData) {\n if (typeof textData[key2] !== \"function\") {\n virtualTextData[key2] = textData[key2];\n }\n }\n virtualTextData.key = registerTextData(textData);\n self.postMessage({ name: event2.data.name, args: [virtualTextData] });\n },\n [WorkerMessageType.PAGFile_replaceText]: async (event2) => {\n const [pagFileKey, editableTextIndex, virtualTextData] = event2.data.args;\n const textData = textDataMap[virtualTextData.key];\n for (const key2 in virtualTextData) {\n if (key2 !== \"key\") {\n textData[key2] = virtualTextData[key2];\n }\n }\n pagFiles[pagFileKey].replaceText(editableTextIndex, textData);\n self.postMessage({ name: event2.data.name, args: [] });\n },\n [WorkerMessageType.PAGFile_replaceImage]: async (event2) => {\n const [pagFileKey, editableImageIndex, pagImageKey] = event2.data.args;\n const pagImage = pagImages[pagImageKey];\n pagFiles[pagFileKey].replaceImage(editableImageIndex, pagImage);\n self.postMessage({ name: event2.data.name, args: [] });\n },\n [WorkerMessageType.PAGFile_destroy]: async (event2) => {\n const [pagFileKey] = event2.data.args;\n pagFiles[pagFileKey].destroy();\n deletePAGFile(pagFileKey);\n self.postMessage({ name: event2.data.name, args: [] });\n },\n [WorkerMessageType.PAGImage_fromSource]: async (event2) => {\n const [bitmap] = event2.data.args;\n const key2 = registerPAGImage(self.PAG.PAGImage.fromSource(bitmap));\n self.postMessage({ name: event2.data.name, args: [key2] });\n },\n [WorkerMessageType.PAGImage_destroy]: async (event2) => {\n const [pagImageKey] = event2.data.args;\n pagImages[pagImageKey].destroy();\n deletePAGImage(pagImageKey);\n self.postMessage({ name: event2.data.name, args: [] });\n },\n [WorkerMessageType.TextDocument_delete]: async (event2) => {\n const [textDataKey] = event2.data.args;\n textDataMap[textDataKey].delete();\n deleteTextData(textDataKey);\n self.postMessage({ name: event2.data.name, args: [] });\n }\n };\n const name = event.data.name.split(\"_\")[0];\n if (messageHandles[name]) {\n messageHandles[name](event);\n return;\n }\n const [type, fnName] = name.split(\".\");\n const key = event.data.args[0];\n if (type === \"PAGFile\") {\n const pagFile = pagFiles[key];\n if (!pagFile)\n throw new Error(\"pagFile doesn't exist\");\n const fn = pagFile[fnName];\n if (!fn)\n throw new Error(`PAGFile.${fnName} doesn't exist`);\n const res = await fn.call(pagFile, ...event.data.args.slice(1));\n self.postMessage({ name: event.data.name, args: [res] });\n return;\n }\n if (type === \"PAGView\") {\n const pagView = pagViews[key];\n if (!pagView)\n throw new Error(\"pagView doesn't exist\");\n const fn = pagView[fnName];\n if (!fn)\n throw new Error(`PAGView.${fnName} doesn't exist`);\n const res = await fn.call(pagView, ...event.data.args.slice(1));\n self.postMessage({ name: event.data.name, args: [res] });\n return;\n }\n };\n };\n\n const PAGInit = (moduleOption = {}) => PAGInit$1(moduleOption).then((module) => {\n binding(module);\n module.webAssemblyQueue = new WebAssemblyQueue();\n module.globalCanvas = new module.GlobalCanvas();\n module.PAGFont.registerFallbackFontNames();\n return module;\n }).catch((error) => {\n console.error(error);\n throw new Error(\"PAGInit fail! Please check .wasm file path valid.\");\n });\n if (WORKER) {\n workerInit(PAGInit);\n }\n\n exports.PAGInit = PAGInit;\n exports.types = types;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n//# sourceMappingURL=libpag.umd.js.map\n"],"sourceRoot":""}