@grida/canvas-wasm 0.0.55 → 0.0.57

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -117,7 +117,7 @@ var require_grida_canvas_wasm = __commonJS({
117
117
  runtimeInitialized = true;
118
118
  if (!Module["noFSInit"] && !FS.initialized) FS.init();
119
119
  TTY.init();
120
- wasmExports["jg"]();
120
+ wasmExports["lg"]();
121
121
  FS.ignorePermissions = false;
122
122
  }
123
123
  function preMain() {
@@ -216,9 +216,9 @@ var require_grida_canvas_wasm = __commonJS({
216
216
  async function createWasm() {
217
217
  function receiveInstance(instance, module3) {
218
218
  wasmExports = instance.exports;
219
- wasmMemory = wasmExports["ig"];
219
+ wasmMemory = wasmExports["kg"];
220
220
  updateMemoryViews();
221
- wasmTable = wasmExports["kg"];
221
+ wasmTable = wasmExports["mg"];
222
222
  removeRunDependency("wasm-instantiate");
223
223
  return wasmExports;
224
224
  }
@@ -4995,11 +4995,9 @@ var require_grida_canvas_wasm = __commonJS({
4995
4995
  Module["stringToUTF8"] = stringToUTF8;
4996
4996
  Module["lengthBytesUTF8"] = lengthBytesUTF8;
4997
4997
  Module["GL"] = GL;
4998
- var wasmImports = { v: ___cxa_begin_catch, y: ___cxa_end_catch, a: ___cxa_find_matching_catch_2, m: ___cxa_find_matching_catch_3, N: ___cxa_find_matching_catch_4, Z: ___cxa_rethrow, w: ___cxa_throw, gb: ___cxa_uncaught_exceptions, d: ___resumeException, $: ___syscall_fcntl64, ub: ___syscall_fstat64, qb: ___syscall_getcwd, xb: ___syscall_ioctl, rb: ___syscall_lstat64, sb: ___syscall_newfstatat, _: ___syscall_openat, tb: ___syscall_stat64, Ab: __abort_js, ib: __emscripten_throw_longjmp, nb: __gmtime_js, lb: __mmap_js, mb: __munmap_js, Bb: __tzset_js, zb: _clock_time_get, yb: _emscripten_date_now, P: _emscripten_get_now, Gf: _emscripten_glActiveTexture, Hf: _emscripten_glAttachShader, ie: _emscripten_glBeginQuery, ce: _emscripten_glBeginQueryEXT, Ic: _emscripten_glBeginTransformFeedback, If: _emscripten_glBindAttribLocation, Jf: _emscripten_glBindBuffer, Fc: _emscripten_glBindBufferBase, Gc: _emscripten_glBindBufferRange, He: _emscripten_glBindFramebuffer, Ie: _emscripten_glBindRenderbuffer, oe: _emscripten_glBindSampler, Kf: _emscripten_glBindTexture, Ub: _emscripten_glBindTransformFeedback, bf: _emscripten_glBindVertexArray, ef: _emscripten_glBindVertexArrayOES, Lf: _emscripten_glBlendColor, Mf: _emscripten_glBlendEquation, Md: _emscripten_glBlendEquationSeparate, Nf: _emscripten_glBlendFunc, Ld: _emscripten_glBlendFuncSeparate, Be: _emscripten_glBlitFramebuffer, Of: _emscripten_glBufferData, Pf: _emscripten_glBufferSubData, Je: _emscripten_glCheckFramebufferStatus, Qf: _emscripten_glClear, ic: _emscripten_glClearBufferfi, jc: _emscripten_glClearBufferfv, lc: _emscripten_glClearBufferiv, kc: _emscripten_glClearBufferuiv, Rf: _emscripten_glClearColor, Kd: _emscripten_glClearDepthf, Sf: _emscripten_glClearStencil, xe: _emscripten_glClientWaitSync, bd: _emscripten_glClipControlEXT, Tf: _emscripten_glColorMask, Uf: _emscripten_glCompileShader, Vf: _emscripten_glCompressedTexImage2D, Uc: _emscripten_glCompressedTexImage3D, Wf: _emscripten_glCompressedTexSubImage2D, Tc: _emscripten_glCompressedTexSubImage3D, Ae: _emscripten_glCopyBufferSubData, Jd: _emscripten_glCopyTexImage2D, Xf: _emscripten_glCopyTexSubImage2D, Vc: _emscripten_glCopyTexSubImage3D, Yf: _emscripten_glCreateProgram, Zf: _emscripten_glCreateShader, _f: _emscripten_glCullFace, $f: _emscripten_glDeleteBuffers, Ke: _emscripten_glDeleteFramebuffers, ag: _emscripten_glDeleteProgram, je: _emscripten_glDeleteQueries, de: _emscripten_glDeleteQueriesEXT, Le: _emscripten_glDeleteRenderbuffers, pe: _emscripten_glDeleteSamplers, bg: _emscripten_glDeleteShader, ze: _emscripten_glDeleteSync, cg: _emscripten_glDeleteTextures, Tb: _emscripten_glDeleteTransformFeedbacks, cf: _emscripten_glDeleteVertexArrays, ff: _emscripten_glDeleteVertexArraysOES, Id: _emscripten_glDepthFunc, dg: _emscripten_glDepthMask, Hd: _emscripten_glDepthRangef, Gd: _emscripten_glDetachShader, eg: _emscripten_glDisable, fg: _emscripten_glDisableVertexAttribArray, gg: _emscripten_glDrawArrays, $e: _emscripten_glDrawArraysInstanced, Pd: _emscripten_glDrawArraysInstancedANGLE, Gb: _emscripten_glDrawArraysInstancedARB, Ye: _emscripten_glDrawArraysInstancedBaseInstanceWEBGL, _c: _emscripten_glDrawArraysInstancedEXT, Hb: _emscripten_glDrawArraysInstancedNV, We: _emscripten_glDrawBuffers, Yc: _emscripten_glDrawBuffersEXT, Qd: _emscripten_glDrawBuffersWEBGL, hg: _emscripten_glDrawElements, af: _emscripten_glDrawElementsInstanced, Od: _emscripten_glDrawElementsInstancedANGLE, Eb: _emscripten_glDrawElementsInstancedARB, Ze: _emscripten_glDrawElementsInstancedBaseVertexBaseInstanceWEBGL, Fb: _emscripten_glDrawElementsInstancedEXT, Zc: _emscripten_glDrawElementsInstancedNV, Qe: _emscripten_glDrawRangeElements, ea: _emscripten_glEnable, fa: _emscripten_glEnableVertexAttribArray, ke: _emscripten_glEndQuery, ee: _emscripten_glEndQueryEXT, Hc: _emscripten_glEndTransformFeedback, ue: _emscripten_glFenceSync, ga: _emscripten_glFinish, ha: _emscripten_glFlush, Me: _emscripten_glFramebufferRenderbuffer, Ne: _emscripten_glFramebufferTexture2D, Lc: _emscripten_glFramebufferTextureLayer, ia: _emscripten_glFrontFace, ja: _emscripten_glGenBuffers, Oe: _emscripten_glGenFramebuffers, le: _emscripten_glGenQueries, fe: _emscripten_glGenQueriesEXT, Pe: _emscripten_glGenRenderbuffers, qe: _emscripten_glGenSamplers, ka: _emscripten_glGenTextures, Sb: _emscripten_glGenTransformFeedbacks, _e: _emscripten_glGenVertexArrays, gf: _emscripten_glGenVertexArraysOES, De: _emscripten_glGenerateMipmap, Fd: _emscripten_glGetActiveAttrib, Ed: _emscripten_glGetActiveUniform, cc: _emscripten_glGetActiveUniformBlockName, dc: _emscripten_glGetActiveUniformBlockiv, gc: _emscripten_glGetActiveUniformsiv, Dd: _emscripten_glGetAttachedShaders, Cd: _emscripten_glGetAttribLocation, Bd: _emscripten_glGetBooleanv, Zb: _emscripten_glGetBufferParameteri64v, la: _emscripten_glGetBufferParameteriv, ma: _emscripten_glGetError, na: _emscripten_glGetFloatv, vc: _emscripten_glGetFragDataLocation, Ee: _emscripten_glGetFramebufferAttachmentParameteriv, _b: _emscripten_glGetInteger64i_v, ac: _emscripten_glGetInteger64v, Jc: _emscripten_glGetIntegeri_v, oa: _emscripten_glGetIntegerv, Kb: _emscripten_glGetInternalformativ, Ob: _emscripten_glGetProgramBinary, pa: _emscripten_glGetProgramInfoLog, qa: _emscripten_glGetProgramiv, $d: _emscripten_glGetQueryObjecti64vEXT, Sd: _emscripten_glGetQueryObjectivEXT, ae: _emscripten_glGetQueryObjectui64vEXT, me: _emscripten_glGetQueryObjectuiv, ge: _emscripten_glGetQueryObjectuivEXT, ne: _emscripten_glGetQueryiv, he: _emscripten_glGetQueryivEXT, Fe: _emscripten_glGetRenderbufferParameteriv, Vb: _emscripten_glGetSamplerParameterfv, Wb: _emscripten_glGetSamplerParameteriv, ra: _emscripten_glGetShaderInfoLog, Yd: _emscripten_glGetShaderPrecisionFormat, Ad: _emscripten_glGetShaderSource, sa: _emscripten_glGetShaderiv, ta: _emscripten_glGetString, df: _emscripten_glGetStringi, $b: _emscripten_glGetSynciv, zd: _emscripten_glGetTexParameterfv, yd: _emscripten_glGetTexParameteriv, Dc: _emscripten_glGetTransformFeedbackVarying, fc: _emscripten_glGetUniformBlockIndex, hc: _emscripten_glGetUniformIndices, ua: _emscripten_glGetUniformLocation, xd: _emscripten_glGetUniformfv, wd: _emscripten_glGetUniformiv, wc: _emscripten_glGetUniformuiv, Cc: _emscripten_glGetVertexAttribIiv, Bc: _emscripten_glGetVertexAttribIuiv, td: _emscripten_glGetVertexAttribPointerv, vd: _emscripten_glGetVertexAttribfv, ud: _emscripten_glGetVertexAttribiv, sd: _emscripten_glHint, Zd: _emscripten_glInvalidateFramebuffer, _d: _emscripten_glInvalidateSubFramebuffer, rd: _emscripten_glIsBuffer, qd: _emscripten_glIsEnabled, pd: _emscripten_glIsFramebuffer, od: _emscripten_glIsProgram, Sc: _emscripten_glIsQuery, Td: _emscripten_glIsQueryEXT, nd: _emscripten_glIsRenderbuffer, Yb: _emscripten_glIsSampler, md: _emscripten_glIsShader, ve: _emscripten_glIsSync, va: _emscripten_glIsTexture, Rb: _emscripten_glIsTransformFeedback, Kc: _emscripten_glIsVertexArray, Rd: _emscripten_glIsVertexArrayOES, wa: _emscripten_glLineWidth, xa: _emscripten_glLinkProgram, Ue: _emscripten_glMultiDrawArraysInstancedBaseInstanceWEBGL, Ve: _emscripten_glMultiDrawElementsInstancedBaseVertexBaseInstanceWEBGL, Qb: _emscripten_glPauseTransformFeedback, ya: _emscripten_glPixelStorei, ad: _emscripten_glPolygonModeWEBGL, ld: _emscripten_glPolygonOffset, cd: _emscripten_glPolygonOffsetClampEXT, Nb: _emscripten_glProgramBinary, Mb: _emscripten_glProgramParameteri, be: _emscripten_glQueryCounterEXT, Xe: _emscripten_glReadBuffer, za: _emscripten_glReadPixels, kd: _emscripten_glReleaseShaderCompiler, Ge: _emscripten_glRenderbufferStorage, Ce: _emscripten_glRenderbufferStorageMultisample, Pb: _emscripten_glResumeTransformFeedback, jd: _emscripten_glSampleCoverage, re: _emscripten_glSamplerParameterf, Xb: _emscripten_glSamplerParameterfv, se: _emscripten_glSamplerParameteri, te: _emscripten_glSamplerParameteriv, Aa: _emscripten_glScissor, id: _emscripten_glShaderBinary, Ba: _emscripten_glShaderSource, Ca: _emscripten_glStencilFunc, Da: _emscripten_glStencilFuncSeparate, Ea: _emscripten_glStencilMask, Fa: _emscripten_glStencilMaskSeparate, Ga: _emscripten_glStencilOp, Ha: _emscripten_glStencilOpSeparate, Ia: _emscripten_glTexImage2D, Xc: _emscripten_glTexImage3D, Ja: _emscripten_glTexParameterf, Ka: _emscripten_glTexParameterfv, La: _emscripten_glTexParameteri, Ma: _emscripten_glTexParameteriv, Re: _emscripten_glTexStorage2D, Lb: _emscripten_glTexStorage3D, Na: _emscripten_glTexSubImage2D, Wc: _emscripten_glTexSubImage3D, Ec: _emscripten_glTransformFeedbackVaryings, Oa: _emscripten_glUniform1f, Pa: _emscripten_glUniform1fv, Cf: _emscripten_glUniform1i, Df: _emscripten_glUniform1iv, uc: _emscripten_glUniform1ui, qc: _emscripten_glUniform1uiv, Ef: _emscripten_glUniform2f, Ff: _emscripten_glUniform2fv, Bf: _emscripten_glUniform2i, Af: _emscripten_glUniform2iv, tc: _emscripten_glUniform2ui, oc: _emscripten_glUniform2uiv, zf: _emscripten_glUniform3f, yf: _emscripten_glUniform3fv, xf: _emscripten_glUniform3i, wf: _emscripten_glUniform3iv, sc: _emscripten_glUniform3ui, nc: _emscripten_glUniform3uiv, vf: _emscripten_glUniform4f, uf: _emscripten_glUniform4fv, hf: _emscripten_glUniform4i, jf: _emscripten_glUniform4iv, rc: _emscripten_glUniform4ui, mc: _emscripten_glUniform4uiv, bc: _emscripten_glUniformBlockBinding, kf: _emscripten_glUniformMatrix2fv, Rc: _emscripten_glUniformMatrix2x3fv, Pc: _emscripten_glUniformMatrix2x4fv, lf: _emscripten_glUniformMatrix3fv, Qc: _emscripten_glUniformMatrix3x2fv, Nc: _emscripten_glUniformMatrix3x4fv, mf: _emscripten_glUniformMatrix4fv, Oc: _emscripten_glUniformMatrix4x2fv, Mc: _emscripten_glUniformMatrix4x3fv, nf: _emscripten_glUseProgram, hd: _emscripten_glValidateProgram, of: _emscripten_glVertexAttrib1f, gd: _emscripten_glVertexAttrib1fv, fd: _emscripten_glVertexAttrib2f, pf: _emscripten_glVertexAttrib2fv, ed: _emscripten_glVertexAttrib3f, qf: _emscripten_glVertexAttrib3fv, dd: _emscripten_glVertexAttrib4f, rf: _emscripten_glVertexAttrib4fv, Se: _emscripten_glVertexAttribDivisor, Nd: _emscripten_glVertexAttribDivisorANGLE, Ib: _emscripten_glVertexAttribDivisorARB, $c: _emscripten_glVertexAttribDivisorEXT, Jb: _emscripten_glVertexAttribDivisorNV, Ac: _emscripten_glVertexAttribI4i, yc: _emscripten_glVertexAttribI4iv, zc: _emscripten_glVertexAttribI4ui, xc: _emscripten_glVertexAttribI4uiv, Te: _emscripten_glVertexAttribIPointer, sf: _emscripten_glVertexAttribPointer, tf: _emscripten_glViewport, we: _emscripten_glWaitSync, _a: _emscripten_request_animation_frame_loop, jb: _emscripten_resize_heap, Cb: _environ_get, Db: _environ_sizes_get, Sa: _exit, Q: _fd_close, kb: _fd_pread, wb: _fd_read, ob: _fd_seek, L: _fd_write, Qa: _glGetIntegerv, U: _glGetString, Ra: _glGetStringi, Wd: invoke_dd, Vd: invoke_ddd, Xd: invoke_dddd, X: invoke_diii, Ud: invoke_fff, ab: invoke_fi, cb: invoke_fif, Y: invoke_fiii, db: invoke_fiiiif, p: invoke_i, Ya: invoke_if, vb: invoke_iffiiiiiiii, f: invoke_ii, x: invoke_iif, R: invoke_iifffi, g: invoke_iii, eb: invoke_iiif, h: invoke_iiii, k: invoke_iiiii, fb: invoke_iiiiid, K: invoke_iiiiii, s: invoke_iiiiiii, G: invoke_iiiiiiii, V: invoke_iiiiiiiiii, ec: invoke_iiiiiiiiiiifiii, I: invoke_iiiiiiiiiiii, hb: invoke_j, Ua: invoke_ji, o: invoke_jii, J: invoke_jiiii, n: invoke_v, b: invoke_vi, da: invoke_vid, E: invoke_vif, C: invoke_viff, A: invoke_vifff, t: invoke_vifffff, bb: invoke_viffi, aa: invoke_vifi, c: invoke_vii, F: invoke_viif, W: invoke_viiff, M: invoke_viifff, ye: invoke_viiffiii, r: invoke_viifii, e: invoke_viii, B: invoke_viiif, ca: invoke_viiifi, u: invoke_viiifif, i: invoke_viiii, Za: invoke_viiiif, j: invoke_viiiii, Va: invoke_viiiiiffiifff, Wa: invoke_viiiiiffiifi, l: invoke_viiiiii, ba: invoke_viiiiiiff, q: invoke_viiiiiii, D: invoke_viiiiiiii, Ta: invoke_viiiiiiiii, Xa: invoke_viiiiiiiiifii, z: invoke_viiiiiiiiii, $a: invoke_viiiiiiiiiii, H: invoke_viiiiiiiiiiiiiii, pc: invoke_viij, S: invoke_viiji, O: invoke_vijjjj, T: _llvm_eh_typeid_for, pb: _random_get };
4998
+ var wasmImports = { w: ___cxa_begin_catch, A: ___cxa_end_catch, a: ___cxa_find_matching_catch_2, n: ___cxa_find_matching_catch_3, H: ___cxa_find_matching_catch_4, $: ___cxa_rethrow, x: ___cxa_throw, eb: ___cxa_uncaught_exceptions, d: ___resumeException, ba: ___syscall_fcntl64, sb: ___syscall_fstat64, ob: ___syscall_getcwd, ub: ___syscall_ioctl, pb: ___syscall_lstat64, qb: ___syscall_newfstatat, aa: ___syscall_openat, rb: ___syscall_stat64, xb: __abort_js, gb: __emscripten_throw_longjmp, lb: __gmtime_js, jb: __mmap_js, kb: __munmap_js, yb: __tzset_js, wb: _clock_time_get, vb: _emscripten_date_now, Q: _emscripten_get_now, Gf: _emscripten_glActiveTexture, Hf: _emscripten_glAttachShader, he: _emscripten_glBeginQuery, be: _emscripten_glBeginQueryEXT, Gc: _emscripten_glBeginTransformFeedback, If: _emscripten_glBindAttribLocation, Jf: _emscripten_glBindBuffer, Dc: _emscripten_glBindBufferBase, Ec: _emscripten_glBindBufferRange, Ge: _emscripten_glBindFramebuffer, He: _emscripten_glBindRenderbuffer, ne: _emscripten_glBindSampler, Kf: _emscripten_glBindTexture, Sb: _emscripten_glBindTransformFeedback, bf: _emscripten_glBindVertexArray, ef: _emscripten_glBindVertexArrayOES, Lf: _emscripten_glBlendColor, Mf: _emscripten_glBlendEquation, Ld: _emscripten_glBlendEquationSeparate, Nf: _emscripten_glBlendFunc, Kd: _emscripten_glBlendFuncSeparate, Ae: _emscripten_glBlitFramebuffer, Of: _emscripten_glBufferData, Pf: _emscripten_glBufferSubData, Ie: _emscripten_glCheckFramebufferStatus, Qf: _emscripten_glClear, gc: _emscripten_glClearBufferfi, hc: _emscripten_glClearBufferfv, jc: _emscripten_glClearBufferiv, ic: _emscripten_glClearBufferuiv, Rf: _emscripten_glClearColor, Jd: _emscripten_glClearDepthf, Sf: _emscripten_glClearStencil, we: _emscripten_glClientWaitSync, $c: _emscripten_glClipControlEXT, Tf: _emscripten_glColorMask, Uf: _emscripten_glCompileShader, Vf: _emscripten_glCompressedTexImage2D, Sc: _emscripten_glCompressedTexImage3D, Wf: _emscripten_glCompressedTexSubImage2D, Rc: _emscripten_glCompressedTexSubImage3D, ye: _emscripten_glCopyBufferSubData, Id: _emscripten_glCopyTexImage2D, Xf: _emscripten_glCopyTexSubImage2D, Tc: _emscripten_glCopyTexSubImage3D, Yf: _emscripten_glCreateProgram, Zf: _emscripten_glCreateShader, _f: _emscripten_glCullFace, $f: _emscripten_glDeleteBuffers, Je: _emscripten_glDeleteFramebuffers, ag: _emscripten_glDeleteProgram, ie: _emscripten_glDeleteQueries, ce: _emscripten_glDeleteQueriesEXT, Ke: _emscripten_glDeleteRenderbuffers, oe: _emscripten_glDeleteSamplers, bg: _emscripten_glDeleteShader, xe: _emscripten_glDeleteSync, cg: _emscripten_glDeleteTextures, Rb: _emscripten_glDeleteTransformFeedbacks, cf: _emscripten_glDeleteVertexArrays, ff: _emscripten_glDeleteVertexArraysOES, Hd: _emscripten_glDepthFunc, dg: _emscripten_glDepthMask, Gd: _emscripten_glDepthRangef, Fd: _emscripten_glDetachShader, eg: _emscripten_glDisable, fg: _emscripten_glDisableVertexAttribArray, gg: _emscripten_glDrawArrays, $e: _emscripten_glDrawArraysInstanced, Od: _emscripten_glDrawArraysInstancedANGLE, Eb: _emscripten_glDrawArraysInstancedARB, Ye: _emscripten_glDrawArraysInstancedBaseInstanceWEBGL, Yc: _emscripten_glDrawArraysInstancedEXT, Fb: _emscripten_glDrawArraysInstancedNV, We: _emscripten_glDrawBuffers, Wc: _emscripten_glDrawBuffersEXT, Pd: _emscripten_glDrawBuffersWEBGL, hg: _emscripten_glDrawElements, af: _emscripten_glDrawElementsInstanced, Nd: _emscripten_glDrawElementsInstancedANGLE, Cb: _emscripten_glDrawElementsInstancedARB, Ze: _emscripten_glDrawElementsInstancedBaseVertexBaseInstanceWEBGL, Db: _emscripten_glDrawElementsInstancedEXT, Xc: _emscripten_glDrawElementsInstancedNV, Pe: _emscripten_glDrawRangeElements, ig: _emscripten_glEnable, jg: _emscripten_glEnableVertexAttribArray, je: _emscripten_glEndQuery, de: _emscripten_glEndQueryEXT, Fc: _emscripten_glEndTransformFeedback, te: _emscripten_glFenceSync, ga: _emscripten_glFinish, ha: _emscripten_glFlush, Le: _emscripten_glFramebufferRenderbuffer, Me: _emscripten_glFramebufferTexture2D, Jc: _emscripten_glFramebufferTextureLayer, ia: _emscripten_glFrontFace, ja: _emscripten_glGenBuffers, Ne: _emscripten_glGenFramebuffers, ke: _emscripten_glGenQueries, ee: _emscripten_glGenQueriesEXT, Oe: _emscripten_glGenRenderbuffers, pe: _emscripten_glGenSamplers, ka: _emscripten_glGenTextures, Qb: _emscripten_glGenTransformFeedbacks, _e: _emscripten_glGenVertexArrays, gf: _emscripten_glGenVertexArraysOES, Ce: _emscripten_glGenerateMipmap, Ed: _emscripten_glGetActiveAttrib, Dd: _emscripten_glGetActiveUniform, ac: _emscripten_glGetActiveUniformBlockName, bc: _emscripten_glGetActiveUniformBlockiv, dc: _emscripten_glGetActiveUniformsiv, Cd: _emscripten_glGetAttachedShaders, Bd: _emscripten_glGetAttribLocation, Ad: _emscripten_glGetBooleanv, Xb: _emscripten_glGetBufferParameteri64v, la: _emscripten_glGetBufferParameteriv, ma: _emscripten_glGetError, na: _emscripten_glGetFloatv, tc: _emscripten_glGetFragDataLocation, De: _emscripten_glGetFramebufferAttachmentParameteriv, Yb: _emscripten_glGetInteger64i_v, _b: _emscripten_glGetInteger64v, Hc: _emscripten_glGetIntegeri_v, oa: _emscripten_glGetIntegerv, Ib: _emscripten_glGetInternalformativ, Mb: _emscripten_glGetProgramBinary, pa: _emscripten_glGetProgramInfoLog, qa: _emscripten_glGetProgramiv, _d: _emscripten_glGetQueryObjecti64vEXT, Rd: _emscripten_glGetQueryObjectivEXT, $d: _emscripten_glGetQueryObjectui64vEXT, le: _emscripten_glGetQueryObjectuiv, fe: _emscripten_glGetQueryObjectuivEXT, me: _emscripten_glGetQueryiv, ge: _emscripten_glGetQueryivEXT, Ee: _emscripten_glGetRenderbufferParameteriv, Tb: _emscripten_glGetSamplerParameterfv, Ub: _emscripten_glGetSamplerParameteriv, ra: _emscripten_glGetShaderInfoLog, Xd: _emscripten_glGetShaderPrecisionFormat, zd: _emscripten_glGetShaderSource, sa: _emscripten_glGetShaderiv, ta: _emscripten_glGetString, df: _emscripten_glGetStringi, Zb: _emscripten_glGetSynciv, yd: _emscripten_glGetTexParameterfv, xd: _emscripten_glGetTexParameteriv, Bc: _emscripten_glGetTransformFeedbackVarying, cc: _emscripten_glGetUniformBlockIndex, fc: _emscripten_glGetUniformIndices, ua: _emscripten_glGetUniformLocation, vd: _emscripten_glGetUniformfv, ud: _emscripten_glGetUniformiv, uc: _emscripten_glGetUniformuiv, Ac: _emscripten_glGetVertexAttribIiv, zc: _emscripten_glGetVertexAttribIuiv, rd: _emscripten_glGetVertexAttribPointerv, td: _emscripten_glGetVertexAttribfv, sd: _emscripten_glGetVertexAttribiv, qd: _emscripten_glHint, Yd: _emscripten_glInvalidateFramebuffer, Zd: _emscripten_glInvalidateSubFramebuffer, pd: _emscripten_glIsBuffer, od: _emscripten_glIsEnabled, nd: _emscripten_glIsFramebuffer, md: _emscripten_glIsProgram, Qc: _emscripten_glIsQuery, Sd: _emscripten_glIsQueryEXT, ld: _emscripten_glIsRenderbuffer, Wb: _emscripten_glIsSampler, kd: _emscripten_glIsShader, ue: _emscripten_glIsSync, va: _emscripten_glIsTexture, Pb: _emscripten_glIsTransformFeedback, Ic: _emscripten_glIsVertexArray, Qd: _emscripten_glIsVertexArrayOES, wa: _emscripten_glLineWidth, xa: _emscripten_glLinkProgram, Te: _emscripten_glMultiDrawArraysInstancedBaseInstanceWEBGL, Ve: _emscripten_glMultiDrawElementsInstancedBaseVertexBaseInstanceWEBGL, Ob: _emscripten_glPauseTransformFeedback, ya: _emscripten_glPixelStorei, _c: _emscripten_glPolygonModeWEBGL, jd: _emscripten_glPolygonOffset, ad: _emscripten_glPolygonOffsetClampEXT, Lb: _emscripten_glProgramBinary, Kb: _emscripten_glProgramParameteri, ae: _emscripten_glQueryCounterEXT, Xe: _emscripten_glReadBuffer, za: _emscripten_glReadPixels, id: _emscripten_glReleaseShaderCompiler, Fe: _emscripten_glRenderbufferStorage, Be: _emscripten_glRenderbufferStorageMultisample, Nb: _emscripten_glResumeTransformFeedback, hd: _emscripten_glSampleCoverage, qe: _emscripten_glSamplerParameterf, Vb: _emscripten_glSamplerParameterfv, re: _emscripten_glSamplerParameteri, se: _emscripten_glSamplerParameteriv, Aa: _emscripten_glScissor, gd: _emscripten_glShaderBinary, Ba: _emscripten_glShaderSource, Ca: _emscripten_glStencilFunc, Da: _emscripten_glStencilFuncSeparate, Ea: _emscripten_glStencilMask, Fa: _emscripten_glStencilMaskSeparate, Ga: _emscripten_glStencilOp, Ha: _emscripten_glStencilOpSeparate, Ia: _emscripten_glTexImage2D, Vc: _emscripten_glTexImage3D, Ja: _emscripten_glTexParameterf, Ka: _emscripten_glTexParameterfv, La: _emscripten_glTexParameteri, Ma: _emscripten_glTexParameteriv, Qe: _emscripten_glTexStorage2D, Jb: _emscripten_glTexStorage3D, Na: _emscripten_glTexSubImage2D, Uc: _emscripten_glTexSubImage3D, Cc: _emscripten_glTransformFeedbackVaryings, Oa: _emscripten_glUniform1f, Pa: _emscripten_glUniform1fv, Cf: _emscripten_glUniform1i, Df: _emscripten_glUniform1iv, sc: _emscripten_glUniform1ui, nc: _emscripten_glUniform1uiv, Ef: _emscripten_glUniform2f, Ff: _emscripten_glUniform2fv, Bf: _emscripten_glUniform2i, Af: _emscripten_glUniform2iv, rc: _emscripten_glUniform2ui, mc: _emscripten_glUniform2uiv, zf: _emscripten_glUniform3f, yf: _emscripten_glUniform3fv, xf: _emscripten_glUniform3i, wf: _emscripten_glUniform3iv, qc: _emscripten_glUniform3ui, lc: _emscripten_glUniform3uiv, vf: _emscripten_glUniform4f, uf: _emscripten_glUniform4fv, hf: _emscripten_glUniform4i, jf: _emscripten_glUniform4iv, oc: _emscripten_glUniform4ui, kc: _emscripten_glUniform4uiv, $b: _emscripten_glUniformBlockBinding, kf: _emscripten_glUniformMatrix2fv, Pc: _emscripten_glUniformMatrix2x3fv, Nc: _emscripten_glUniformMatrix2x4fv, lf: _emscripten_glUniformMatrix3fv, Oc: _emscripten_glUniformMatrix3x2fv, Lc: _emscripten_glUniformMatrix3x4fv, mf: _emscripten_glUniformMatrix4fv, Mc: _emscripten_glUniformMatrix4x2fv, Kc: _emscripten_glUniformMatrix4x3fv, nf: _emscripten_glUseProgram, fd: _emscripten_glValidateProgram, of: _emscripten_glVertexAttrib1f, ed: _emscripten_glVertexAttrib1fv, dd: _emscripten_glVertexAttrib2f, pf: _emscripten_glVertexAttrib2fv, cd: _emscripten_glVertexAttrib3f, qf: _emscripten_glVertexAttrib3fv, bd: _emscripten_glVertexAttrib4f, rf: _emscripten_glVertexAttrib4fv, Re: _emscripten_glVertexAttribDivisor, Md: _emscripten_glVertexAttribDivisorANGLE, Gb: _emscripten_glVertexAttribDivisorARB, Zc: _emscripten_glVertexAttribDivisorEXT, Hb: _emscripten_glVertexAttribDivisorNV, yc: _emscripten_glVertexAttribI4i, wc: _emscripten_glVertexAttribI4iv, xc: _emscripten_glVertexAttribI4ui, vc: _emscripten_glVertexAttribI4uiv, Se: _emscripten_glVertexAttribIPointer, sf: _emscripten_glVertexAttribPointer, tf: _emscripten_glViewport, ve: _emscripten_glWaitSync, Ua: _emscripten_request_animation_frame_loop, hb: _emscripten_resize_heap, zb: _environ_get, Ab: _environ_sizes_get, Sa: _exit, R: _fd_close, ib: _fd_pread, tb: _fd_read, mb: _fd_seek, L: _fd_write, Qa: _glGetIntegerv, U: _glGetString, Ra: _glGetStringi, Vd: invoke_dd, Ud: invoke_ddd, Wd: invoke_dddd, Z: invoke_diii, Td: invoke_fff, W: invoke_fi, ab: invoke_fif, _: invoke_fiii, bb: invoke_fiiiif, p: invoke_i, Xa: invoke_if, Bb: invoke_iffiiiiiiii, f: invoke_ii, y: invoke_iif, T: invoke_iifffi, g: invoke_iii, Wa: invoke_iiif, h: invoke_iiii, k: invoke_iiiii, db: invoke_iiiiid, M: invoke_iiiiii, s: invoke_iiiiiii, G: invoke_iiiiiiii, V: invoke_iiiiiiiiii, ze: invoke_iiiiiiiiiiifiii, J: invoke_iiiiiiiiiiii, fb: invoke_j, $a: invoke_ji, l: invoke_jii, K: invoke_jiiii, o: invoke_v, b: invoke_vi, fa: invoke_vid, E: invoke_vif, D: invoke_viff, C: invoke_vifff, u: invoke_vifffff, wd: invoke_viffi, da: invoke_vifi, c: invoke_vii, F: invoke_viif, Y: invoke_viiff, N: invoke_viifff, Ya: invoke_viiffiii, r: invoke_viifii, e: invoke_viii, t: invoke_viiif, ea: invoke_viiifi, v: invoke_viiifif, i: invoke_viiii, Ue: invoke_viiiif, j: invoke_viiiii, ec: invoke_viiiiiffiifff, pc: invoke_viiiiiffiifi, m: invoke_viiiiii, X: invoke_viiiiiiff, q: invoke_viiiiiii, z: invoke_viiiiiiii, Ta: invoke_viiiiiiiii, cb: invoke_viiiiiiiiifii, B: invoke_viiiiiiiiii, Va: invoke_viiiiiiiiiii, I: invoke_viiiiiiiiiiiiiii, ca: invoke_viij, S: invoke_viiji, _a: invoke_viji, Za: invoke_vijii, O: invoke_vijjjj, P: _llvm_eh_typeid_for, nb: _random_get };
4999
4999
  var wasmExports = await createWasm();
5000
- var ___wasm_call_ctors = wasmExports["jg"];
5001
- var _allocate = Module["_allocate"] = wasmExports["lg"];
5002
- var _deallocate = Module["_deallocate"] = wasmExports["mg"];
5000
+ var ___wasm_call_ctors = wasmExports["lg"];
5003
5001
  var _init = Module["_init"] = wasmExports["ng"];
5004
5002
  var _tick = Module["_tick"] = wasmExports["og"];
5005
5003
  var _resize_surface = Module["_resize_surface"] = wasmExports["pg"];
@@ -5033,18 +5031,24 @@ var require_grida_canvas_wasm = __commonJS({
5033
5031
  var _highlight_strokes = Module["_highlight_strokes"] = wasmExports["Rg"];
5034
5032
  var _load_dummy_scene = Module["_load_dummy_scene"] = wasmExports["Sg"];
5035
5033
  var _load_benchmark_scene = Module["_load_benchmark_scene"] = wasmExports["Tg"];
5036
- var _main = Module["_main"] = wasmExports["Ug"];
5037
- var _malloc = wasmExports["Vg"];
5038
- var _emscripten_builtin_memalign = wasmExports["Wg"];
5039
- var _setThrew = wasmExports["Xg"];
5040
- var __emscripten_tempret_set = wasmExports["Yg"];
5041
- var __emscripten_stack_restore = wasmExports["Zg"];
5042
- var __emscripten_stack_alloc = wasmExports["_g"];
5043
- var _emscripten_stack_get_current = wasmExports["$g"];
5044
- var ___cxa_decrement_exception_refcount = wasmExports["ah"];
5045
- var ___cxa_increment_exception_refcount = wasmExports["bh"];
5046
- var ___cxa_can_catch = wasmExports["ch"];
5047
- var ___cxa_get_exception_ptr = wasmExports["dh"];
5034
+ var _allocate = Module["_allocate"] = wasmExports["Ug"];
5035
+ var _deallocate = Module["_deallocate"] = wasmExports["Vg"];
5036
+ var _main = Module["_main"] = wasmExports["Wg"];
5037
+ var _grida_fonts_analyze_family = Module["_grida_fonts_analyze_family"] = wasmExports["Xg"];
5038
+ var _grida_fonts_parse_font = Module["_grida_fonts_parse_font"] = wasmExports["Yg"];
5039
+ var _grida_fonts_free = Module["_grida_fonts_free"] = wasmExports["Zg"];
5040
+ var _grida_fonts_version = Module["_grida_fonts_version"] = wasmExports["_g"];
5041
+ var _malloc = wasmExports["$g"];
5042
+ var _emscripten_builtin_memalign = wasmExports["ah"];
5043
+ var _setThrew = wasmExports["bh"];
5044
+ var __emscripten_tempret_set = wasmExports["ch"];
5045
+ var __emscripten_stack_restore = wasmExports["dh"];
5046
+ var __emscripten_stack_alloc = wasmExports["eh"];
5047
+ var _emscripten_stack_get_current = wasmExports["fh"];
5048
+ var ___cxa_decrement_exception_refcount = wasmExports["gh"];
5049
+ var ___cxa_increment_exception_refcount = wasmExports["hh"];
5050
+ var ___cxa_can_catch = wasmExports["ih"];
5051
+ var ___cxa_get_exception_ptr = wasmExports["jh"];
5048
5052
  function invoke_vii(index, a1, a2) {
5049
5053
  var sp = stackSave();
5050
5054
  try {
@@ -5165,38 +5169,37 @@ var require_grida_canvas_wasm = __commonJS({
5165
5169
  _setThrew(1, 0);
5166
5170
  }
5167
5171
  }
5168
- function invoke_jii(index, a1, a2) {
5172
+ function invoke_viif(index, a1, a2, a3) {
5169
5173
  var sp = stackSave();
5170
5174
  try {
5171
- return getWasmTableEntry(index)(a1, a2);
5175
+ getWasmTableEntry(index)(a1, a2, a3);
5172
5176
  } catch (e) {
5173
5177
  stackRestore(sp);
5174
5178
  if (e !== e + 0) throw e;
5175
5179
  _setThrew(1, 0);
5176
- return 0n;
5177
5180
  }
5178
5181
  }
5179
- function invoke_viiif(index, a1, a2, a3, a4) {
5182
+ function invoke_viiifi(index, a1, a2, a3, a4, a5) {
5180
5183
  var sp = stackSave();
5181
5184
  try {
5182
- getWasmTableEntry(index)(a1, a2, a3, a4);
5185
+ getWasmTableEntry(index)(a1, a2, a3, a4, a5);
5183
5186
  } catch (e) {
5184
5187
  stackRestore(sp);
5185
5188
  if (e !== e + 0) throw e;
5186
5189
  _setThrew(1, 0);
5187
5190
  }
5188
5191
  }
5189
- function invoke_i(index) {
5192
+ function invoke_iif(index, a1, a2) {
5190
5193
  var sp = stackSave();
5191
5194
  try {
5192
- return getWasmTableEntry(index)();
5195
+ return getWasmTableEntry(index)(a1, a2);
5193
5196
  } catch (e) {
5194
5197
  stackRestore(sp);
5195
5198
  if (e !== e + 0) throw e;
5196
5199
  _setThrew(1, 0);
5197
5200
  }
5198
5201
  }
5199
- function invoke_viiifi(index, a1, a2, a3, a4, a5) {
5202
+ function invoke_viiiif(index, a1, a2, a3, a4, a5) {
5200
5203
  var sp = stackSave();
5201
5204
  try {
5202
5205
  getWasmTableEntry(index)(a1, a2, a3, a4, a5);
@@ -5216,87 +5219,87 @@ var require_grida_canvas_wasm = __commonJS({
5216
5219
  _setThrew(1, 0);
5217
5220
  }
5218
5221
  }
5219
- function invoke_viiffiii(index, a1, a2, a3, a4, a5, a6, a7) {
5222
+ function invoke_iiiiiiiiiiifiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) {
5220
5223
  var sp = stackSave();
5221
5224
  try {
5222
- getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7);
5225
+ return getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14);
5223
5226
  } catch (e) {
5224
5227
  stackRestore(sp);
5225
5228
  if (e !== e + 0) throw e;
5226
5229
  _setThrew(1, 0);
5227
5230
  }
5228
5231
  }
5229
- function invoke_viiiiiiff(index, a1, a2, a3, a4, a5, a6, a7, a8) {
5232
+ function invoke_vifi(index, a1, a2, a3) {
5230
5233
  var sp = stackSave();
5231
5234
  try {
5232
- getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8);
5235
+ getWasmTableEntry(index)(a1, a2, a3);
5233
5236
  } catch (e) {
5234
5237
  stackRestore(sp);
5235
5238
  if (e !== e + 0) throw e;
5236
5239
  _setThrew(1, 0);
5237
5240
  }
5238
5241
  }
5239
- function invoke_iif(index, a1, a2) {
5242
+ function invoke_iifffi(index, a1, a2, a3, a4, a5) {
5240
5243
  var sp = stackSave();
5241
5244
  try {
5242
- return getWasmTableEntry(index)(a1, a2);
5245
+ return getWasmTableEntry(index)(a1, a2, a3, a4, a5);
5243
5246
  } catch (e) {
5244
5247
  stackRestore(sp);
5245
5248
  if (e !== e + 0) throw e;
5246
5249
  _setThrew(1, 0);
5247
5250
  }
5248
5251
  }
5249
- function invoke_v(index) {
5252
+ function invoke_viij(index, a1, a2, a3) {
5250
5253
  var sp = stackSave();
5251
5254
  try {
5252
- getWasmTableEntry(index)();
5255
+ getWasmTableEntry(index)(a1, a2, a3);
5253
5256
  } catch (e) {
5254
5257
  stackRestore(sp);
5255
5258
  if (e !== e + 0) throw e;
5256
5259
  _setThrew(1, 0);
5257
5260
  }
5258
5261
  }
5259
- function invoke_vifffff(index, a1, a2, a3, a4, a5, a6) {
5262
+ function invoke_i(index) {
5260
5263
  var sp = stackSave();
5261
5264
  try {
5262
- getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6);
5265
+ return getWasmTableEntry(index)();
5263
5266
  } catch (e) {
5264
5267
  stackRestore(sp);
5265
5268
  if (e !== e + 0) throw e;
5266
5269
  _setThrew(1, 0);
5267
5270
  }
5268
5271
  }
5269
- function invoke_viiifif(index, a1, a2, a3, a4, a5, a6) {
5272
+ function invoke_viiji(index, a1, a2, a3, a4) {
5270
5273
  var sp = stackSave();
5271
5274
  try {
5272
- getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6);
5275
+ getWasmTableEntry(index)(a1, a2, a3, a4);
5273
5276
  } catch (e) {
5274
5277
  stackRestore(sp);
5275
5278
  if (e !== e + 0) throw e;
5276
5279
  _setThrew(1, 0);
5277
5280
  }
5278
5281
  }
5279
- function invoke_viif(index, a1, a2, a3) {
5282
+ function invoke_viffi(index, a1, a2, a3, a4) {
5280
5283
  var sp = stackSave();
5281
5284
  try {
5282
- getWasmTableEntry(index)(a1, a2, a3);
5285
+ getWasmTableEntry(index)(a1, a2, a3, a4);
5283
5286
  } catch (e) {
5284
5287
  stackRestore(sp);
5285
5288
  if (e !== e + 0) throw e;
5286
5289
  _setThrew(1, 0);
5287
5290
  }
5288
5291
  }
5289
- function invoke_viiiiiii(index, a1, a2, a3, a4, a5, a6, a7) {
5292
+ function invoke_viifff(index, a1, a2, a3, a4, a5) {
5290
5293
  var sp = stackSave();
5291
5294
  try {
5292
- getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7);
5295
+ getWasmTableEntry(index)(a1, a2, a3, a4, a5);
5293
5296
  } catch (e) {
5294
5297
  stackRestore(sp);
5295
5298
  if (e !== e + 0) throw e;
5296
5299
  _setThrew(1, 0);
5297
5300
  }
5298
5301
  }
5299
- function invoke_viiji(index, a1, a2, a3, a4) {
5302
+ function invoke_vifff(index, a1, a2, a3, a4) {
5300
5303
  var sp = stackSave();
5301
5304
  try {
5302
5305
  getWasmTableEntry(index)(a1, a2, a3, a4);
@@ -5306,60 +5309,70 @@ var require_grida_canvas_wasm = __commonJS({
5306
5309
  _setThrew(1, 0);
5307
5310
  }
5308
5311
  }
5309
- function invoke_vifff(index, a1, a2, a3, a4) {
5312
+ function invoke_vifffff(index, a1, a2, a3, a4, a5, a6) {
5310
5313
  var sp = stackSave();
5311
5314
  try {
5312
- getWasmTableEntry(index)(a1, a2, a3, a4);
5315
+ getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6);
5313
5316
  } catch (e) {
5314
5317
  stackRestore(sp);
5315
5318
  if (e !== e + 0) throw e;
5316
5319
  _setThrew(1, 0);
5317
5320
  }
5318
5321
  }
5319
- function invoke_viij(index, a1, a2, a3) {
5322
+ function invoke_viiifif(index, a1, a2, a3, a4, a5, a6) {
5320
5323
  var sp = stackSave();
5321
5324
  try {
5322
- getWasmTableEntry(index)(a1, a2, a3);
5325
+ getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6);
5323
5326
  } catch (e) {
5324
5327
  stackRestore(sp);
5325
5328
  if (e !== e + 0) throw e;
5326
5329
  _setThrew(1, 0);
5327
5330
  }
5328
5331
  }
5329
- function invoke_iiiiiiiiiiifiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) {
5332
+ function invoke_v(index) {
5330
5333
  var sp = stackSave();
5331
5334
  try {
5332
- return getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14);
5335
+ getWasmTableEntry(index)();
5333
5336
  } catch (e) {
5334
5337
  stackRestore(sp);
5335
5338
  if (e !== e + 0) throw e;
5336
5339
  _setThrew(1, 0);
5337
5340
  }
5338
5341
  }
5339
- function invoke_vifi(index, a1, a2, a3) {
5342
+ function invoke_viiiiiffiifi(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {
5340
5343
  var sp = stackSave();
5341
5344
  try {
5342
- getWasmTableEntry(index)(a1, a2, a3);
5345
+ getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);
5343
5346
  } catch (e) {
5344
5347
  stackRestore(sp);
5345
5348
  if (e !== e + 0) throw e;
5346
5349
  _setThrew(1, 0);
5347
5350
  }
5348
5351
  }
5349
- function invoke_iifffi(index, a1, a2, a3, a4, a5) {
5352
+ function invoke_viiiiiffiifff(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) {
5350
5353
  var sp = stackSave();
5351
5354
  try {
5352
- return getWasmTableEntry(index)(a1, a2, a3, a4, a5);
5355
+ getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12);
5353
5356
  } catch (e) {
5354
5357
  stackRestore(sp);
5355
5358
  if (e !== e + 0) throw e;
5356
5359
  _setThrew(1, 0);
5357
5360
  }
5358
5361
  }
5359
- function invoke_viifff(index, a1, a2, a3, a4, a5) {
5362
+ function invoke_viiiiiii(index, a1, a2, a3, a4, a5, a6, a7) {
5360
5363
  var sp = stackSave();
5361
5364
  try {
5362
- getWasmTableEntry(index)(a1, a2, a3, a4, a5);
5365
+ getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7);
5366
+ } catch (e) {
5367
+ stackRestore(sp);
5368
+ if (e !== e + 0) throw e;
5369
+ _setThrew(1, 0);
5370
+ }
5371
+ }
5372
+ function invoke_viiif(index, a1, a2, a3, a4) {
5373
+ var sp = stackSave();
5374
+ try {
5375
+ getWasmTableEntry(index)(a1, a2, a3, a4);
5363
5376
  } catch (e) {
5364
5377
  stackRestore(sp);
5365
5378
  if (e !== e + 0) throw e;
@@ -5386,30 +5399,31 @@ var require_grida_canvas_wasm = __commonJS({
5386
5399
  _setThrew(1, 0);
5387
5400
  }
5388
5401
  }
5389
- function invoke_iiif(index, a1, a2, a3) {
5402
+ function invoke_jii(index, a1, a2) {
5390
5403
  var sp = stackSave();
5391
5404
  try {
5392
- return getWasmTableEntry(index)(a1, a2, a3);
5405
+ return getWasmTableEntry(index)(a1, a2);
5393
5406
  } catch (e) {
5394
5407
  stackRestore(sp);
5395
5408
  if (e !== e + 0) throw e;
5396
5409
  _setThrew(1, 0);
5410
+ return 0n;
5397
5411
  }
5398
5412
  }
5399
- function invoke_fiiiif(index, a1, a2, a3, a4, a5) {
5413
+ function invoke_viiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8) {
5400
5414
  var sp = stackSave();
5401
5415
  try {
5402
- return getWasmTableEntry(index)(a1, a2, a3, a4, a5);
5416
+ getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8);
5403
5417
  } catch (e) {
5404
5418
  stackRestore(sp);
5405
5419
  if (e !== e + 0) throw e;
5406
5420
  _setThrew(1, 0);
5407
5421
  }
5408
5422
  }
5409
- function invoke_fif(index, a1, a2) {
5423
+ function invoke_viiiiiiiiifii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) {
5410
5424
  var sp = stackSave();
5411
5425
  try {
5412
- return getWasmTableEntry(index)(a1, a2);
5426
+ getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12);
5413
5427
  } catch (e) {
5414
5428
  stackRestore(sp);
5415
5429
  if (e !== e + 0) throw e;
@@ -5426,17 +5440,27 @@ var require_grida_canvas_wasm = __commonJS({
5426
5440
  _setThrew(1, 0);
5427
5441
  }
5428
5442
  }
5429
- function invoke_viiff(index, a1, a2, a3, a4) {
5443
+ function invoke_fiiiif(index, a1, a2, a3, a4, a5) {
5430
5444
  var sp = stackSave();
5431
5445
  try {
5432
- getWasmTableEntry(index)(a1, a2, a3, a4);
5446
+ return getWasmTableEntry(index)(a1, a2, a3, a4, a5);
5433
5447
  } catch (e) {
5434
5448
  stackRestore(sp);
5435
5449
  if (e !== e + 0) throw e;
5436
5450
  _setThrew(1, 0);
5437
5451
  }
5438
5452
  }
5439
- function invoke_viffi(index, a1, a2, a3, a4) {
5453
+ function invoke_fif(index, a1, a2) {
5454
+ var sp = stackSave();
5455
+ try {
5456
+ return getWasmTableEntry(index)(a1, a2);
5457
+ } catch (e) {
5458
+ stackRestore(sp);
5459
+ if (e !== e + 0) throw e;
5460
+ _setThrew(1, 0);
5461
+ }
5462
+ }
5463
+ function invoke_viiff(index, a1, a2, a3, a4) {
5440
5464
  var sp = stackSave();
5441
5465
  try {
5442
5466
  getWasmTableEntry(index)(a1, a2, a3, a4);
@@ -5446,7 +5470,7 @@ var require_grida_canvas_wasm = __commonJS({
5446
5470
  _setThrew(1, 0);
5447
5471
  }
5448
5472
  }
5449
- function invoke_fi(index, a1) {
5473
+ function invoke_ji(index, a1) {
5450
5474
  var sp = stackSave();
5451
5475
  try {
5452
5476
  return getWasmTableEntry(index)(a1);
@@ -5454,39 +5478,40 @@ var require_grida_canvas_wasm = __commonJS({
5454
5478
  stackRestore(sp);
5455
5479
  if (e !== e + 0) throw e;
5456
5480
  _setThrew(1, 0);
5481
+ return 0n;
5457
5482
  }
5458
5483
  }
5459
- function invoke_viiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {
5484
+ function invoke_viji(index, a1, a2, a3) {
5460
5485
  var sp = stackSave();
5461
5486
  try {
5462
- getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);
5487
+ getWasmTableEntry(index)(a1, a2, a3);
5463
5488
  } catch (e) {
5464
5489
  stackRestore(sp);
5465
5490
  if (e !== e + 0) throw e;
5466
5491
  _setThrew(1, 0);
5467
5492
  }
5468
5493
  }
5469
- function invoke_viiiif(index, a1, a2, a3, a4, a5) {
5494
+ function invoke_vijii(index, a1, a2, a3, a4) {
5470
5495
  var sp = stackSave();
5471
5496
  try {
5472
- getWasmTableEntry(index)(a1, a2, a3, a4, a5);
5497
+ getWasmTableEntry(index)(a1, a2, a3, a4);
5473
5498
  } catch (e) {
5474
5499
  stackRestore(sp);
5475
5500
  if (e !== e + 0) throw e;
5476
5501
  _setThrew(1, 0);
5477
5502
  }
5478
5503
  }
5479
- function invoke_if(index, a1) {
5504
+ function invoke_viiffiii(index, a1, a2, a3, a4, a5, a6, a7) {
5480
5505
  var sp = stackSave();
5481
5506
  try {
5482
- return getWasmTableEntry(index)(a1);
5507
+ getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7);
5483
5508
  } catch (e) {
5484
5509
  stackRestore(sp);
5485
5510
  if (e !== e + 0) throw e;
5486
5511
  _setThrew(1, 0);
5487
5512
  }
5488
5513
  }
5489
- function invoke_viiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8) {
5514
+ function invoke_viiiiiiff(index, a1, a2, a3, a4, a5, a6, a7, a8) {
5490
5515
  var sp = stackSave();
5491
5516
  try {
5492
5517
  getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8);
@@ -5496,45 +5521,44 @@ var require_grida_canvas_wasm = __commonJS({
5496
5521
  _setThrew(1, 0);
5497
5522
  }
5498
5523
  }
5499
- function invoke_viiiiiiiiifii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) {
5524
+ function invoke_if(index, a1) {
5500
5525
  var sp = stackSave();
5501
5526
  try {
5502
- getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12);
5527
+ return getWasmTableEntry(index)(a1);
5503
5528
  } catch (e) {
5504
5529
  stackRestore(sp);
5505
5530
  if (e !== e + 0) throw e;
5506
5531
  _setThrew(1, 0);
5507
5532
  }
5508
5533
  }
5509
- function invoke_viiiiiffiifi(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {
5534
+ function invoke_iiif(index, a1, a2, a3) {
5510
5535
  var sp = stackSave();
5511
5536
  try {
5512
- getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);
5537
+ return getWasmTableEntry(index)(a1, a2, a3);
5513
5538
  } catch (e) {
5514
5539
  stackRestore(sp);
5515
5540
  if (e !== e + 0) throw e;
5516
5541
  _setThrew(1, 0);
5517
5542
  }
5518
5543
  }
5519
- function invoke_viiiiiffiifff(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) {
5544
+ function invoke_fi(index, a1) {
5520
5545
  var sp = stackSave();
5521
5546
  try {
5522
- getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12);
5547
+ return getWasmTableEntry(index)(a1);
5523
5548
  } catch (e) {
5524
5549
  stackRestore(sp);
5525
5550
  if (e !== e + 0) throw e;
5526
5551
  _setThrew(1, 0);
5527
5552
  }
5528
5553
  }
5529
- function invoke_ji(index, a1) {
5554
+ function invoke_viiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {
5530
5555
  var sp = stackSave();
5531
5556
  try {
5532
- return getWasmTableEntry(index)(a1);
5557
+ getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);
5533
5558
  } catch (e) {
5534
5559
  stackRestore(sp);
5535
5560
  if (e !== e + 0) throw e;
5536
5561
  _setThrew(1, 0);
5537
- return 0n;
5538
5562
  }
5539
5563
  }
5540
5564
  function invoke_iiiiiiii(index, a1, a2, a3, a4, a5, a6, a7) {
@@ -5785,68 +5809,187 @@ var require_grida_canvas_wasm = __commonJS({
5785
5809
  // lib/index.ts
5786
5810
  var index_exports = {};
5787
5811
  __export(index_exports, {
5788
- Grida2D: () => Grida2D,
5789
- default: () => init
5812
+ default: () => init,
5813
+ version: () => version2
5790
5814
  });
5791
5815
  module.exports = __toCommonJS(index_exports);
5792
5816
  var import_grida_canvas_wasm = __toESM(require_grida_canvas_wasm());
5793
5817
 
5794
5818
  // package.json
5795
- var version = "0.0.55";
5819
+ var version = "0.0.57";
5796
5820
 
5797
- // lib/index.ts
5798
- async function init(opts) {
5799
- const bindings = await (0, import_grida_canvas_wasm.default)({
5800
- locateFile: (opts == null ? void 0 : opts.locateFile) ? (file, __scriptDirectory) => opts == null ? void 0 : opts.locateFile(file, version) : void 0
5801
- });
5802
- return new ApplicationFactory(
5803
- bindings
5804
- );
5805
- }
5806
- var ApplicationFactory = class {
5821
+ // lib/modules/fonts.ts
5822
+ var FontsAPI = class {
5807
5823
  module;
5808
5824
  constructor(module2) {
5809
5825
  this.module = module2;
5810
5826
  }
5811
- createWebGLCanvasSurface(canvas, options = { use_embedded_fonts: true }) {
5812
- const context = canvas.getContext("webgl2", {
5813
- antialias: true,
5814
- depth: true,
5815
- stencil: true,
5816
- alpha: true
5817
- });
5818
- if (!context) {
5819
- throw new Error("Failed to get WebGL2 context");
5827
+ /**
5828
+ * Allocates memory for a string and returns pointer and length.
5829
+ * @param txt - String to allocate
5830
+ * @returns [pointer, length] tuple
5831
+ */
5832
+ _alloc_string(txt) {
5833
+ const len = this.module.lengthBytesUTF8(txt) + 1;
5834
+ const ptr = this.module._allocate(len);
5835
+ this.module.stringToUTF8(txt, ptr, len);
5836
+ return [ptr, len];
5837
+ }
5838
+ /**
5839
+ * Frees memory allocated for a string.
5840
+ * @param ptr - Pointer to free
5841
+ * @param len - Length of allocated memory
5842
+ */
5843
+ _free_string(ptr, len) {
5844
+ this.module._deallocate(ptr, len);
5845
+ }
5846
+ /**
5847
+ * Allocates memory for binary data and returns pointer.
5848
+ * @param data - Binary data to allocate
5849
+ * @returns [pointer, length] tuple
5850
+ */
5851
+ _alloc_data(data) {
5852
+ const uint8Data = data instanceof ArrayBuffer ? new Uint8Array(data) : data;
5853
+ const len = uint8Data.length;
5854
+ const ptr = this.module._allocate(len);
5855
+ this.module.HEAPU8.set(uint8Data, ptr);
5856
+ return [ptr, len];
5857
+ }
5858
+ /**
5859
+ * Converts a WASM-allocated string to JavaScript string and frees the WASM memory.
5860
+ * @param ptr - Pointer to WASM string
5861
+ * @returns JavaScript string
5862
+ */
5863
+ _string_from_wasm(ptr) {
5864
+ const str = this.module.UTF8ToString(ptr);
5865
+ const len = this.module.lengthBytesUTF8(str) + 1;
5866
+ this._free_string(ptr, len);
5867
+ return str;
5868
+ }
5869
+ /**
5870
+ * Analyzes a font family with JavaScript-friendly interface.
5871
+ * This is the main API for working with multiple font files under the same family.
5872
+ *
5873
+ * @param fontFaces - Array of font face objects
5874
+ * @param familyName - Family name (optional)
5875
+ * @returns Promise resolving to FontAnalysisResult or FontError
5876
+ */
5877
+ async analyzeFamily(fontFaces, familyName) {
5878
+ try {
5879
+ const fontCount = fontFaces.length;
5880
+ const familyNamePtr = familyName ? this._alloc_string(familyName)[0] : 0;
5881
+ const faceIdsPtr = this.module._allocate(fontCount * 4);
5882
+ const fontDataPtrsPtr = this.module._allocate(fontCount * 4);
5883
+ const fontDataSizesPtr = this.module._allocate(fontCount * 4);
5884
+ const userItalicFlagsPtr = this.module._allocate(fontCount * 4);
5885
+ const faceIdPtrs = [];
5886
+ const fontDataPtrs = [];
5887
+ const fontDataSizes = [];
5888
+ const userItalicFlags = [];
5889
+ for (let i = 0; i < fontCount; i++) {
5890
+ const face = fontFaces[i];
5891
+ const [faceIdPtr, faceIdLen] = this._alloc_string(face.faceId);
5892
+ faceIdPtrs.push(faceIdPtr);
5893
+ const [fontDataPtr, fontDataSize] = this._alloc_data(face.data);
5894
+ fontDataPtrs.push(fontDataPtr);
5895
+ fontDataSizes.push(fontDataSize);
5896
+ const italicFlag = face.userFontStyleItalic === void 0 ? -1 : face.userFontStyleItalic ? 1 : 0;
5897
+ userItalicFlags.push(italicFlag);
5898
+ }
5899
+ for (let i = 0; i < fontCount; i++) {
5900
+ this.module.HEAPU32[faceIdsPtr / 4 + i] = faceIdPtrs[i];
5901
+ this.module.HEAPU32[fontDataPtrsPtr / 4 + i] = fontDataPtrs[i];
5902
+ this.module.HEAPU32[fontDataSizesPtr / 4 + i] = fontDataSizes[i];
5903
+ this.module.HEAP32[userItalicFlagsPtr / 4 + i] = userItalicFlags[i];
5904
+ }
5905
+ const resultPtr = this.module._grida_fonts_analyze_family(
5906
+ familyNamePtr,
5907
+ fontCount,
5908
+ faceIdsPtr,
5909
+ fontDataPtrsPtr,
5910
+ fontDataSizesPtr,
5911
+ userItalicFlagsPtr
5912
+ );
5913
+ const resultJson = this._string_from_wasm(resultPtr);
5914
+ const result = JSON.parse(resultJson);
5915
+ if (familyNamePtr !== 0) {
5916
+ this._free_string(
5917
+ familyNamePtr,
5918
+ this.module.lengthBytesUTF8(familyName || "") + 1
5919
+ );
5920
+ }
5921
+ this.module._deallocate(faceIdsPtr, fontCount * 4);
5922
+ this.module._deallocate(fontDataPtrsPtr, fontCount * 4);
5923
+ this.module._deallocate(fontDataSizesPtr, fontCount * 4);
5924
+ this.module._deallocate(userItalicFlagsPtr, fontCount * 4);
5925
+ for (let i = 0; i < fontCount; i++) {
5926
+ this._free_string(
5927
+ faceIdPtrs[i],
5928
+ this.module.lengthBytesUTF8(fontFaces[i].faceId) + 1
5929
+ );
5930
+ this.module._deallocate(fontDataPtrs[i], fontDataSizes[i]);
5931
+ }
5932
+ return result;
5933
+ } catch (error) {
5934
+ return {
5935
+ success: false,
5936
+ error: {
5937
+ message: error instanceof Error ? error.message : String(error)
5938
+ }
5939
+ };
5820
5940
  }
5821
- const handle = this.module.GL.registerContext(context, {
5822
- majorVersion: 2
5823
- });
5824
- this.module.GL.makeContextCurrent(handle);
5825
- const ptr = this.module._init(
5826
- canvas.width,
5827
- canvas.height,
5828
- options.use_embedded_fonts
5829
- );
5830
- const _ = new Grida2D(this.module, ptr);
5831
- _.resize(canvas.width, canvas.height);
5832
- return _;
5833
5941
  }
5834
- createWebGLCanvasSurfaceById(htmlcanvasid) {
5835
- const canvas = document.getElementById(htmlcanvasid);
5836
- if (!(canvas instanceof HTMLCanvasElement)) {
5837
- throw new Error(`Element with id ${htmlcanvasid} is not a <canvas>`);
5942
+ /**
5943
+ * Parses a single font file with JavaScript-friendly interface.
5944
+ * This is exposed for fast, single font analysis.
5945
+ *
5946
+ * @param fontData - Font data as ArrayBuffer or Uint8Array
5947
+ * @param faceId - Unique identifier for this font face
5948
+ * @param userFontStyleItalic - User-declared italic style (optional)
5949
+ * @returns Promise resolving to FaceRecord
5950
+ */
5951
+ async parseFont(fontData, faceId, userFontStyleItalic) {
5952
+ try {
5953
+ const [fontDataPtr, fontDataSize] = this._alloc_data(fontData);
5954
+ const [faceIdPtr, faceIdLen] = this._alloc_string(faceId);
5955
+ const userItalicPtr = userFontStyleItalic !== void 0 ? this._alloc_string(userFontStyleItalic.toString())[0] : 0;
5956
+ const resultPtr = this.module._grida_fonts_parse_font(
5957
+ fontDataPtr,
5958
+ fontDataSize,
5959
+ faceIdPtr,
5960
+ userItalicPtr
5961
+ );
5962
+ const resultJson = this._string_from_wasm(resultPtr);
5963
+ const result = JSON.parse(resultJson);
5964
+ this.module._deallocate(fontDataPtr, fontDataSize);
5965
+ this._free_string(faceIdPtr, faceIdLen);
5966
+ if (userItalicPtr !== 0) {
5967
+ this._free_string(userItalicPtr, 6);
5968
+ }
5969
+ return result;
5970
+ } catch (error) {
5971
+ throw new Error(error instanceof Error ? error.message : String(error));
5972
+ }
5973
+ }
5974
+ /**
5975
+ * Gets the version of the font parsing library.
5976
+ * This is a ping function to verify the WASM module is working.
5977
+ *
5978
+ * @returns Version string
5979
+ */
5980
+ getVersion() {
5981
+ try {
5982
+ const versionPtr = this.module._grida_fonts_version();
5983
+ return this._string_from_wasm(versionPtr);
5984
+ } catch (error) {
5985
+ return "unknown";
5838
5986
  }
5839
- return this.createWebGLCanvasSurface(canvas);
5840
5987
  }
5841
5988
  };
5842
- var ApplicationCommandID = {
5843
- ZoomIn: 1,
5844
- ZoomOut: 2,
5845
- ZoomDelta: 3,
5846
- Pan: 4
5847
- };
5848
- var utils;
5849
- ((utils2) => {
5989
+
5990
+ // lib/modules/memory.ts
5991
+ var memory;
5992
+ ((memory2) => {
5850
5993
  function rect_from_vec4(vec4) {
5851
5994
  return {
5852
5995
  x: vec4[0],
@@ -5855,21 +5998,41 @@ var utils;
5855
5998
  height: vec4[3]
5856
5999
  };
5857
6000
  }
5858
- utils2.rect_from_vec4 = rect_from_vec4;
5859
- })(utils || (utils = {}));
5860
- var Grida2D = class {
6001
+ memory2.rect_from_vec4 = rect_from_vec4;
6002
+ })(memory || (memory = {}));
6003
+
6004
+ // lib/modules/canvas.ts
6005
+ var ApplicationCommandID = {
6006
+ ZoomIn: 1,
6007
+ ZoomOut: 2,
6008
+ ZoomDelta: 3,
6009
+ Pan: 4
6010
+ };
6011
+ var Scene = class {
5861
6012
  appptr;
5862
6013
  module;
6014
+ fontskit;
5863
6015
  constructor(module2, ptr) {
5864
6016
  this.module = module2;
5865
6017
  this.appptr = ptr;
6018
+ this.fontskit = new FontsAPI(module2);
5866
6019
  }
6020
+ /**
6021
+ * Allocates memory for a string and returns pointer and length.
6022
+ * @param txt - String to allocate
6023
+ * @returns [pointer, length] tuple
6024
+ */
5867
6025
  _alloc_string(txt) {
5868
6026
  const len = this.module.lengthBytesUTF8(txt) + 1;
5869
6027
  const ptr = this.module._allocate(len);
5870
6028
  this.module.stringToUTF8(txt, ptr, len);
5871
6029
  return [ptr, len];
5872
6030
  }
6031
+ /**
6032
+ * Frees memory allocated for a string.
6033
+ * @param ptr - Pointer to free
6034
+ * @param len - Length of allocated memory
6035
+ */
5873
6036
  _free_string(ptr, len) {
5874
6037
  this.module._deallocate(ptr, len);
5875
6038
  }
@@ -6042,7 +6205,7 @@ var Grida2D = class {
6042
6205
  }
6043
6206
  const rect = this.module.HEAPF32.slice(outptr >> 2, (outptr >> 2) + 4);
6044
6207
  this.module._deallocate(outptr, 4 * 4);
6045
- return utils.rect_from_vec4(rect);
6208
+ return memory.rect_from_vec4(rect);
6046
6209
  }
6047
6210
  /**
6048
6211
  * @deprecated not fully implemented yet
@@ -6158,7 +6321,54 @@ var Grida2D = class {
6158
6321
  this.module._devtools_rendering_set_show_ruler(this.appptr, show);
6159
6322
  }
6160
6323
  };
6324
+
6325
+ // lib/index.ts
6326
+ var version2 = version;
6327
+ async function init(opts) {
6328
+ const bindings = await (0, import_grida_canvas_wasm.default)({
6329
+ locateFile: (opts == null ? void 0 : opts.locateFile) ? (file, __scriptDirectory) => opts == null ? void 0 : opts.locateFile(file, version2) : void 0
6330
+ });
6331
+ return new ApplicationFactory(
6332
+ bindings
6333
+ );
6334
+ }
6335
+ var ApplicationFactory = class {
6336
+ module;
6337
+ constructor(module2) {
6338
+ this.module = module2;
6339
+ }
6340
+ createWebGLCanvasSurface(canvas, options = { use_embedded_fonts: true }) {
6341
+ const context = canvas.getContext("webgl2", {
6342
+ antialias: true,
6343
+ depth: true,
6344
+ stencil: true,
6345
+ alpha: true
6346
+ });
6347
+ if (!context) {
6348
+ throw new Error("Failed to get WebGL2 context");
6349
+ }
6350
+ const handle = this.module.GL.registerContext(context, {
6351
+ majorVersion: 2
6352
+ });
6353
+ this.module.GL.makeContextCurrent(handle);
6354
+ const ptr = this.module._init(
6355
+ canvas.width,
6356
+ canvas.height,
6357
+ options.use_embedded_fonts
6358
+ );
6359
+ const _ = new Scene(this.module, ptr);
6360
+ _.resize(canvas.width, canvas.height);
6361
+ return _;
6362
+ }
6363
+ createWebGLCanvasSurfaceById(htmlcanvasid) {
6364
+ const canvas = document.getElementById(htmlcanvasid);
6365
+ if (!(canvas instanceof HTMLCanvasElement)) {
6366
+ throw new Error(`Element with id ${htmlcanvasid} is not a <canvas>`);
6367
+ }
6368
+ return this.createWebGLCanvasSurface(canvas);
6369
+ }
6370
+ };
6161
6371
  // Annotate the CommonJS export names for ESM import in node:
6162
6372
  0 && (module.exports = {
6163
- Grida2D
6373
+ version
6164
6374
  });