export const manifoldModuleSource = "async function Module(moduleArg={}){var moduleRtn;var Module=moduleArg;var ENVIRONMENT_IS_WEB=!!globalThis.window;var ENVIRONMENT_IS_WORKER=!!globalThis.WorkerGlobalScope;var ENVIRONMENT_IS_NODE=globalThis.process?.versions?.node\u0026\u0026globalThis.process?.type!=\"renderer\";if(ENVIRONMENT_IS_NODE){const{createRequire}=await import(\"node:module\");var require=createRequire(import.meta.url)}var _ManifoldInitialized=false;Module.setup=function(){if(_ManifoldInitialized)return;_ManifoldInitialized=true;Module.initTBB();function toVec(vec,list,f=(x=\u003ex)){if(list){for(let x of list){vec.push_back(f(x))}}return vec}function fromVec(vec,f=(x=\u003ex)){const result=[];const size=vec.size();for(let i=0;i\u003csize;i++)result.push(f(vec.get(i)));return result}function vec2polygons(vec,f=(x=\u003ex)){const result=[];const nPoly=vec.size();for(let i=0;i\u003cnPoly;i++){const v=vec.get(i);const nPts=v.size();const poly=[];for(let j=0;j\u003cnPts;j++){poly.push(f(v.get(j)))}result.push(poly)}return result}function polygons2vec(polygons){if(polygons[0].length\u003c3){polygons=[polygons]}return toVec(new Module.Vector2_vec2,polygons,poly=\u003etoVec(new Module.Vector_vec2,poly,p=\u003e{if(p instanceof Array)return{x:p[0],y:p[1]};return p}))}function disposePolygons(polygonsVec){for(let i=0;i\u003cpolygonsVec.size();i++)polygonsVec.get(i).delete();polygonsVec.delete()}function vararg2vec2(vec){if(vec[0]instanceof Array)return{x:vec[0][0],y:vec[0][1]};if(typeof vec[0]==\"number\")return{x:vec[0]||0,y:vec[1]||0};return vec[0]}function vararg2vec3(vec){if(vec[0]instanceof Array)return{x:vec[0][0],y:vec[0][1],z:vec[0][2]};if(typeof vec[0]==\"number\")return{x:vec[0]||0,y:vec[1]||0,z:vec[2]||0};return vec[0]}function fillRuleToInt(fillRule){return fillRule==\"EvenOdd\"?0:fillRule==\"NonZero\"?1:fillRule==\"Negative\"?3:2}function joinTypeToInt(joinType){return joinType==\"Round\"?1:joinType==\"Miter\"?2:0}const CrossSectionCtor=Module.CrossSection;function cross(polygons,fillRule=\"Positive\"){if(polygons instanceof CrossSectionCtor){return polygons}else{const polygonsVec=polygons2vec(polygons);const cs=new CrossSectionCtor(polygonsVec,fillRuleToInt(fillRule));disposePolygons(polygonsVec);return cs}}Module.CrossSection.prototype.translate=function(...vec){return this._Translate(vararg2vec2(vec))};Module.CrossSection.prototype.scale=function(vec){if(typeof vec==\"number\"){return this._Scale({x:vec,y:vec})}return this._Scale(vararg2vec2([vec]))};Module.CrossSection.prototype.mirror=function(vec){return this._Mirror(vararg2vec2([vec]))};Module.CrossSection.prototype.warp=function(func){const wasmFuncPtr=addFunction(function(vec2Ptr){const x=getValue(vec2Ptr,\"double\");const y=getValue(vec2Ptr+8,\"double\");const vert=[x,y];func(vert);setValue(vec2Ptr,vert[0],\"double\");setValue(vec2Ptr+8,vert[1],\"double\")},\"vi\");const out=this._Warp(wasmFuncPtr);removeFunction(wasmFuncPtr);return out};Module.CrossSection.prototype.decompose=function(){const vec=this._Decompose();const result=fromVec(vec);vec.delete();return result};Module.CrossSection.prototype.bounds=function(){const result=this._Bounds();return{min:[\"x\",\"y\"].map(f=\u003eresult.min[f]),max:[\"x\",\"y\"].map(f=\u003eresult.max[f])}};Module.CrossSection.prototype.offset=function(delta,joinType=\"Round\",miterLimit=2,circularSegments=0){return this._Offset(delta,joinTypeToInt(joinType),miterLimit,circularSegments)};Module.CrossSection.prototype.simplify=function(epsilon=1e-6){return this._Simplify(epsilon)};Module.CrossSection.prototype.extrude=function(height,nDivisions=0,twistDegrees=0,scaleTop=[1,1],center=false){scaleTop=vararg2vec2([scaleTop]);const man=Module._Extrude(this._ToPolygons(),height,nDivisions,twistDegrees,scaleTop);return center?man.translate([0,0,-height/2]):man};Module.CrossSection.prototype.revolve=function(circularSegments=0,revolveDegrees=360){return Module._Revolve(this._ToPolygons(),circularSegments,revolveDegrees)};Module.CrossSection.prototype.add=function(other){return this._add(cross(other))};Module.CrossSection.prototype.subtract=function(other){return this._subtract(cross(other))};Module.CrossSection.prototype.intersect=function(other){return this._intersect(cross(other))};Module.CrossSection.prototype.toPolygons=function(){const vec=this._ToPolygons();const result=vec2polygons(vec,v=\u003e[v.x,v.y]);vec.delete();return result};Module.Manifold.prototype.smoothOut=function(minSharpAngle=52.5,minSmoothness=0){return this._SmoothOut(minSharpAngle,minSmoothness)};Module.Manifold.prototype.warp=function(func){const wasmFuncPtr=addFunction(function(vec3Ptr){const x=getValue(vec3Ptr,\"double\");const y=getValue(vec3Ptr+8,\"double\");const z=getValue(vec3Ptr+16,\"double\");const vert=[x,y,z];func(vert);setValue(vec3Ptr,vert[0],\"double\");setValue(vec3Ptr+8,vert[1],\"double\");setValue(vec3Ptr+16,vert[2],\"double\")},\"vi\");const out=this._Warp(wasmFuncPtr);removeFunction(wasmFuncPtr);const status=out.status();if(status!==\"NoError\"){throw new Module.ManifoldError(status)}return out};Module.Manifold.prototype.warpBatch=function(func){const wasmFuncPtr=addFunction(function(ptr,count){const heapF64=Module.HEAPF64??HEAPF64;if(!heapF64){throw new Error(\"WASM heap is not initialized (HEAPF64 unavailable)\")}const verts=new Float64Array(heapF64.buffer,ptr,count*3);func(verts,count)},\"vii\");const out=this._WarpBatch(wasmFuncPtr);removeFunction(wasmFuncPtr);const status=out.status();if(status!==\"NoError\"){throw new Module.ManifoldError(status)}return out};Module.Manifold.prototype.calculateNormals=function(normalIdx=0,minSharpAngle=52.5){return this._CalculateNormals(normalIdx,minSharpAngle)};Module.Manifold.prototype.smoothByNormals=function(normalIdx=0){return this._SmoothByNormals(normalIdx)};Module.Manifold.prototype.setProperties=function(numProp,func){const oldNumProp=this.numProp();const wasmFuncPtr=addFunction(function(newPtr,vec3Ptr,oldPtr){const newProp=[];for(let i=0;i\u003cnumProp;++i){newProp[i]=getValue(newPtr+8*i,\"double\")}const pos=[];for(let i=0;i\u003c3;++i){pos[i]=getValue(vec3Ptr+8*i,\"double\")}const oldProp=[];for(let i=0;i\u003coldNumProp;++i){oldProp[i]=getValue(oldPtr+8*i,\"double\")}func(newProp,pos,oldProp);for(let i=0;i\u003cnumProp;++i){setValue(newPtr+8*i,newProp[i],\"double\")}},\"viii\");const out=this._SetProperties(numProp,wasmFuncPtr);removeFunction(wasmFuncPtr);return out};Module.Manifold.prototype.translate=function(...vec){return this._Translate(vararg2vec3(vec))};Module.Manifold.prototype.rotate=function(xOrVec,y,z){if(Array.isArray(xOrVec)){return this._Rotate(...xOrVec)}else{return this._Rotate(xOrVec,y||0,z||0)}};Module.Manifold.prototype.scale=function(vec){if(typeof vec==\"number\"){return this._Scale({x:vec,y:vec,z:vec})}return this._Scale(vararg2vec3([vec]))};Module.Manifold.prototype.mirror=function(vec){return this._Mirror(vararg2vec3([vec]))};Module.Manifold.prototype.trimByPlane=function(normal,offset=0){return this._TrimByPlane(vararg2vec3([normal]),offset)};Module.Manifold.prototype.slice=function(height=0){const polygonsVec=this._Slice(height);const result=new CrossSectionCtor(polygonsVec,fillRuleToInt(\"Positive\"));disposePolygons(polygonsVec);return result};Module.Manifold.prototype.project=function(){const polygonsVec=this._Project();const result=new CrossSectionCtor(polygonsVec,fillRuleToInt(\"Positive\"));disposePolygons(polygonsVec);return result};Module.Manifold.prototype.rayCast=function(origin,endpoint){const vec=this._RayCast(vararg2vec3([origin]),vararg2vec3([endpoint]));const result=fromVec(vec,hit=\u003e({faceID:hit.faceID,distance:hit.distance,position:[\"x\",\"y\",\"z\"].map(f=\u003ehit.position[f]),normal:[\"x\",\"y\",\"z\"].map(f=\u003ehit.normal[f])}));vec.delete();return result};Module.Manifold.prototype.split=function(manifold){const vec=this._Split(manifold);const result=fromVec(vec);vec.delete();return result};Module.Manifold.prototype.splitByPlane=function(normal,offset=0){const vec=this._SplitByPlane(vararg2vec3([normal]),offset);const result=fromVec(vec);vec.delete();return result};Module.Manifold.prototype.decompose=function(){const vec=this._Decompose();const result=fromVec(vec);vec.delete();return result};Module.Manifold.prototype.boundingBox=function(){const result=this._boundingBox();return{min:[\"x\",\"y\",\"z\"].map(f=\u003eresult.min[f]),max:[\"x\",\"y\",\"z\"].map(f=\u003eresult.max[f])}};Module.Manifold.prototype.simplify=function(tolerance=0){return this._Simplify(tolerance)};class Mesh{constructor({numProp=3,triVerts=new Uint32Array,vertProperties=new Float32Array,mergeFromVert,mergeToVert,runIndex,runOriginalID,faceID,halfedgeTangent,runTransform,runFlags,tolerance=0}={}){this.numProp=numProp;this.triVerts=triVerts;this.vertProperties=vertProperties;this.mergeFromVert=mergeFromVert;this.mergeToVert=mergeToVert;this.runIndex=runIndex;this.runOriginalID=runOriginalID;this.faceID=faceID;this.halfedgeTangent=halfedgeTangent;this.runTransform=runTransform;this.runFlags=runFlags;this.tolerance=tolerance}get numTri(){return this.triVerts.length/3}get numVert(){return this.vertProperties.length/this.numProp}get numRun(){return this.runOriginalID.length}merge(){const{changed,mesh}=Module._Merge(this);Object.assign(this,{...mesh});return changed}verts(tri){return this.triVerts.subarray(3*tri,3*(tri+1))}position(vert){return this.vertProperties.subarray(this.numProp*vert,this.numProp*vert+3)}extras(vert){return this.vertProperties.subarray(this.numProp*vert+3,this.numProp*(vert+1))}tangent(halfedge){return this.halfedgeTangent.subarray(4*halfedge,4*(halfedge+1))}transform(run){const mat4=new Array(16);for(const col of[0,1,2,3]){for(const row of[0,1,2]){mat4[4*col+row]=this.runTransform[12*run+3*col+row]}}mat4[15]=1;return mat4}backside(run){return this.runFlags!=null\u0026\u0026run\u003cthis.runFlags.length\u0026\u0026(this.runFlags[run]\u00261)!==0}hasNormals(run){return this.runFlags!=null\u0026\u0026run\u003cthis.runFlags.length\u0026\u0026(this.runFlags[run]\u00262)!==0}}Module.Mesh=Mesh;Module.Manifold.prototype.getMesh=function(normalIdx=-1){return new Mesh(this._GetMeshJS(normalIdx))};Module.ManifoldError=function ManifoldError(code,...args){let message=\"Unknown error\";switch(code){case\"NonFiniteVertex\":message=\"Non-finite vertex\";break;case\"NotManifold\":message=\"Not manifold\";break;case\"VertexOutOfBounds\":message=\"Vertex index out of bounds\";break;case\"PropertiesWrongLength\":message=\"Properties have wrong length\";break;case\"MissingPositionProperties\":message=\"Less than three properties\";break;case\"MergeVectorsDifferentLengths\":message=\"Merge vectors have different lengths\";break;case\"MergeIndexOutOfBounds\":message=\"Merge index out of bounds\";break;case\"TransformWrongLength\":message=\"Transform vector has wrong length\";break;case\"RunIndexWrongLength\":message=\"Run index vector has wrong length\";break;case\"FaceIDWrongLength\":message=\"Face ID vector has wrong length\";break;case\"InvalidConstruction\":message=\"Manifold constructed with invalid parameters\";break;case\"ResultTooLarge\":message=\"Result exceeds maximum size\";break;case\"InvalidTangents\":message=\"Invalid halfedge tangents\";break}const base=Error.apply(this,[message,...args]);base.name=this.name=\"ManifoldError\";this.message=base.message;this.stack=base.stack;this.code=code};Module.ManifoldError.prototype=Object.create(Error.prototype,{constructor:{value:Module.ManifoldError,writable:true,configurable:true}});Module.CrossSection=function(polygons,fillRule=\"Positive\"){const polygonsVec=polygons2vec(polygons);const cs=new CrossSectionCtor(polygonsVec,fillRuleToInt(fillRule));disposePolygons(polygonsVec);return cs};Module.CrossSection.ofPolygons=function(polygons,fillRule=\"Positive\"){return new Module.CrossSection(polygons,fillRule)};Module.CrossSection.square=function(...args){let size=undefined;if(args.length==0)size={x:1,y:1};else if(typeof args[0]==\"number\")size={x:args[0],y:args[0]};else size=vararg2vec2(args);const center=args[1]||false;return Module._Square(size,center)};Module.CrossSection.circle=function(radius,circularSegments=0){return Module._Circle(radius,circularSegments)};function crossSectionBatchbool(name){return function(...args){if(args.length==1)args=args[0];const v=new Module.Vector_crossSection;for(const cs of args)v.push_back(cross(cs));const result=Module[\"_crossSection\"+name](v);v.delete();return result}}Module.CrossSection.compose=crossSectionBatchbool(\"Compose\");Module.CrossSection.union=crossSectionBatchbool(\"UnionN\");Module.CrossSection.difference=crossSectionBatchbool(\"DifferenceN\");Module.CrossSection.intersection=crossSectionBatchbool(\"IntersectionN\");function pushVec2(vec,ps){toVec(vec,ps,p=\u003e{if(p instanceof Array)return{x:p[0],y:p[1]};return p})}Module.CrossSection.hull=function(...args){if(args.length==1)args=args[0];let pts=new Module.Vector_vec2;for(const cs of args){if(cs instanceof CrossSectionCtor){Module._crossSectionCollectVertices(pts,cs)}else if(cs instanceof Array\u0026\u0026cs.length==2\u0026\u0026typeof cs[0]==\"number\"){pts.push_back({x:cs[0],y:cs[1]})}else if(cs.x){pts.push_back(cs)}else{const wrap=cs[0].length==2\u0026\u0026typeof cs[0][0]==\"number\"||cs[0].x;const polys=wrap?[cs]:cs;for(const poly of polys)pushVec2(pts,poly)}}const result=Module._crossSectionHullPoints(pts);pts.delete();return result};Module.CrossSection.prototype=Object.create(CrossSectionCtor.prototype);Object.defineProperty(Module.CrossSection,Symbol.hasInstance,{get:()=\u003et=\u003et instanceof CrossSectionCtor});const ManifoldCtor=Module.Manifold;Module.Manifold=function(mesh){const manifold=new ManifoldCtor(mesh);const status=manifold.status();if(status!==\"NoError\"){throw new Module.ManifoldError(status)}return manifold};Module.Manifold.ofMesh=function(mesh){return new Module.Manifold(mesh)};Module.Manifold.tetrahedron=function(){return Module._Tetrahedron()};Module.Manifold.cube=function(...args){let size=undefined;if(args.length==0)size={x:1,y:1,z:1};else if(typeof args[0]==\"number\")size={x:args[0],y:args[0],z:args[0]};else size=vararg2vec3(args);const center=args[1]||false;return Module._Cube(size,center)};Module.Manifold.cylinder=function(height,radiusLow,radiusHigh=-1,circularSegments=0,center=false){return Module._Cylinder(height,radiusLow,radiusHigh,circularSegments,center)};Module.Manifold.sphere=function(radius,circularSegments=0){return Module._Sphere(radius,circularSegments)};Module.Manifold.smooth=function(mesh,sharpenedEdges=[]){const sharp=new Module.Vector_smoothness;toVec(sharp,sharpenedEdges);const result=Module._Smooth(mesh,sharp);sharp.delete();return result};Module.Manifold.extrude=function(polygons,height,nDivisions=0,twistDegrees=0,scaleTop=[1,1],center=false){const cs=polygons instanceof CrossSectionCtor?polygons:Module.CrossSection(polygons,\"Positive\");return cs.extrude(height,nDivisions,twistDegrees,scaleTop,center)};Module.Manifold.revolve=function(polygons,circularSegments=0,revolveDegrees=360){const cs=polygons instanceof CrossSectionCtor?polygons:Module.CrossSection(polygons,\"Positive\");return cs.revolve(circularSegments,revolveDegrees)};Module.Manifold.reserveIDs=function(n){return Module._ReserveIDs(n)};function manifoldBatchbool(name){return function(...args){if(args.length==1)args=args[0];const v=new Module.Vector_manifold;for(const m of args)v.push_back(m);const result=Module[\"_manifold\"+name+\"N\"](v);v.delete();return result}}Module.Manifold.union=manifoldBatchbool(\"Union\");Module.Manifold.compose=Module.Manifold.union;Module.Manifold.difference=manifoldBatchbool(\"Difference\");Module.Manifold.intersection=manifoldBatchbool(\"Intersection\");Module.Manifold.levelSet=function(sdf,bounds,edgeLength,level=0,tolerance=-1){const bounds2={min:{x:bounds.min[0],y:bounds.min[1],z:bounds.min[2]},max:{x:bounds.max[0],y:bounds.max[1],z:bounds.max[2]}};const wasmFuncPtr=addFunction(function(vec3Ptr){const x=getValue(vec3Ptr,\"double\");const y=getValue(vec3Ptr+8,\"double\");const z=getValue(vec3Ptr+16,\"double\");const vert=[x,y,z];return sdf(vert)},\"di\");const out=Module._LevelSet(wasmFuncPtr,bounds2,edgeLength,level,tolerance);removeFunction(wasmFuncPtr);return out};function pushVec3(vec,ps){toVec(vec,ps,p=\u003e{if(p instanceof Array)return{x:p[0],y:p[1],z:p[2]};return p})}Module.Manifold.hull=function(...args){if(args.length==1)args=args[0];let pts=new Module.Vector_vec3;for(const m of args){if(m instanceof ManifoldCtor){Module._manifoldCollectVertices(pts,m)}else if(m instanceof Array\u0026\u0026m.length==3\u0026\u0026typeof m[0]==\"number\"){pts.push_back({x:m[0],y:m[1],z:m[2]})}else if(m.x){pts.push_back(m)}else{pushVec3(pts,m)}}const result=Module._manifoldHullPoints(pts);pts.delete();return result};Module.Manifold.prototype=Object.create(ManifoldCtor.prototype);Object.defineProperty(Module.Manifold,Symbol.hasInstance,{get:()=\u003et=\u003et instanceof ManifoldCtor});Module.triangulate=function(polygons,epsilon=-1,allowConvex=true){const polygonsVec=polygons2vec(polygons);const result=fromVec(Module._Triangulate(polygonsVec,epsilon,allowConvex),x=\u003e[x[0],x[1],x[2]]);disposePolygons(polygonsVec);return result}};var arguments_=[];var thisProgram=\"./this.program\";var quit_=(status,toThrow)=\u003e{throw toThrow};var _scriptName=import.meta.url;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require(\"node:fs\");if(_scriptName.startsWith(\"file:\")){scriptDirectory=require(\"node:path\").dirname(require(\"node:url\").fileURLToPath(_scriptName))+\"/\"}readBinary=filename=\u003e{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename);return ret};readAsync=async(filename,binary=true)=\u003e{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename,binary?undefined:\"utf8\");return ret};if(process.argv.length\u003e1){thisProgram=process.argv[1].replace(/\\\\/g,\"/\")}arguments_=process.argv.slice(2);quit_=(status,toThrow)=\u003e{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){try{scriptDirectory=new URL(\".\",_scriptName).href}catch{}{if(ENVIRONMENT_IS_WORKER){readBinary=url=\u003e{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=async url=\u003e{if(isFileURI(url)){return new Promise((resolve,reject)=\u003e{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=()=\u003e{if(xhr.status==200||xhr.status==0\u0026\u0026xhr.response){resolve(xhr.response);return}reject(xhr.status)};xhr.onerror=reject;xhr.send(null)})}var response=await fetch(url,{credentials:\"same-origin\"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+\" : \"+response.url)}}}else{}var out=console.log.bind(console);var err=console.error.bind(console);var wasmBinary;var ABORT=false;var isFileURI=filename=\u003efilename.startsWith(\"file://\");var readyPromiseResolve,readyPromiseReject;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;var HEAP64,HEAPU64;var runtimeInitialized=false;function updateMemoryViews(){var b=wasmMemory.buffer;HEAP8=new Int8Array(b);HEAP16=new Int16Array(b);HEAPU8=new Uint8Array(b);HEAPU16=new Uint16Array(b);HEAP32=new Int32Array(b);HEAPU32=new Uint32Array(b);HEAPF32=new Float32Array(b);HEAPF64=new Float64Array(b);HEAP64=new BigInt64Array(b);HEAPU64=new BigUint64Array(b)}function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(onPreRuns)}function initRuntime(){runtimeInitialized=true;wasmExports[\"J\"]()}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(onPostRuns)}function abort(what){Module[\"onAbort\"]?.(what);what=\"Aborted(\"+what+\")\";err(what);ABORT=true;what+=\". Build with -sASSERTIONS for more info.\";var e=new WebAssembly.RuntimeError(what);readyPromiseReject?.(e);throw e}var wasmBinaryFile;function findWasmBinary(){if(Module[\"locateFile\"]){return locateFile(\"manifold.wasm\")}return new URL(\"manifold.wasm\",import.meta.url).href}function getBinarySync(file){if(file==wasmBinaryFile\u0026\u0026wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw\"both async and sync fetching of the wasm failed\"}async function getWasmBinary(binaryFile){if(!wasmBinary){try{var response=await readAsync(binaryFile);return new Uint8Array(response)}catch{}}return getBinarySync(binaryFile)}async function instantiateArrayBuffer(binaryFile,imports){try{var binary=await getWasmBinary(binaryFile);var instance=await WebAssembly.instantiate(binary,imports);return instance}catch(reason){err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)}}async function instantiateAsync(binary,binaryFile,imports){if(!binary\u0026\u0026!isFileURI(binaryFile)\u0026\u0026!ENVIRONMENT_IS_NODE){try{var response=fetch(binaryFile,{credentials:\"same-origin\"});var instantiationResult=await WebAssembly.instantiateStreaming(response,imports);return instantiationResult}catch(reason){err(`wasm streaming compile failed: ${reason}`);err(\"falling back to ArrayBuffer instantiation\")}}return instantiateArrayBuffer(binaryFile,imports)}function getWasmImports(){var imports={a:wasmImports};return imports}async function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;wasmExports=applySignatureConversions(wasmExports);assignWasmExports(wasmExports);updateMemoryViews();return wasmExports}function receiveInstantiationResult(result){return receiveInstance(result[\"instance\"])}var info=getWasmImports();if(Module[\"instantiateWasm\"]){return new Promise((resolve,reject)=\u003e{Module[\"instantiateWasm\"](info,(inst,mod)=\u003e{resolve(receiveInstance(inst,mod))})})}wasmBinaryFile??=findWasmBinary();var result=await instantiateAsync(wasmBinary,wasmBinaryFile,info);var exports=receiveInstantiationResult(result);return exports}class ExitStatus{name=\"ExitStatus\";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var callRuntimeCallbacks=callbacks=\u003e{while(callbacks.length\u003e0){callbacks.shift()(Module)}};var onPostRuns=[];var addOnPostRun=cb=\u003eonPostRuns.push(cb);var onPreRuns=[];var addOnPreRun=cb=\u003eonPreRuns.push(cb);function getValue(ptr,type=\"i8\"){if(type.endsWith(\"*\"))type=\"*\";switch(type){case\"i1\":return HEAP8[ptr\u003e\u003e\u003e0];case\"i8\":return HEAP8[ptr\u003e\u003e\u003e0];case\"i16\":return HEAP16[ptr\u003e\u003e\u003e1\u003e\u003e\u003e0];case\"i32\":return HEAP32[ptr\u003e\u003e\u003e2\u003e\u003e\u003e0];case\"i64\":return HEAP64[ptr\u003e\u003e\u003e3\u003e\u003e\u003e0];case\"float\":return HEAPF32[ptr\u003e\u003e\u003e2\u003e\u003e\u003e0];case\"double\":return HEAPF64[ptr\u003e\u003e\u003e3\u003e\u003e\u003e0];case\"*\":return HEAPU32[ptr\u003e\u003e\u003e2\u003e\u003e\u003e0];default:abort(`invalid type for getValue: ${type}`)}}var noExitRuntime=true;function setValue(ptr,value,type=\"i8\"){if(type.endsWith(\"*\"))type=\"*\";switch(type){case\"i1\":HEAP8[ptr\u003e\u003e\u003e0]=value;break;case\"i8\":HEAP8[ptr\u003e\u003e\u003e0]=value;break;case\"i16\":HEAP16[ptr\u003e\u003e\u003e1\u003e\u003e\u003e0]=value;break;case\"i32\":HEAP32[ptr\u003e\u003e\u003e2\u003e\u003e\u003e0]=value;break;case\"i64\":HEAP64[ptr\u003e\u003e\u003e3\u003e\u003e\u003e0]=BigInt(value);break;case\"float\":HEAPF32[ptr\u003e\u003e\u003e2\u003e\u003e\u003e0]=value;break;case\"double\":HEAPF64[ptr\u003e\u003e\u003e3\u003e\u003e\u003e0]=value;break;case\"*\":HEAPU32[ptr\u003e\u003e\u003e2\u003e\u003e\u003e0]=value;break;default:abort(`invalid type for setValue: ${type}`)}}class ExceptionInfo{constructor(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24}set_type(type){HEAPU32[this.ptr+4\u003e\u003e\u003e2\u003e\u003e\u003e0]=type}get_type(){return HEAPU32[this.ptr+4\u003e\u003e\u003e2\u003e\u003e\u003e0]}set_destructor(destructor){HEAPU32[this.ptr+8\u003e\u003e\u003e2\u003e\u003e\u003e0]=destructor}get_destructor(){return HEAPU32[this.ptr+8\u003e\u003e\u003e2\u003e\u003e\u003e0]}set_caught(caught){caught=caught?1:0;HEAP8[this.ptr+12\u003e\u003e\u003e0]=caught}get_caught(){return HEAP8[this.ptr+12\u003e\u003e\u003e0]!=0}set_rethrown(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13\u003e\u003e\u003e0]=rethrown}get_rethrown(){return HEAP8[this.ptr+13\u003e\u003e\u003e0]!=0}init(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)}set_adjusted_ptr(adjustedPtr){HEAPU32[this.ptr+16\u003e\u003e\u003e2\u003e\u003e\u003e0]=adjustedPtr}get_adjusted_ptr(){return HEAPU32[this.ptr+16\u003e\u003e\u003e2\u003e\u003e\u003e0]}}var exceptionLast=0;var uncaughtExceptionCount=0;function ___cxa_throw(ptr,type,destructor){ptr\u003e\u003e\u003e=0;type\u003e\u003e\u003e=0;destructor\u003e\u003e\u003e=0;var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast}var __abort_js=()=\u003eabort(\"\");var structRegistrations={};var runDestructors=destructors=\u003e{while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}};function readPointer(pointer){return this.fromWireType(HEAPU32[pointer\u003e\u003e\u003e2\u003e\u003e\u003e0])}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var InternalError=class InternalError extends Error{constructor(message){super(message);this.name=\"InternalError\"}};var throwInternalError=message=\u003e{throw new InternalError(message)};var whenDependentTypesAreResolved=(myTypes,dependentTypes,getTypeConverters)=\u003e{myTypes.forEach(type=\u003etypeDependencies[type]=dependentTypes);function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError(\"Mismatched type converter count\")}for(var i=0;i\u003cmyTypes.length;++i){registerType(myTypes[i],myTypeConverters[i])}}var typeConverters=new Array(dependentTypes.length);var unregisteredTypes=[];var registered=0;for(let[i,dt]of dependentTypes.entries()){if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt]}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[]}awaitingDependencies[dt].push(()=\u003e{typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters)}})}}if(0===unregisteredTypes.length){onComplete(typeConverters)}};var __embind_finalize_value_object=function(structType){structType\u003e\u003e\u003e=0;var reg=structRegistrations[structType];delete structRegistrations[structType];var rawConstructor=reg.rawConstructor;var rawDestructor=reg.rawDestructor;var fieldRecords=reg.fields;var fieldTypes=fieldRecords.map(field=\u003efield.getterReturnType).concat(fieldRecords.map(field=\u003efield.setterArgumentType));whenDependentTypesAreResolved([structType],fieldTypes,fieldTypes=\u003e{var fields={};for(var[i,field]of fieldRecords.entries()){const getterReturnType=fieldTypes[i];const getter=field.getter;const getterContext=field.getterContext;const setterArgumentType=fieldTypes[i+fieldRecords.length];const setter=field.setter;const setterContext=field.setterContext;fields[field.fieldName]={read:ptr=\u003egetterReturnType.fromWireType(getter(getterContext,ptr)),write:(ptr,o)=\u003e{var destructors=[];setter(setterContext,ptr,setterArgumentType.toWireType(destructors,o));runDestructors(destructors)},optional:getterReturnType.optional}}return[{name:reg.name,fromWireType:ptr=\u003e{var rv={};for(var i in fields){rv[i]=fields[i].read(ptr)}rawDestructor(ptr);return rv},toWireType:(destructors,o)=\u003e{for(var fieldName in fields){if(!(fieldName in o)\u0026\u0026!fields[fieldName].optional){throw new TypeError(`Missing field: \"${fieldName}\"`)}}var ptr=rawConstructor();for(fieldName in fields){fields[fieldName].write(ptr,o[fieldName])}if(destructors!==null){destructors.push(rawDestructor,ptr)}return ptr},readValueFromPointer:readPointer,destructorFunction:rawDestructor}]})};var AsciiToString=ptr=\u003e{ptr\u003e\u003e\u003e=0;var str=\"\";while(1){var ch=HEAPU8[ptr++\u003e\u003e\u003e0];if(!ch)return str;str+=String.fromCharCode(ch)}};var BindingError=class BindingError extends Error{constructor(message){super(message);this.name=\"BindingError\"}};var throwBindingError=message=\u003e{throw new BindingError(message)};function sharedRegisterType(rawType,registeredInstance,options={}){var name=registeredInstance.name;if(!rawType){throwBindingError(`type \"${name}\" must have a positive integer typeid pointer`)}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError(`Cannot register type \u0027${name}\u0027 twice`)}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=\u003ecb())}}function registerType(rawType,registeredInstance,options={}){return sharedRegisterType(rawType,registeredInstance,options)}var integerReadValueFromPointer=(name,width,signed)=\u003e{switch(width){case 1:return signed?pointer=\u003eHEAP8[pointer\u003e\u003e\u003e0]:pointer=\u003eHEAPU8[pointer\u003e\u003e\u003e0];case 2:return signed?pointer=\u003eHEAP16[pointer\u003e\u003e\u003e1\u003e\u003e\u003e0]:pointer=\u003eHEAPU16[pointer\u003e\u003e\u003e1\u003e\u003e\u003e0];case 4:return signed?pointer=\u003eHEAP32[pointer\u003e\u003e\u003e2\u003e\u003e\u003e0]:pointer=\u003eHEAPU32[pointer\u003e\u003e\u003e2\u003e\u003e\u003e0];case 8:return signed?pointer=\u003eHEAP64[pointer\u003e\u003e\u003e3\u003e\u003e\u003e0]:pointer=\u003eHEAPU64[pointer\u003e\u003e\u003e3\u003e\u003e\u003e0];default:throw new TypeError(`invalid integer width (${width}): ${name}`)}};var __embind_register_bigint=function(primitiveType,name,size,minRange,maxRange){primitiveType\u003e\u003e\u003e=0;name\u003e\u003e\u003e=0;size\u003e\u003e\u003e=0;name=AsciiToString(name);const isUnsignedType=minRange===0n;let fromWireType=value=\u003evalue;if(isUnsignedType){const bitSize=size*8;fromWireType=value=\u003eBigInt.asUintN(bitSize,value);maxRange=fromWireType(maxRange)}registerType(primitiveType,{name,fromWireType,toWireType:(destructors,value)=\u003e{if(typeof value==\"number\"){value=BigInt(value)}return value},readValueFromPointer:integerReadValueFromPointer(name,size,!isUnsignedType),destructorFunction:null})};function __embind_register_bool(rawType,name,trueValue,falseValue){rawType\u003e\u003e\u003e=0;name\u003e\u003e\u003e=0;name=AsciiToString(name);registerType(rawType,{name,fromWireType:function(wt){return!!wt},toWireType:function(destructors,o){return o?trueValue:falseValue},readValueFromPointer:function(pointer){return this.fromWireType(HEAPU8[pointer\u003e\u003e\u003e0])},destructorFunction:null})}var shallowCopyInternalPointer=o=\u003e({count:o.count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType});var throwInstanceAlreadyDeleted=obj=\u003e{function getInstanceTypeName(handle){return handle.$$.ptrType.registeredClass.name}throwBindingError(getInstanceTypeName(obj)+\" instance already deleted\")};var finalizationRegistry=false;var detachFinalizer=handle=\u003e{};var runDestructor=$$=\u003e{if($$.smartPtr){$$.smartPtrType.rawDestructor($$.smartPtr)}else{$$.ptrType.registeredClass.rawDestructor($$.ptr)}};var releaseClassHandle=$$=\u003e{$$.count.value-=1;var toDelete=0===$$.count.value;if(toDelete){runDestructor($$)}};var attachFinalizer=handle=\u003e{if(!globalThis.FinalizationRegistry){attachFinalizer=handle=\u003ehandle;return handle}finalizationRegistry=new FinalizationRegistry(info=\u003e{releaseClassHandle(info.$$)});attachFinalizer=handle=\u003e{var $$=handle.$$;var hasSmartPtr=!!$$.smartPtr;if(hasSmartPtr){var info={$$};finalizationRegistry.register(handle,info,handle)}return handle};detachFinalizer=handle=\u003efinalizationRegistry.unregister(handle);return attachFinalizer(handle)};var deletionQueue=[];var flushPendingDeletes=()=\u003e{while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj[\"delete\"]()}};var delayFunction;var init_ClassHandle=()=\u003e{let proto=ClassHandle.prototype;Object.assign(proto,{isAliasOf(other){if(!(this instanceof ClassHandle)){return false}if(!(other instanceof ClassHandle)){return false}var leftClass=this.$$.ptrType.registeredClass;var left=this.$$.ptr;other.$$=other.$$;var rightClass=other.$$.ptrType.registeredClass;var right=other.$$.ptr;while(leftClass.baseClass){left=leftClass.upcast(left);leftClass=leftClass.baseClass}while(rightClass.baseClass){right=rightClass.upcast(right);rightClass=rightClass.baseClass}return leftClass===rightClass\u0026\u0026left===right},clone(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.preservePointerOnDelete){this.$$.count.value+=1;return this}else{var clone=attachFinalizer(Object.create(Object.getPrototypeOf(this),{$$:{value:shallowCopyInternalPointer(this.$$)}}));clone.$$.count.value+=1;clone.$$.deleteScheduled=false;return clone}},delete(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled\u0026\u0026!this.$$.preservePointerOnDelete){throwBindingError(\"Object already scheduled for deletion\")}detachFinalizer(this);releaseClassHandle(this.$$);if(!this.$$.preservePointerOnDelete){this.$$.smartPtr=undefined;this.$$.ptr=undefined}},isDeleted(){return!this.$$.ptr},deleteLater(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled\u0026\u0026!this.$$.preservePointerOnDelete){throwBindingError(\"Object already scheduled for deletion\")}deletionQueue.push(this);if(deletionQueue.length===1\u0026\u0026delayFunction){delayFunction(flushPendingDeletes)}this.$$.deleteScheduled=true;return this}});const symbolDispose=Symbol.dispose;if(symbolDispose){proto[symbolDispose]=proto[\"delete\"]}};function ClassHandle(){}var createNamedFunction=(name,func)=\u003eObject.defineProperty(func,\"name\",{value:name});var registeredPointers={};var ensureOverloadTable=(proto,methodName,humanName)=\u003e{if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(...args){if(!proto[methodName].overloadTable.hasOwnProperty(args.length)){throwBindingError(`Function \u0027${humanName}\u0027 called with an invalid number of arguments (${args.length}) - expects one of (${proto[methodName].overloadTable})!`)}return proto[methodName].overloadTable[args.length].apply(this,args)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}};var exposePublicSymbol=(name,value,numArguments)=\u003e{if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable\u0026\u0026undefined!==Module[name].overloadTable[numArguments]){throwBindingError(`Cannot register public name \u0027${name}\u0027 twice`)}ensureOverloadTable(Module,name,name);if(Module[name].overloadTable.hasOwnProperty(numArguments)){throwBindingError(`Cannot register multiple overloads of a function with the same number of arguments (${numArguments})!`)}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}};var char_0=48;var char_9=57;var makeLegalFunctionName=name=\u003e{name=name.replace(/[^a-zA-Z0-9_]/g,\"$\");var f=name.charCodeAt(0);if(f\u003e=char_0\u0026\u0026f\u003c=char_9){return`_${name}`}return name};function RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast){this.name=name;this.constructor=constructor;this.instancePrototype=instancePrototype;this.rawDestructor=rawDestructor;this.baseClass=baseClass;this.getActualType=getActualType;this.upcast=upcast;this.downcast=downcast;this.pureVirtualFunctions=[]}var upcastPointer=(ptr,ptrClass,desiredClass)=\u003e{while(ptrClass!==desiredClass){if(!ptrClass.upcast){throwBindingError(`Expected null or instance of ${desiredClass.name}, got an instance of ${ptrClass.name}`)}ptr=ptrClass.upcast(ptr);ptrClass=ptrClass.baseClass}return ptr};var embindRepr=v=\u003e{if(v===null){return\"null\"}var t=typeof v;if(t===\"object\"||t===\"array\"||t===\"function\"){return v.toString()}else{return\"\"+v}};function constNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}return 0}if(!handle.$$){throwBindingError(`Cannot pass \"${embindRepr(handle)}\" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function genericPointerToWireType(destructors,handle){var ptr;if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}if(this.isSmartPointer){ptr=this.rawConstructor();if(destructors!==null){destructors.push(this.rawDestructor,ptr)}return ptr}else{return 0}}if(!handle||!handle.$$){throwBindingError(`Cannot pass \"${embindRepr(handle)}\" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}if(!this.isConst\u0026\u0026handle.$$.ptrType.isConst){throwBindingError(`Cannot convert argument of type ${handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name} to parameter type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);if(this.isSmartPointer){if(undefined===handle.$$.smartPtr){throwBindingError(\"Passing raw pointer to smart pointer is illegal\")}switch(this.sharingPolicy){case 0:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{throwBindingError(`Cannot convert argument of type ${handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name} to parameter type ${this.name}`)}break;case 1:ptr=handle.$$.smartPtr;break;case 2:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{var clonedHandle=handle[\"clone\"]();ptr=this.rawShare(ptr,Emval.toHandle(()=\u003eclonedHandle[\"delete\"]()));if(destructors!==null){destructors.push(this.rawDestructor,ptr)}}break;default:throwBindingError(\"Unsupported sharing policy\")}}return ptr}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}return 0}if(!handle.$$){throwBindingError(`Cannot pass \"${embindRepr(handle)}\" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}if(handle.$$.ptrType.isConst){throwBindingError(`Cannot convert argument of type ${handle.$$.ptrType.name} to parameter type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}var downcastPointer=(ptr,ptrClass,desiredClass)=\u003e{if(ptrClass===desiredClass){return ptr}if(undefined===desiredClass.baseClass){return null}var rv=downcastPointer(ptr,ptrClass,desiredClass.baseClass);if(rv===null){return null}return desiredClass.downcast(rv)};var registeredInstances={};var getBasestPointer=(class_,ptr)=\u003e{if(ptr===undefined){throwBindingError(\"ptr should not be undefined\")}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass}return ptr};var getInheritedInstance=(class_,ptr)=\u003e{ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr]};var makeClassHandle=(prototype,record)=\u003e{if(!record.ptrType||!record.ptr){throwInternalError(\"makeClassHandle requires ptr and ptrType\")}var hasSmartPtrType=!!record.smartPtrType;var hasSmartPtr=!!record.smartPtr;if(hasSmartPtrType!==hasSmartPtr){throwInternalError(\"Both smartPtrType and smartPtr must be specified\")}record.count={value:1};return attachFinalizer(Object.create(prototype,{$$:{value:record,writable:true}}))};function RegisteredPointer_fromWireType(ptr){var rawPointer=this.getPointee(ptr);if(!rawPointer){this.destructor(ptr);return null}var registeredInstance=getInheritedInstance(this.registeredClass,rawPointer);if(undefined!==registeredInstance){if(0===registeredInstance.$$.count.value){registeredInstance.$$.ptr=rawPointer;registeredInstance.$$.smartPtr=ptr;return registeredInstance[\"clone\"]()}else{var rv=registeredInstance[\"clone\"]();this.destructor(ptr);return rv}}function makeDefaultHandle(){if(this.isSmartPointer){return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:rawPointer,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this,ptr})}}var actualType=this.registeredClass.getActualType(rawPointer);var registeredPointerRecord=registeredPointers[actualType];if(!registeredPointerRecord){return makeDefaultHandle.call(this)}var toType;if(this.isConst){toType=registeredPointerRecord.constPointerType}else{toType=registeredPointerRecord.pointerType}var dp=downcastPointer(rawPointer,this.registeredClass,toType.registeredClass);if(dp===null){return makeDefaultHandle.call(this)}if(this.isSmartPointer){return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp})}}var init_RegisteredPointer=()=\u003e{Object.assign(RegisteredPointer.prototype,{getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr)}return ptr},destructor(ptr){this.rawDestructor?.(ptr)},readValueFromPointer:readPointer,fromWireType:RegisteredPointer_fromWireType})};function RegisteredPointer(name,registeredClass,isReference,isConst,isSmartPointer,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor){this.name=name;this.registeredClass=registeredClass;this.isReference=isReference;this.isConst=isConst;this.isSmartPointer=isSmartPointer;this.pointeeType=pointeeType;this.sharingPolicy=sharingPolicy;this.rawGetPointee=rawGetPointee;this.rawConstructor=rawConstructor;this.rawShare=rawShare;this.rawDestructor=rawDestructor;if(!isSmartPointer\u0026\u0026registeredClass.baseClass===undefined){if(isConst){this.toWireType=constNoSmartPtrRawPointerToWireType;this.destructorFunction=null}else{this.toWireType=nonConstNoSmartPtrRawPointerToWireType;this.destructorFunction=null}}else{this.toWireType=genericPointerToWireType}}var replacePublicSymbol=(name,value,numArguments)=\u003e{if(!Module.hasOwnProperty(name)){throwInternalError(\"Replacing nonexistent public symbol\")}if(undefined!==Module[name].overloadTable\u0026\u0026undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}};var getWasmTableEntry=funcPtr=\u003ewasmTable.get(funcPtr);var dynCall=(sig,ptr,args=[],promising=false)=\u003e{var func=getWasmTableEntry(ptr);var rtn=func(...args);function convert(rtn){return sig[0]==\"p\"?rtn\u003e\u003e\u003e0:rtn}return convert(rtn)};var getDynCaller=(sig,ptr,promising=false)=\u003e(...args)=\u003edynCall(sig,ptr,args,promising);var embind__requireFunction=(signature,rawFunction,isAsync=false)=\u003e{signature=AsciiToString(signature);function makeDynCaller(){if(signature.includes(\"p\")){return getDynCaller(signature,rawFunction,isAsync)}var rtn=getWasmTableEntry(rawFunction);return rtn}var fp=makeDynCaller();if(typeof fp!=\"function\"){throwBindingError(`unknown function pointer with signature ${signature}: ${rawFunction}`)}return fp};class UnboundTypeError extends Error{}var getTypeName=type=\u003e{var ptr=___getTypeName(type);var rv=AsciiToString(ptr);_free(ptr);return rv};var throwUnboundTypeError=(message,types)=\u003e{var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(`${message}: `+unboundTypes.map(getTypeName).join([\", \"]))};function __embind_register_class(rawType,rawPointerType,rawConstPointerType,baseClassRawType,getActualTypeSignature,getActualType,upcastSignature,upcast,downcastSignature,downcast,name,destructorSignature,rawDestructor){rawType\u003e\u003e\u003e=0;rawPointerType\u003e\u003e\u003e=0;rawConstPointerType\u003e\u003e\u003e=0;baseClassRawType\u003e\u003e\u003e=0;getActualTypeSignature\u003e\u003e\u003e=0;getActualType\u003e\u003e\u003e=0;upcastSignature\u003e\u003e\u003e=0;upcast\u003e\u003e\u003e=0;downcastSignature\u003e\u003e\u003e=0;downcast\u003e\u003e\u003e=0;name\u003e\u003e\u003e=0;destructorSignature\u003e\u003e\u003e=0;rawDestructor\u003e\u003e\u003e=0;name=AsciiToString(name);getActualType=embind__requireFunction(getActualTypeSignature,getActualType);upcast\u0026\u0026=embind__requireFunction(upcastSignature,upcast);downcast\u0026\u0026=embind__requireFunction(downcastSignature,downcast);rawDestructor=embind__requireFunction(destructorSignature,rawDestructor);var legalFunctionName=makeLegalFunctionName(name);exposePublicSymbol(legalFunctionName,function(){throwUnboundTypeError(`Cannot construct ${name} due to unbound types`,[baseClassRawType])});whenDependentTypesAreResolved([rawType,rawPointerType,rawConstPointerType],baseClassRawType?[baseClassRawType]:[],base=\u003e{base=base[0];var baseClass;var basePrototype;if(baseClassRawType){baseClass=base.registeredClass;basePrototype=baseClass.instancePrototype}else{basePrototype=ClassHandle.prototype}var constructor=createNamedFunction(name,function(...args){if(Object.getPrototypeOf(this)!==instancePrototype){throw new BindingError(`Use \u0027new\u0027 to construct ${name}`)}if(undefined===registeredClass.constructor_body){throw new BindingError(`${name} has no accessible constructor`)}var body=registeredClass.constructor_body[args.length];if(undefined===body){throw new BindingError(`Tried to invoke ctor of ${name} with invalid number of parameters (${args.length}) - expected (${Object.keys(registeredClass.constructor_body).toString()}) parameters instead!`)}return body.apply(this,args)});var instancePrototype=Object.create(basePrototype,{constructor:{value:constructor}});constructor.prototype=instancePrototype;var registeredClass=new RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast);if(registeredClass.baseClass){registeredClass.baseClass.__derivedClasses??=[];registeredClass.baseClass.__derivedClasses.push(registeredClass)}var referenceConverter=new RegisteredPointer(name,registeredClass,true,false,false);var pointerConverter=new RegisteredPointer(name+\"*\",registeredClass,false,false,false);var constPointerConverter=new RegisteredPointer(name+\" const*\",registeredClass,false,true,false);registeredPointers[rawType]={pointerType:pointerConverter,constPointerType:constPointerConverter};replacePublicSymbol(legalFunctionName,constructor);return[referenceConverter,pointerConverter,constPointerConverter]})}var heap32VectorToArray=(count,firstElement)=\u003e{var array=[];for(var i=0;i\u003ccount;i++){array.push(HEAPU32[firstElement+i*4\u003e\u003e\u003e2\u003e\u003e\u003e0])}return array};function usesDestructorStack(argTypes){for(var i=1;i\u003cargTypes.length;++i){if(argTypes[i]!==null\u0026\u0026argTypes[i].destructorFunction===undefined){return true}}return false}function createJsInvoker(argTypes,isClassMethodFunc,returns,isAsync){var needsDestructorStack=usesDestructorStack(argTypes);var argCount=argTypes.length-2;var argsList=[];var argsListWired=[\"fn\"];if(isClassMethodFunc){argsListWired.push(\"thisWired\")}for(var i=0;i\u003cargCount;++i){argsList.push(`arg${i}`);argsListWired.push(`arg${i}Wired`)}argsList=argsList.join(\",\");argsListWired=argsListWired.join(\",\");var invokerFnBody=`return function (${argsList}) {\\n`;if(needsDestructorStack){invokerFnBody+=\"var destructors = [];\\n\"}var dtorStack=needsDestructorStack?\"destructors\":\"null\";var args1=[\"humanName\",\"throwBindingError\",\"invoker\",\"fn\",\"runDestructors\",\"fromRetWire\",\"toClassParamWire\"];if(isClassMethodFunc){invokerFnBody+=`var thisWired = toClassParamWire(${dtorStack}, this);\\n`}for(var i=0;i\u003cargCount;++i){var argName=`toArg${i}Wire`;invokerFnBody+=`var arg${i}Wired = ${argName}(${dtorStack}, arg${i});\\n`;args1.push(argName)}invokerFnBody+=(returns||isAsync?\"var rv = \":\"\")+`invoker(${argsListWired});\\n`;if(needsDestructorStack){invokerFnBody+=\"runDestructors(destructors);\\n\"}else{for(var i=isClassMethodFunc?1:2;i\u003cargTypes.length;++i){var paramName=i===1?\"thisWired\":\"arg\"+(i-2)+\"Wired\";if(argTypes[i].destructorFunction!==null){invokerFnBody+=`${paramName}_dtor(${paramName});\\n`;args1.push(`${paramName}_dtor`)}}}if(returns){invokerFnBody+=\"var ret = fromRetWire(rv);\\n\"+\"return ret;\\n\"}else{}invokerFnBody+=\"}\\n\";return new Function(args1,invokerFnBody)}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc,isAsync){var argCount=argTypes.length;if(argCount\u003c2){throwBindingError(\"argTypes array size mismatch! Must at least get return value and \u0027this\u0027 types!\")}var isClassMethodFunc=argTypes[1]!==null\u0026\u0026classType!==null;var needsDestructorStack=usesDestructorStack(argTypes);var returns=!argTypes[0].isVoid;var retType=argTypes[0];var instType=argTypes[1];var closureArgs=[humanName,throwBindingError,cppInvokerFunc,cppTargetFunc,runDestructors,retType.fromWireType.bind(retType),instType?.toWireType.bind(instType)];for(var i=2;i\u003cargCount;++i){var argType=argTypes[i];closureArgs.push(argType.toWireType.bind(argType))}if(!needsDestructorStack){for(var i=isClassMethodFunc?1:2;i\u003cargTypes.length;++i){if(argTypes[i].destructorFunction!==null){closureArgs.push(argTypes[i].destructorFunction)}}}let invokerFactory=createJsInvoker(argTypes,isClassMethodFunc,returns,isAsync);var invokerFn=invokerFactory(...closureArgs);return createNamedFunction(humanName,invokerFn)}var __embind_register_class_constructor=function(rawClassType,argCount,rawArgTypesAddr,invokerSignature,invoker,rawConstructor){rawClassType\u003e\u003e\u003e=0;rawArgTypesAddr\u003e\u003e\u003e=0;invokerSignature\u003e\u003e\u003e=0;invoker\u003e\u003e\u003e=0;rawConstructor\u003e\u003e\u003e=0;var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);invoker=embind__requireFunction(invokerSignature,invoker);whenDependentTypesAreResolved([],[rawClassType],classType=\u003e{classType=classType[0];var humanName=`constructor ${classType.name}`;if(undefined===classType.registeredClass.constructor_body){classType.registeredClass.constructor_body=[]}if(undefined!==classType.registeredClass.constructor_body[argCount-1]){throw new BindingError(`Cannot register multiple constructors with identical number of parameters (${argCount-1}) for class \u0027${classType.name}\u0027! Overload resolution is currently only performed using the parameter count, not actual type info!`)}classType.registeredClass.constructor_body[argCount-1]=()=\u003e{throwUnboundTypeError(`Cannot construct ${classType.name} due to unbound types`,rawArgTypes)};whenDependentTypesAreResolved([],rawArgTypes,argTypes=\u003e{argTypes.splice(1,0,null);classType.registeredClass.constructor_body[argCount-1]=craftInvokerFunction(humanName,argTypes,null,invoker,rawConstructor);return[]});return[]})};var getFunctionName=signature=\u003e{signature=signature.trim();const argsIndex=signature.indexOf(\"(\");if(argsIndex===-1)return signature;return signature.slice(0,argsIndex)};var __embind_register_class_function=function(rawClassType,methodName,argCount,rawArgTypesAddr,invokerSignature,rawInvoker,context,isPureVirtual,isAsync,isNonnullReturn){rawClassType\u003e\u003e\u003e=0;methodName\u003e\u003e\u003e=0;rawArgTypesAddr\u003e\u003e\u003e=0;invokerSignature\u003e\u003e\u003e=0;rawInvoker\u003e\u003e\u003e=0;context\u003e\u003e\u003e=0;var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);methodName=AsciiToString(methodName);methodName=getFunctionName(methodName);rawInvoker=embind__requireFunction(invokerSignature,rawInvoker,isAsync);whenDependentTypesAreResolved([],[rawClassType],classType=\u003e{classType=classType[0];var humanName=`${classType.name}.${methodName}`;if(methodName.startsWith(\"@@\")){methodName=Symbol[methodName.substring(2)]}if(isPureVirtual){classType.registeredClass.pureVirtualFunctions.push(methodName)}function unboundTypesHandler(){throwUnboundTypeError(`Cannot call ${humanName} due to unbound types`,rawArgTypes)}var proto=classType.registeredClass.instancePrototype;var method=proto[methodName];if(undefined===method||undefined===method.overloadTable\u0026\u0026method.className!==classType.name\u0026\u0026method.argCount===argCount-2){unboundTypesHandler.argCount=argCount-2;unboundTypesHandler.className=classType.name;proto[methodName]=unboundTypesHandler}else{ensureOverloadTable(proto,methodName,humanName);proto[methodName].overloadTable[argCount-2]=unboundTypesHandler}whenDependentTypesAreResolved([],rawArgTypes,argTypes=\u003e{var memberFunction=craftInvokerFunction(humanName,argTypes,classType,rawInvoker,context,isAsync);if(undefined===proto[methodName].overloadTable){memberFunction.argCount=argCount-2;proto[methodName]=memberFunction}else{proto[methodName].overloadTable[argCount-2]=memberFunction}return[]});return[]})};var emval_freelist=[];var emval_handles=[0,1,,1,null,1,true,1,false,1];function __emval_decref(handle){handle\u003e\u003e\u003e=0;if(handle\u003e9\u0026\u00260===--emval_handles[handle+1]){emval_handles[handle]=undefined;emval_freelist.push(handle)}}var Emval={toValue:handle=\u003e{if(!handle){throwBindingError(`Cannot use deleted val. handle = ${handle}`)}return emval_handles[handle]},toHandle:value=\u003e{switch(value){case undefined:return 2;case null:return 4;case true:return 6;case false:return 8;default:{const handle=emval_freelist.pop()||emval_handles.length;emval_handles[handle]=value;emval_handles[handle+1]=1;return handle}}}};var EmValType={name:\"emscripten::val\",fromWireType:handle=\u003e{var rv=Emval.toValue(handle);__emval_decref(handle);return rv},toWireType:(destructors,value)=\u003eEmval.toHandle(value),readValueFromPointer:readPointer,destructorFunction:null};function __embind_register_emval(rawType){rawType\u003e\u003e\u003e=0;return registerType(rawType,EmValType)}var enumReadValueFromPointer=(name,width,signed)=\u003e{switch(width){case 1:return signed?function(pointer){return this.fromWireType(HEAP8[pointer\u003e\u003e\u003e0])}:function(pointer){return this.fromWireType(HEAPU8[pointer\u003e\u003e\u003e0])};case 2:return signed?function(pointer){return this.fromWireType(HEAP16[pointer\u003e\u003e\u003e1\u003e\u003e\u003e0])}:function(pointer){return this.fromWireType(HEAPU16[pointer\u003e\u003e\u003e1\u003e\u003e\u003e0])};case 4:return signed?function(pointer){return this.fromWireType(HEAP32[pointer\u003e\u003e\u003e2\u003e\u003e\u003e0])}:function(pointer){return this.fromWireType(HEAPU32[pointer\u003e\u003e\u003e2\u003e\u003e\u003e0])};default:throw new TypeError(`invalid integer width (${width}): ${name}`)}};function getEnumValueType(rawValueType){return rawValueType===0?\"object\":rawValueType===1?\"number\":\"string\"}function __embind_register_enum(rawType,name,size,isSigned,rawValueType){rawType\u003e\u003e\u003e=0;name\u003e\u003e\u003e=0;size\u003e\u003e\u003e=0;name=AsciiToString(name);const valueType=getEnumValueType(rawValueType);switch(valueType){case\"object\":{function ctor(){}ctor.values={};registerType(rawType,{name,constructor:ctor,valueType,fromWireType:function(c){return this.constructor.values[c]},toWireType:(destructors,c)=\u003ec.value,readValueFromPointer:enumReadValueFromPointer(name,size,isSigned),destructorFunction:null});exposePublicSymbol(name,ctor);break}case\"number\":{var keysMap={};registerType(rawType,{name,keysMap,valueType,fromWireType:c=\u003ec,toWireType:(destructors,c)=\u003ec,readValueFromPointer:enumReadValueFromPointer(name,size,isSigned),destructorFunction:null});exposePublicSymbol(name,keysMap);delete Module[name].argCount;break}case\"string\":{var valuesMap={};var reverseMap={};var keysMap={};registerType(rawType,{name,valuesMap,reverseMap,keysMap,valueType,fromWireType:function(c){return this.reverseMap[c]},toWireType:function(destructors,c){return this.valuesMap[c]},readValueFromPointer:enumReadValueFromPointer(name,size,isSigned),destructorFunction:null});exposePublicSymbol(name,keysMap);delete Module[name].argCount;break}}}var requireRegisteredType=(rawType,humanName)=\u003e{var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(`${humanName} has unknown type ${getTypeName(rawType)}`)}return impl};function __embind_register_enum_value(rawEnumType,name,enumValue){rawEnumType\u003e\u003e\u003e=0;name\u003e\u003e\u003e=0;var enumType=requireRegisteredType(rawEnumType,\"enum\");name=AsciiToString(name);switch(enumType.valueType){case\"object\":{var Enum=enumType.constructor;var Value=Object.create(enumType.constructor.prototype,{value:{value:enumValue},constructor:{value:createNamedFunction(`${enumType.name}_${name}`,function(){})}});Enum.values[enumValue]=Value;Enum[name]=Value;break}case\"number\":{enumType.keysMap[name]=enumValue;break}case\"string\":{enumType.valuesMap[name]=enumValue;enumType.reverseMap[enumValue]=name;enumType.keysMap[name]=name;break}}}var floatReadValueFromPointer=(name,width)=\u003e{switch(width){case 4:return function(pointer){return this.fromWireType(HEAPF32[pointer\u003e\u003e\u003e2\u003e\u003e\u003e0])};case 8:return function(pointer){return this.fromWireType(HEAPF64[pointer\u003e\u003e\u003e3\u003e\u003e\u003e0])};default:throw new TypeError(`invalid float width (${width}): ${name}`)}};var __embind_register_float=function(rawType,name,size){rawType\u003e\u003e\u003e=0;name\u003e\u003e\u003e=0;size\u003e\u003e\u003e=0;name=AsciiToString(name);registerType(rawType,{name,fromWireType:value=\u003evalue,toWireType:(destructors,value)=\u003evalue,readValueFromPointer:floatReadValueFromPointer(name,size),destructorFunction:null})};function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn,isAsync,isNonnullReturn){name\u003e\u003e\u003e=0;rawArgTypesAddr\u003e\u003e\u003e=0;signature\u003e\u003e\u003e=0;rawInvoker\u003e\u003e\u003e=0;fn\u003e\u003e\u003e=0;var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=AsciiToString(name);name=getFunctionName(name);rawInvoker=embind__requireFunction(signature,rawInvoker,isAsync);exposePublicSymbol(name,function(){throwUnboundTypeError(`Cannot call ${name} due to unbound types`,argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,argTypes=\u003e{var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn,isAsync),argCount-1);return[]})}var __embind_register_integer=function(primitiveType,name,size,minRange,maxRange){primitiveType\u003e\u003e\u003e=0;name\u003e\u003e\u003e=0;size\u003e\u003e\u003e=0;name=AsciiToString(name);const isUnsignedType=minRange===0;let fromWireType=value=\u003evalue;if(isUnsignedType){var bitshift=32-8*size;fromWireType=value=\u003evalue\u003c\u003cbitshift\u003e\u003e\u003ebitshift;maxRange=fromWireType(maxRange)}registerType(primitiveType,{name,fromWireType,toWireType:(destructors,value)=\u003evalue,readValueFromPointer:integerReadValueFromPointer(name,size,minRange!==0),destructorFunction:null})};var installIndexedIterator=(proto,sizeMethodName,getMethodName)=\u003e{const makeIterator=(size,getValue)=\u003e{let index=0;return{next(){if(index\u003e=size){return{done:true}}const current=index;index++;const value=getValue(current);return{value,done:false}},[Symbol.iterator](){return this}}};if(!proto[Symbol.iterator]){proto[Symbol.iterator]=function(){const size=this[sizeMethodName]();return makeIterator(size,i=\u003ethis[getMethodName](i))}}};var __embind_register_iterable=function(rawClassType,rawElementType,sizeMethodName,getMethodName){rawClassType\u003e\u003e\u003e=0;rawElementType\u003e\u003e\u003e=0;sizeMethodName\u003e\u003e\u003e=0;getMethodName\u003e\u003e\u003e=0;sizeMethodName=AsciiToString(sizeMethodName);getMethodName=AsciiToString(getMethodName);whenDependentTypesAreResolved([],[rawClassType,rawElementType],types=\u003e{const classType=types[0];installIndexedIterator(classType.registeredClass.instancePrototype,sizeMethodName,getMethodName);return[]})};function __embind_register_memory_view(rawType,dataTypeIndex,name){rawType\u003e\u003e\u003e=0;name\u003e\u003e\u003e=0;var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){var size=HEAPU32[handle\u003e\u003e\u003e2\u003e\u003e\u003e0];var data=HEAPU32[handle+4\u003e\u003e\u003e2\u003e\u003e\u003e0];return new TA(HEAP8.buffer,data,size)}name=AsciiToString(name);registerType(rawType,{name,fromWireType:decodeMemoryView,readValueFromPointer:decodeMemoryView},{ignoreDuplicateRegistrations:true})}var EmValOptionalType=Object.assign({optional:true},EmValType);function __embind_register_optional(rawOptionalType,rawType){rawOptionalType\u003e\u003e\u003e=0;rawType\u003e\u003e\u003e=0;registerType(rawOptionalType,EmValOptionalType)}var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=\u003e{outIdx\u003e\u003e\u003e=0;if(!(maxBytesToWrite\u003e0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i\u003cstr.length;++i){var u=str.codePointAt(i);if(u\u003c=127){if(outIdx\u003e=endIdx)break;heap[outIdx++\u003e\u003e\u003e0]=u}else if(u\u003c=2047){if(outIdx+1\u003e=endIdx)break;heap[outIdx++\u003e\u003e\u003e0]=192|u\u003e\u003e6;heap[outIdx++\u003e\u003e\u003e0]=128|u\u002663}else if(u\u003c=65535){if(outIdx+2\u003e=endIdx)break;heap[outIdx++\u003e\u003e\u003e0]=224|u\u003e\u003e12;heap[outIdx++\u003e\u003e\u003e0]=128|u\u003e\u003e6\u002663;heap[outIdx++\u003e\u003e\u003e0]=128|u\u002663}else{if(outIdx+3\u003e=endIdx)break;heap[outIdx++\u003e\u003e\u003e0]=240|u\u003e\u003e18;heap[outIdx++\u003e\u003e\u003e0]=128|u\u003e\u003e12\u002663;heap[outIdx++\u003e\u003e\u003e0]=128|u\u003e\u003e6\u002663;heap[outIdx++\u003e\u003e\u003e0]=128|u\u002663;i++}}heap[outIdx\u003e\u003e\u003e0]=0;return outIdx-startIdx};var stringToUTF8=(str,outPtr,maxBytesToWrite)=\u003estringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);var lengthBytesUTF8=str=\u003e{var len=0;for(var i=0;i\u003cstr.length;++i){var c=str.charCodeAt(i);if(c\u003c=127){len++}else if(c\u003c=2047){len+=2}else if(c\u003e=55296\u0026\u0026c\u003c=57343){len+=4;++i}else{len+=3}}return len};var UTF8Decoder=globalThis.TextDecoder\u0026\u0026new TextDecoder;var findStringEnd=(heapOrArray,idx,maxBytesToRead,ignoreNul)=\u003e{var maxIdx=idx+maxBytesToRead;if(ignoreNul)return maxIdx;while(heapOrArray[idx]\u0026\u0026!(idx\u003e=maxIdx))++idx;return idx};var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead,ignoreNul)=\u003e{idx\u003e\u003e\u003e=0;var endPtr=findStringEnd(heapOrArray,idx,maxBytesToRead,ignoreNul);if(endPtr-idx\u003e16\u0026\u0026heapOrArray.buffer\u0026\u0026UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str=\"\";while(idx\u003cendPtr){var u0=heapOrArray[idx++];if(!(u0\u0026128)){str+=String.fromCharCode(u0);continue}var u1=heapOrArray[idx++]\u002663;if((u0\u0026224)==192){str+=String.fromCharCode((u0\u002631)\u003c\u003c6|u1);continue}var u2=heapOrArray[idx++]\u002663;if((u0\u0026240)==224){u0=(u0\u002615)\u003c\u003c12|u1\u003c\u003c6|u2}else{u0=(u0\u00267)\u003c\u003c18|u1\u003c\u003c12|u2\u003c\u003c6|heapOrArray[idx++]\u002663}if(u0\u003c65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch\u003e\u003e10,56320|ch\u00261023)}}return str};var UTF8ToString=(ptr,maxBytesToRead,ignoreNul)=\u003e{ptr\u003e\u003e\u003e=0;return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead,ignoreNul):\"\"};function __embind_register_std_string(rawType,name){rawType\u003e\u003e\u003e=0;name\u003e\u003e\u003e=0;name=AsciiToString(name);var stdStringIsUTF8=true;registerType(rawType,{name,fromWireType(value){var length=HEAPU32[value\u003e\u003e\u003e2\u003e\u003e\u003e0];var payload=value+4;var str;if(stdStringIsUTF8){str=UTF8ToString(payload,length,true)}else{str=\"\";for(var i=0;i\u003clength;++i){str+=String.fromCharCode(HEAPU8[payload+i\u003e\u003e\u003e0])}}_free(value);return str},toWireType(destructors,value){if(value instanceof ArrayBuffer){value=new Uint8Array(value)}var length;var valueIsOfTypeString=typeof value==\"string\";if(!(valueIsOfTypeString||ArrayBuffer.isView(value)\u0026\u0026value.BYTES_PER_ELEMENT==1)){throwBindingError(\"Cannot pass non-string to std::string\")}if(stdStringIsUTF8\u0026\u0026valueIsOfTypeString){length=lengthBytesUTF8(value)}else{length=value.length}var base=_malloc(4+length+1);var ptr=base+4;HEAPU32[base\u003e\u003e\u003e2\u003e\u003e\u003e0]=length;if(valueIsOfTypeString){if(stdStringIsUTF8){stringToUTF8(value,ptr,length+1)}else{for(var i=0;i\u003clength;++i){var charCode=value.charCodeAt(i);if(charCode\u003e255){_free(base);throwBindingError(\"String has UTF-16 code units that do not fit in 8 bits\")}HEAPU8[ptr+i\u003e\u003e\u003e0]=charCode}}}else{HEAPU8.set(value,ptr\u003e\u003e\u003e0)}if(destructors!==null){destructors.push(_free,base)}return base},readValueFromPointer:readPointer,destructorFunction(ptr){_free(ptr)}})}var UTF16Decoder=globalThis.TextDecoder?new TextDecoder(\"utf-16le\"):undefined;var UTF16ToString=(ptr,maxBytesToRead,ignoreNul)=\u003e{var idx=ptr\u003e\u003e\u003e1;var endIdx=findStringEnd(HEAPU16,idx,maxBytesToRead/2,ignoreNul);if(endIdx-idx\u003e16\u0026\u0026UTF16Decoder)return UTF16Decoder.decode(HEAPU16.subarray(idx\u003e\u003e\u003e0,endIdx\u003e\u003e\u003e0));var str=\"\";for(var i=idx;i\u003cendIdx;++i){var codeUnit=HEAPU16[i\u003e\u003e\u003e0];str+=String.fromCharCode(codeUnit)}return str};var stringToUTF16=(str,outPtr,maxBytesToWrite)=\u003e{maxBytesToWrite??=2147483647;if(maxBytesToWrite\u003c2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite\u003cstr.length*2?maxBytesToWrite/2:str.length;for(var i=0;i\u003cnumCharsToWrite;++i){var codeUnit=str.charCodeAt(i);HEAP16[outPtr\u003e\u003e\u003e1\u003e\u003e\u003e0]=codeUnit;outPtr+=2}HEAP16[outPtr\u003e\u003e\u003e1\u003e\u003e\u003e0]=0;return outPtr-startPtr};var lengthBytesUTF16=str=\u003estr.length*2;var UTF32ToString=(ptr,maxBytesToRead,ignoreNul)=\u003e{var str=\"\";var startIdx=ptr\u003e\u003e\u003e2;for(var i=0;!(i\u003e=maxBytesToRead/4);i++){var utf32=HEAPU32[startIdx+i\u003e\u003e\u003e0];if(!utf32\u0026\u0026!ignoreNul)break;str+=String.fromCodePoint(utf32)}return str};var stringToUTF32=(str,outPtr,maxBytesToWrite)=\u003e{outPtr\u003e\u003e\u003e=0;maxBytesToWrite??=2147483647;if(maxBytesToWrite\u003c4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i\u003cstr.length;++i){var codePoint=str.codePointAt(i);if(codePoint\u003e65535){i++}HEAP32[outPtr\u003e\u003e\u003e2\u003e\u003e\u003e0]=codePoint;outPtr+=4;if(outPtr+4\u003eendPtr)break}HEAP32[outPtr\u003e\u003e\u003e2\u003e\u003e\u003e0]=0;return outPtr-startPtr};var lengthBytesUTF32=str=\u003e{var len=0;for(var i=0;i\u003cstr.length;++i){var codePoint=str.codePointAt(i);if(codePoint\u003e65535){i++}len+=4}return len};function __embind_register_std_wstring(rawType,charSize,name){rawType\u003e\u003e\u003e=0;charSize\u003e\u003e\u003e=0;name\u003e\u003e\u003e=0;name=AsciiToString(name);var decodeString,encodeString,lengthBytesUTF;if(charSize===2){decodeString=UTF16ToString;encodeString=stringToUTF16;lengthBytesUTF=lengthBytesUTF16}else{decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32}registerType(rawType,{name,fromWireType:value=\u003e{var length=HEAPU32[value\u003e\u003e\u003e2\u003e\u003e\u003e0];var str=decodeString(value+4,length*charSize,true);_free(value);return str},toWireType:(destructors,value)=\u003e{if(!(typeof value==\"string\")){throwBindingError(`Cannot pass non-string to C++ string type ${name}`)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr\u003e\u003e\u003e2\u003e\u003e\u003e0]=length/charSize;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},readValueFromPointer:readPointer,destructorFunction(ptr){_free(ptr)}})}function __embind_register_value_object(rawType,name,constructorSignature,rawConstructor,destructorSignature,rawDestructor){rawType\u003e\u003e\u003e=0;name\u003e\u003e\u003e=0;constructorSignature\u003e\u003e\u003e=0;rawConstructor\u003e\u003e\u003e=0;destructorSignature\u003e\u003e\u003e=0;rawDestructor\u003e\u003e\u003e=0;structRegistrations[rawType]={name:AsciiToString(name),rawConstructor:embind__requireFunction(constructorSignature,rawConstructor),rawDestructor:embind__requireFunction(destructorSignature,rawDestructor),fields:[]}}function __embind_register_value_object_field(structType,fieldName,getterReturnType,getterSignature,getter,getterContext,setterArgumentType,setterSignature,setter,setterContext){structType\u003e\u003e\u003e=0;fieldName\u003e\u003e\u003e=0;getterReturnType\u003e\u003e\u003e=0;getterSignature\u003e\u003e\u003e=0;getter\u003e\u003e\u003e=0;getterContext\u003e\u003e\u003e=0;setterArgumentType\u003e\u003e\u003e=0;setterSignature\u003e\u003e\u003e=0;setter\u003e\u003e\u003e=0;setterContext\u003e\u003e\u003e=0;structRegistrations[structType].fields.push({fieldName:AsciiToString(fieldName),getterReturnType,getter:embind__requireFunction(getterSignature,getter),getterContext,setterArgumentType,setter:embind__requireFunction(setterSignature,setter),setterContext})}var __embind_register_void=function(rawType,name){rawType\u003e\u003e\u003e=0;name\u003e\u003e\u003e=0;name=AsciiToString(name);registerType(rawType,{isVoid:true,name,fromWireType:()=\u003eundefined,toWireType:(destructors,o)=\u003eundefined})};function __emval_array_to_memory_view(dst,src){dst\u003e\u003e\u003e=0;src\u003e\u003e\u003e=0;dst=Emval.toValue(dst);src=Emval.toValue(src);dst.set(src)}var emval_methodCallers=[];var emval_addMethodCaller=caller=\u003e{var id=emval_methodCallers.length;emval_methodCallers.push(caller);return id};var emval_lookupTypes=(argCount,argTypes)=\u003e{var a=new Array(argCount);for(var i=0;i\u003cargCount;++i){a[i]=requireRegisteredType(HEAPU32[argTypes+i*4\u003e\u003e\u003e2\u003e\u003e\u003e0],`parameter ${i}`)}return a};var emval_returnValue=(toReturnWire,destructorsRef,handle)=\u003e{var destructors=[];var result=toReturnWire(destructors,handle);if(destructors.length){HEAPU32[destructorsRef\u003e\u003e\u003e2\u003e\u003e\u003e0]=Emval.toHandle(destructors)}return result};var emval_symbols={};var getStringOrSymbol=address=\u003e{var symbol=emval_symbols[address];if(symbol===undefined){return AsciiToString(address)}return symbol};var __emval_create_invoker=function(argCount,argTypesPtr,kind){argTypesPtr\u003e\u003e\u003e=0;var GenericWireTypeSize=8;var[retType,...argTypes]=emval_lookupTypes(argCount,argTypesPtr);var toReturnWire=retType.toWireType.bind(retType);var argFromPtr=argTypes.map(type=\u003etype.readValueFromPointer.bind(type));argCount--;var captures={toValue:Emval.toValue};var args=argFromPtr.map((argFromPtr,i)=\u003e{var captureName=`argFromPtr${i}`;captures[captureName]=argFromPtr;return`${captureName}(args${i?\"+\"+i*GenericWireTypeSize:\"\"})`});var functionBody;switch(kind){case 0:functionBody=\"toValue(handle)\";break;case 2:functionBody=\"new (toValue(handle))\";break;case 3:functionBody=\"\";break;case 1:captures[\"getStringOrSymbol\"]=getStringOrSymbol;functionBody=\"toValue(handle)[getStringOrSymbol(methodName)]\";break}functionBody+=`(${args})`;if(!retType.isVoid){captures[\"toReturnWire\"]=toReturnWire;captures[\"emval_returnValue\"]=emval_returnValue;functionBody=`return emval_returnValue(toReturnWire, destructorsRef, ${functionBody})`}functionBody=`return function (handle, methodName, destructorsRef, args) {\\n${functionBody}\\n}`;var invokerFunction=new Function(Object.keys(captures),functionBody)(...Object.values(captures));var functionName=`methodCaller\u003c(${argTypes.map(t=\u003et.name)}) =\u003e ${retType.name}\u003e`;return emval_addMethodCaller(createNamedFunction(functionName,invokerFunction))};function __emval_equals(first,second){first\u003e\u003e\u003e=0;second\u003e\u003e\u003e=0;first=Emval.toValue(first);second=Emval.toValue(second);return first==second}function __emval_get_property(handle,key){handle\u003e\u003e\u003e=0;key\u003e\u003e\u003e=0;handle=Emval.toValue(handle);key=Emval.toValue(key);return Emval.toHandle(handle[key])}function __emval_incref(handle){handle\u003e\u003e\u003e=0;if(handle\u003e9){emval_handles[handle+1]+=1}}function __emval_invoke(caller,handle,methodName,destructorsRef,args){caller\u003e\u003e\u003e=0;handle\u003e\u003e\u003e=0;methodName\u003e\u003e\u003e=0;destructorsRef\u003e\u003e\u003e=0;args\u003e\u003e\u003e=0;return emval_methodCallers[caller](handle,methodName,destructorsRef,args)}function __emval_new_cstring(v){v\u003e\u003e\u003e=0;return Emval.toHandle(getStringOrSymbol(v))}function __emval_new_object(){return Emval.toHandle({})}function __emval_run_destructors(handle){handle\u003e\u003e\u003e=0;var destructors=Emval.toValue(handle);runDestructors(destructors);__emval_decref(handle)}function __emval_set_property(handle,key,value){handle\u003e\u003e\u003e=0;key\u003e\u003e\u003e=0;value\u003e\u003e\u003e=0;handle=Emval.toValue(handle);key=Emval.toValue(key);value=Emval.toValue(value);handle[key]=value}var getHeapMax=()=\u003e4294901760;var alignMemory=(size,alignment)=\u003eMath.ceil(size/alignment)*alignment;var growMemory=size=\u003e{var oldHeapSize=wasmMemory.buffer.byteLength;var pages=(size-oldHeapSize+65535)/65536|0;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};function _emscripten_resize_heap(requestedSize){requestedSize\u003e\u003e\u003e=0;var oldSize=HEAPU8.length;var maxHeapSize=getHeapMax();if(requestedSize\u003emaxHeapSize){return false}for(var cutDown=1;cutDown\u003c=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false}var updateTableMap=(offset,count)=\u003e{if(functionsInTableMap){for(var i=offset;i\u003coffset+count;i++){var item=getWasmTableEntry(i);if(item){functionsInTableMap.set(item,i)}}}};var functionsInTableMap;var getFunctionAddress=func=\u003e{if(!functionsInTableMap){functionsInTableMap=new WeakMap;updateTableMap(0,wasmTable.length)}return functionsInTableMap.get(func)||0};var freeTableIndexes=[];var getEmptyTableSlot=()=\u003e{if(freeTableIndexes.length){return freeTableIndexes.pop()}return wasmTable[\"grow\"](1)};var setWasmTableEntry=(idx,func)=\u003ewasmTable.set(idx,func);var uleb128EncodeWithLen=arr=\u003e{const n=arr.length;return[n%128|128,n\u003e\u003e7,...arr]};var wasmTypeCodes={i:127,p:127,j:126,f:125,d:124,e:111};var generateTypePack=types=\u003euleb128EncodeWithLen(Array.from(types,type=\u003e{var code=wasmTypeCodes[type];return code}));var convertJsFunctionToWasm=(func,sig)=\u003e{var bytes=Uint8Array.of(0,97,115,109,1,0,0,0,1,...uleb128EncodeWithLen([1,96,...generateTypePack(sig.slice(1)),...generateTypePack(sig[0]===\"v\"?\"\":sig[0])]),2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0);var module=new WebAssembly.Module(bytes);var instance=new WebAssembly.Instance(module,{e:{f:func}});var wrappedFunc=instance.exports[\"f\"];return wrappedFunc};var addFunction=(func,sig)=\u003e{var rtn=getFunctionAddress(func);if(rtn){return rtn}var ret=getEmptyTableSlot();try{setWasmTableEntry(ret,func)}catch(err){if(!(err instanceof TypeError)){throw err}var wrapped=convertJsFunctionToWasm(func,sig);setWasmTableEntry(ret,wrapped)}functionsInTableMap.set(func,ret);return ret};var removeFunction=index=\u003e{functionsInTableMap.delete(getWasmTableEntry(index));setWasmTableEntry(index,null);freeTableIndexes.push(index)};init_ClassHandle();init_RegisteredPointer();{if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(Module[\"print\"])out=Module[\"print\"];if(Module[\"printErr\"])err=Module[\"printErr\"];if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length\u003e0){Module[\"preInit\"].shift()()}}}Module[\"addFunction\"]=addFunction;Module[\"removeFunction\"]=removeFunction;var ___getTypeName,_malloc,_free,memory,__indirect_function_table,wasmMemory,wasmTable;function assignWasmExports(wasmExports){___getTypeName=wasmExports[\"K\"];_malloc=wasmExports[\"M\"];_free=wasmExports[\"N\"];memory=wasmMemory=wasmExports[\"I\"];__indirect_function_table=wasmTable=wasmExports[\"L\"]}var wasmImports={l:___cxa_throw,C:__abort_js,q:__embind_finalize_value_object,z:__embind_register_bigint,G:__embind_register_bool,j:__embind_register_class,i:__embind_register_class_constructor,a:__embind_register_class_function,E:__embind_register_emval,x:__embind_register_enum,d:__embind_register_enum_value,y:__embind_register_float,c:__embind_register_function,p:__embind_register_integer,m:__embind_register_iterable,h:__embind_register_memory_view,n:__embind_register_optional,F:__embind_register_std_string,w:__embind_register_std_wstring,r:__embind_register_value_object,k:__embind_register_value_object_field,H:__embind_register_void,u:__emval_array_to_memory_view,g:__emval_create_invoker,b:__emval_decref,o:__emval_equals,B:__emval_get_property,t:__emval_incref,f:__emval_invoke,s:__emval_new_cstring,A:__emval_new_object,e:__emval_run_destructors,v:__emval_set_property,D:_emscripten_resize_heap};function applySignatureConversions(wasmExports){wasmExports=Object.assign({},wasmExports);var makeWrapper_pp=f=\u003ea0=\u003ef(a0)\u003e\u003e\u003e0;var makeWrapper_p=f=\u003e()=\u003ef()\u003e\u003e\u003e0;wasmExports[\"K\"]=makeWrapper_pp(wasmExports[\"K\"]);wasmExports[\"M\"]=makeWrapper_pp(wasmExports[\"M\"]);wasmExports[\"_emscripten_stack_alloc\"]=makeWrapper_pp(wasmExports[\"_emscripten_stack_alloc\"]);wasmExports[\"emscripten_stack_get_current\"]=makeWrapper_p(wasmExports[\"emscripten_stack_get_current\"]);return wasmExports}function run(){preRun();function doRun(){Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();readyPromiseResolve?.(Module);Module[\"onRuntimeInitialized\"]?.();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(()=\u003e{setTimeout(()=\u003eModule[\"setStatus\"](\"\"),1);doRun()},1)}else{doRun()}}var wasmExports;wasmExports=await (createWasm());run();if(runtimeInitialized){moduleRtn=Module}else{moduleRtn=new Promise((resolve,reject)=\u003e{readyPromiseResolve=resolve;readyPromiseReject=reject})}\n;return moduleRtn}export default Module;\n";
